Как сделать страницу на сайте dle

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

Пишем свой модуль для DLE - подробная инструкция

В этой статье я постараюсь очень подробно разобрать процесс создания простого модуля для DLE с кешированием и собственными шаблонами. Сначала разберём модуль без шаблона, а после дополним его собственным шаблоном. Итогом статьи будет работоспособный модуль без админки, вызываемый в любом месте сайта через строку подключения.

Вступление

С чего начать?

Пишем свой модуль для DLE - подробная инструкция

Конечно же начинать лучше с идеи или исходя из конкретной потребности!
В нашем случаи будем рассматривать необходимость вывода в профиле пользователя в любом месте сайта количество новостей определённого пользователя в определённых категориях.
Таким образом мы уже определили пару переменных, которые будут в нашем модуле - это имя пользователя и id категории.
Естественно результат работы модуля лучше кешировать т.к. лишние запросы в БД нам совершенно не нужны. Так же нам не нужен шаблон модуля, но для примера я приведу код модуля и с шаблоном, т.к. правильное подключение шаблона тоже очень важно и при более или менее сложном модуле экономит много ресурсов за счёт уменьшения кода самого модуля.
Круг задач определён, можно приступать к написанию кода. Вспоминаем что у DLE есть API , и вполне логичным кажется использование готового API для этой задачи, но я крайне не рекомендую вообще его использовать даже (особенно!) в сложных модулях.

Почему не стоит использовать DLE_API


Всё просто - это крайне кривая штука, которая не развивается аж с версии 8.2 (на момент написания текущая версия движка - 10.0 и по сравнению с предыдущей версией пофиксили лишь баг с невозможностью регистрации пользователя через api, никаких доработок не производилось).

Пишем свой модуль для DLE - подробная инструкция

Использование dle_api значительно увеличивает расход оперативной памяти, что совсем, совсем не хорошо.
Методы, описанные в dle_api расходятся с оригинальным функционалом.
Общий совет: если вам нужна какой то метод или функция из dle_api - просто скопируйте её в свой модуль.
Возможно моих скромных наработок хватит на набор методов и функций, которые можно будет использовать в дальнейшем, но это тема для отдельной статьи.

Пишем код

Прежде, чем писать любой модуль (кроме файлов, отвечающих за ajax), нужно в обязательном порядке, в самом начале прописать одну строку:

Это не позволит пользователю обратиться к файлу модуля напрямую, а значит он не сможет передать собственные параметры в модуль и взломать сайт через этот модуль. Думаю важность этого момента трудно переоценить, но тем не менее я очень часто натыкаюсь на отсутствие подобной конструкции в коде модуля.

Конфигурация и кеширование

Я решил остановиться на этом моменте подробно, т.к. это один из самых частых вопросов, которые задаются, если человек решил написать свой модуль.

Конфигурацию модуля лучше всего записывать в массив - это даст возможность беспроблемного создания кеша для каждого вызова модуля с разным набором конфигурации, в нашем случаи для каждого пользователя.
Объясню почему. Допустим мы написали модуль, он кешируется, и строка создания кеша выглядит следующим образом:

где:
- $var1.$var2.$var3.$var4 - переменные модуля.
- $myModule - текст, который должен записаться в кеш.

Тут всё замечательно ровно до тех пор, пока не понадобится добавить новую переменную. Как правило автор просто забывает прописать эту новую переменную в строку формирования и получения кеша и потом гадает над причинами неработоспособности или неправильной работы модуля (что негативно сказывается на его психологическом равновесии). Таким образом конфиг модуля лучше писать так:

а строка создания кеша будет такая:

Таким образом нам вообще не придётся лазить в этот код никогда, всё будет происходить автоматом.

Используйте префиксы и суффиксы кеша - это позволит гарантировать автоматическую очистку кеша, а так же позволит (при необходимости) создавать отдельные кеши для разных групп пользователей.
Для наглядности поясню взгляните на картинку:

Пишем свой модуль для DLE - подробная инструкция

Текст кеша - это результат работы модуля, который будет записан в кеш, тут всё просто.
ID кеша или его имя - сюда лучше всего передавать переменную $cacheName, о которой писалось выше и переменную $config['skin'] - это для того, чтобы иметь разные кеши для разных шаблонов сайта.
Суффикс кеша - может принимать два значения true или false, если передано значение true, то для каждой группы пользователей будет создаваться свой кеш-файл, это бывает нужно, если разным группам пользователей нужно показывать разный контент.

Универсальная заготовка для модуля с кешем, без шаблона

Учитывая всё выше написанное мы можем создать простую заготовку для модуля, который будет использовать кеш, но не будет в своей работе использовать шаблон. Всего 15 строк кода!

Всё довольно просто, правда?

Запрос в БД и проверки.

Ранее мы определили, что нам потребуется две переменные - имя юзера и id категории, а для выборки нужных значений нам необходимо будет составить запрос в БД.
Заведём две переменные: $userName и $caId - эти переменные будут передаваться в модуль через строку подключения.
Однако для нормальной работы модуля нужно проверять данные (ведь от кривых рук спасения практически не существует).

Небольшое отступление:
Я советую использовать однообразный тип переменных модуля и переменных конфига модуля, т.е.

выглядит гораздо более читабельным, чем

Однако использование нижней черты я не практикую в dle, т.к. разок из-за этого сработал фильтр в dle и модуль не отработал, хотя возможно это лишь единичный случай.

Самая простая проверка - условие if else:

т.е. мы просто проверяем передана ли переменная через строку подключения, если передана (т.е. не пустая) - прогоняем её значение через $db->safesql - это обезопасит нас от "неправильных" логинов пользователей, т.к. значение переменной будет вставлено в запрос к БД.
Переменную $catId фильтровать не нужно, т.к. она кроме как цифрой никак не задаётся и глупо писать что-то другое в строке подключения. Однако должно быть какое-то дефолтное значение, поэтому проверка нужна и её мы можем прописать непосредственно в конфиге модуля:

С переменными разобрались, теперь запрос в БД.
В нашем случаи необходимо всего одно значение из БД и использовать полноценный запрос, а потом его разбирать - не имеет смысла, поэтому мы будем использовать метод super_query, он по умолчанию возвращает одномерный массив.
Наш итоговый запрос будет таким:

Где:
$myConfig['catId'] - id категории.
$myConfig['userName'] - имя пользователя.
ниже пропишем отладочный код:
";

Вызов модуля осуществляем так:

Если переменные указаны правильно - результатом отладки будет массив с данными, состоящий из одного элемента count

где:
155 - количество новостей у указанного пользователя в указанной категории

Теперь можно вывести результат по нормальному:

Тут следует отметить, что если в кеш будет записан один нолик - dle его не будет "считать кешем" и создаст новый, поэтому нужно писать туда что-то, отличное от нуля.

Итоговый код нашего модуля будет таким:

Всего 20 строк кода - и получаем готовое решение конкретной проблемы.
Код модуля вполне рабочий и его можно использовать в реальном проекте, однако приведён этот код для ознакомления с принципами правильного написания модулей для DLE.

На этом можно было бы закончить, но выше я обещал показать код модуля с использованием собственного шаблона.

Универсальная заготовка для модуля с кешем и собственным шаблоном

В целом тот же модуль, что мы написали без шаблона вполне легко перетащить и на "шаблонный" модуль, однако в нашем случаи это не имеет смысла, т.к. модуль выводит всего одну цифру. Собственный шаблон в модуле лучше использовать когда необходимо вывести несколько значений с разным оформлением в разных местах сайта.
Не буду расписывать что к чему, т.к. статья уже и так довольно таки большая, а лучше оставлю два листинга кода, один без комментариев - для использования в качестве заготовки:

А второй с подробными комментариями, для понимания что-к-чему:

Вот теперь пожалуй можно закончить статью!
Если будет время, идея и желание - я постараюсь написать про создание более сложного модуля.
А пока жду ваших вопросов и мнений.

dle startup create template - DLE - создание и разработка шаблонов. С чего начать

Наконец-то сдвинулась с мертвого места и эта статья, которая планировалась еще в середине мая, а сейчас – начало октября. Данная статья – подробное описание того, как из html исходника создается полноценный шаблон для dle.

Я не буду до мельчайших деталей описывать, как сделать шаблон dle, но помогу создать каркас, а как перенести весь запланированный функционал из исходника в шаблон dle — подтолкну мыслями и покажу, где списать “домашнее задание”.

Шаблон dle находится всего в одном файле – main.tpl и в него подключаются остальные модули:

Подключаются они легко. Например, форма логин-пароль подключается в шаблон всего одним словом: в нужном месте файла main.tpl. По факту происходит следующее: в ядре движка прописано, что вместо этого спец тега подставлять в это место login.tpl

Удобно? Как по мне, то даже очень и так со всеми примерами, например, , но зачастую вместо целого файла в такие вот теги выводятся какие-то параметры из базы данных, например:

Верстка каркаса в main.tpl

Открываем данный файл и чистим все, пока не получим код, как на скриншоте ниже

Подключение сторонних скриптов

В head нужно подключить наши скрипты – css, js и прочее, но обязательным условием является тег

Важно! JQuery библиотеки подключать не нужно. Они уже есть в стандартной комплектации!

Дизайн

dle sozdanie shablona 3 - DLE - создание и разработка шаблонов. С чего начать

Подключение дополнительных, необязательных модулей (логин, топ новостей, голосования, архивы, календарь и прочее) я описывать не буду. Об этом читайте в мануале по ссылке в начале статьи.

Верстка shortstory.tpl и fullstory.tpl

Тот код, который мы не вставили в main.tpl нужно поместить сюда. Опять же, весь контент и все данные, которые берутся из базы данных выводятся на специальных тегах в фигурных скобках, а html разметка используется только как каркас.

dle shortstory - DLE - создание и разработка шаблонов. С чего начать

dle shortstory2 - DLE - создание и разработка шаблонов. С чего начать

Это две одинаковые картинки. На первой — исходный код, а на второй — вывод данных, взятых из базы данных и подставленных вместо спец. тегов. Заголовок, дата, категория и остальное это чисто условность, пример, по которому следует ориентироваться.

Fullstory.tpl

  • Берем файл из дефолтного шаблона;
  • Очищаем весь код и оставляем только спец. теги;
  • Идем на официальную базу и читаем о возможностях данного файла;
  • Проворачиваем у себя в голове полученную информацию и строим свою страницу полных новостей;

А дальше все легко и просто. Остались файлы, отвечающие всего за несколько страниц. Они все названы так, что догадаться за какую не сложно и все это описано в мануале

Похожие записи


Данный сайт в апреле 2019 года полностью переехал на CMS WordPress и в июне, после завершения всех правок (а их.


Установка движка DLE на хостинг происходит через специальный файл — инсталятор, в котором необходимо заполнить все поля (имя базы данных.


Как много у вас загруженных файлов (приложений к постам) не считая картинок? У меня много и придумал способ их монетизировать.


Как ни пытался уйти с DLE из-за того, что он платный, а на рынке существует куча бесплатных аналогов, не получается.


Комментарии

Как добавить новый пункт меню на сайте dle?

Создание пункта меню dle.

Создание пункта меню dle.

Создание пункта меню dle.

Появится форма создания новой категории на сайте. Там все просто. Для чего служит каждое поле формы, см. изображение.

Создание пункта меню dle.

Не все поля, которые описаны на рисунке являются обязательными, а только первое и второе поле. А пункты, которые я не стал затрагивать на изображении вообще не относятся к категориям, а относятся к глобальным настройкам движка, таким как настройки вывода новостей dle, а также предоставляют возможность назначить уникальный шаблон, для каждой категории в отдельности.

Как добавить пункт в меню dle?

Теперь, перейдем к непосредственному добавлению нового пункта в меню dle.

Как добавить пункт в меню dle?

Как добавить пункт в меню dle?

Как добавить пункт в меню dle?

По аналогии изменить можно и остальные пункты в меню. Что касается второго, горизонтального меню, то там ситуация абсолютно такая же. И естественно все лишнее, что вам не нужно, можно удалить. И конечно же, сохранить отредактированный файл.

Если вы в чем-то не уверены, например, что удалите что-то лишнее, то просто сделайте резервную копию сайта, чтобы в случае непредвиденных ситуаций его можно было восстановить.

Как установить DLE на хостинг

Вкратце рассказываем о DataLife Engine, а также пошагово разбираем процесс установки движка на сервер от и до (на примере технологий, доступных для клиентов Timeweb).

Что такое DataLife Engine

Это CMS, система управления сайтами. Наподобие WordPress или Joomla (о них, я думаю, вы должны были слышать, если читаете эту статью).

Интерфейс DataLife Engine

DLE разрабатывалась для управления новостными порталами и ресурсами, близкими к ним по характеристикам и аудитории. Тем не менее со временем эта CMS обросла десятками новых функций, что сделало ее пригодной для использования на разного рода развлекательных порталах. На ее базе замечены торрент-трекеры, сайты, посвященные видеоиграм, и даже ресурсы, на которых можно посмотреть потоковое видео (т.е. стриминговые платформы).

По итогу имеем универсальную CMS, которая по своим возможностям не уступает конкурентам.

Плюсы и минусы DLE

Из преимуществ DLE стоит выделить:

Картину портят два недостатка, пугающие многих потенциальных пользователей:

Если минусы DataLife Engine вас не пугают, то перейдем непосредственно к теме статьи.

Устанавливаем DataLife Engine на хостинг

Поговорим об установке DLE на виртуальный хостинг Timeweb.

Скачиваем CMS

Дистрибутив с установочными файлами Datalife Engine лежит на официальном сайте разработчиков.

Загружаем установочные файлы на хостинг

Через панель управления (на примере Timeweb)

В некоторых хостингах есть встроенный файловый менеджер. Можно загрузить дистрибутив DLE через него. В случае с Timeweb это делается следующим образом:

Через FTP-клиент

Можно использовать протокол FTP, если так проще.

  • Проверяем, работает ли FTP на стороне хостинга.
  • Запускаем FTP-клиент.
  • Вводим данные для подключения по протоколу FTP. Обычно они указываются в панели управления хостингом.
  • Затем переносим содержимое папки upload (из дистрибутива) в корневую директорию на сервере.

Файлы почти готовы.

Выдаем себе права на изменение файлов дистрибутива

Для продолжения установки нужно скорректировать права доступа на чтение и запись установочных файлов.

С помощью файлового менеджера Timeweb

С помощью Filezilla

Устанавливаем DLE

После загрузки необходимых файлов на сервер и переноса их в нужную директорию, переходим к инсталляции CMS. Для этого:

На этом все. DLE должна работать.

Устанавливаем DataLife Engine на VDS

Есть три подхода к установке CMS на выделенные серверы.

  1. Через панель управления хостинга, если он поддерживает выбранную систему управления сайтами.
  2. Вручную с помощью командной строки. На тот случай, если провайдер не поддерживает автоматизированную установку DLE.
  3. Вручную с помощью сторонней панели управления. Например, ISPmanager или Plesk. То же самое, что и предыдущий метод, но в графическом интерфейсе.

Так как VDS Timeweb по умолчанию не поддерживает DataLife Engine (а это справедливо для многих провайдеров), будем рассматривать только два последних способа. Также отдельно отметим, что перед началом работ по инсталляции DLE надо создать на своем сервере рабочий домен, к которому будут привязаны файлы сайта.

Через панель управления ISPmanager

Берем в пример ISPmanager как относительно популярную и востребованную панель управления. Она идеально подходит для решения поставленной задачи.

Создаем базу данных

Без нее ни одна CMS работать не будет. К ней будет обращаться DLE.

Загружаем CMS

Дистрибутив скачиваем так же, как в случае с виртуальным хостингом. А после этого слегка меняем алгоритм действий:

Переносим установочные файлы в корневой каталог

В чистом виде дистрибутив использовать не получится. Найденные в нем компоненты надо перенести из архива в основную директорию своего ресурса.

Убедитесь, что у вас есть права на редактирование выбранных файлов и папок. Должны быть 755 и 644 соответственно.

Через командную строку

Если у вас нет графического интерфейса для управления сервером (не хочется тратить на него деньги или просто не хочется лишнее ПО ставить), но установить стороннюю CMS надо, то можно все сделать через командную строку. Это не особо сложно. Главное, обладать базовыми навыками работы с терминалом.

Перед началом не забудьте прописать доменные имена в файле hosts и корректно указать корневую директорию, где будут храниться основные файлы ресурса.

Подключаемся к серверу

Если у вас Linux или macOS, то включите терминал и введите команду для подключения к серверу по протоколу SSH. Например, в моем случае она выглядит так:

Процесс подключения по SSH

Вам нужно будет сменить адрес на адрес своего сервера. Обычно он указывается в панели управления VDS.

Если у вас Windows, то скачайте программу PuTTY. Введите в ней IP-адрес своего ресурса и кликните по кнопке ОК в нижней части окна приложения.

Чтобы подключиться, придется ввести пароль. Его провайдер обычно отправляет по почте. При вводе он не будет отображаться в терминале.

Установив соединение с VDS, можно переходить непосредственно к настройке и загрузке DLE.

Создаем базу данных

Так же, как и в случае с ISPmanager, нам для начала придется создать базу данных. Разница лишь в том, что создавать мы ее будем собственноручно, без помощи панели управления и каких-либо плагинов. Голый MySQL и вы.

Устанавливаем утилиту mysql с помощью команды со следующим синтаксисом

Затем создаем новую базу данных, введя в терминал

Выдаем права на базу данных вновь созданному пользователю:

Завершаем работу с клиентом MySQL:

Загружаем CMS

После создания БД переходим к загрузке самого DLE. Мы уже это делали это ранее в ISPmanager. Повторим через терминал (командную строку).

Для примера возьмем демо-версию DLE с ограничениями. Ссылка будет указана на нее. Но вы можете загрузить себе полноценный продукт после покупки. Тогда придется скорректировать ссылку под выбранный продукт.

Сначала скачиваем саму систему управления сайтами с официального репозитория с помощью команды

Загрузка DLE через командную строку

Затем распаковываем загруженные архив командой

А потом перемещаем содержимое папки upload в корневую директорию домена, где будет установлен DataLife Engine:

Убедитесь, что у вас есть права на редактирование выбранных файлов и папок. Должны быть 755 и 644 соответственно. Их можно проверить с помощью команды

Почти готово. Осталось лишь пройти несложный путь установки самой DLE.

На этом все. Процесс инсталляции завершен. Система управления сайтами должна работать и автоматически отображаться при посещении вашего домена. Дальнейшая настройка выполняется уже средствами самой CMS в ее параметрах. То есть визуальную составляющую, права пользователей, функции ресурса и прочие индивидуальные вещи вы будете менять уже в интерфейсе DLE.

Регулярно обновляйте CMS и не используйте шаблоны, нуждающиеся в ручной доработке после установки каждого патча. Так будет проще уберечь себя от взломов и прочих угроз.

Читайте также: