DLE - мій перший модуль, як написати свій модуль Datalife Engine

  1. Створюємо файл модуля
  2. Основні параметри
  3. Запити до бази даних
  4. готовий модуль
  5. шаблон

Як не намагався піти з DLE через те, що він платний, а на ринку існує купа безкоштовних аналогів, не виходить - головний сайт стоїть на цьому движку і я все більше і більше заглиблююсь в його технічну частину!

Створюємо файл модуля

Створюємо * .php файл з будь-яким ім'ям в каталозі engine / modules, наприклад, mymodule.php і в самому верху пишемо такі рядки коду, який не дозволить звертатися до модуля безпосередньо тому йому не буде передаватися константа DATALIFEENGINE, яку неможливо отримати ззовні.

<? Php if (! Defined ( 'DATALIFEENGINE')) die ( "Go fuck yourself!");

Модуль технічно досить простий, тому вирішив не морочитися на окремий шаблон і все, що з ним пов'язано. Просто код і виведення його в шаблоні мета-тегом:

{Include file = "path_to_file.php"}

Основні параметри

Далі необхідно отримати айди категорії і посади. Ніяких зайвих рухів тіла робити не потрібно, вони існують глобально.

Айді новини існує у вигляді суперглобального константи, а категорії - глобальної змінної:

$ Category_id NEWS_ID

Запити до бази даних

Також не став заморочуватися на універсальний запит в базу і розбив його на 2 простих:

$ Row1 = array_reverse ($ db-> super_query ( "SELECT` id`, `alt_name`,` title` FROM ". PREFIX." _Post WHERE id> $ id AND category = $ catid ORDER BY id ASC LIMIT 3 ", 1 )); $ Row2 = $ db-> super_query ( "SELECT` id`, `alt_name`,` title` FROM ". PREFIX." _Post WHERE id <= $ id AND category = $ catid ORDER BY id DESC LIMIT 3 ", 1) ;

Метод super_query ($ query, $ return) працює в двох режимах. Якщо другим параметром передати false, то поверне рядок - mysqli_fetch_row, що не є добре в нашому випадку тому потрібен mysqli_fetch_array. Тому передаємо йому одиницю!

Прогнав $ row1 через функцію array_reverse (), щоб перевернути відсортоване в зворотному порядку (10,9,8) масив навпаки (8,9,10) і пристикувати його до хронології (див. Після жирного пункту):

    null
  • запис +2
  • запис +1
  • поточна запис
  • запис -1
  • запис -2
  • запис -3

готовий модуль

&lt;? Php if (! Defined ( 'DATALIFEENGINE')) die ( "Go fuck yourself!"); // ----------- Замінити на свої дані // записуємо айди категорії в змінну для зручності $ catid = 36; // --------------------------------------- // умененьшаем навантаження і викликаємо модуль тільки там , де потрібно! // модуль спрацює, якщо поточна категорія буде дорівнює цікавить нас, тобто 36 if ($ category_id == $ catid) {// отримуємо з суперглобального константи айди поточного поста $ id = NEWS_ID; $ Row1 = array_reverse ($ db-> super_query ( "SELECT` id`, `alt_name`,` title` FROM ". PREFIX." _Post WHERE id> $ id AND category = $ catid ORDER BY id ASC LIMIT 3 ", 1 )); $ Row2 = $ db-> super_query ( "SELECT` id`, `alt_name`,` title` FROM ". PREFIX." _Post WHERE id <= $ id AND category = $ catid ORDER BY id DESC LIMIT 3 ", 1) ; foreach ($ row1 as $ ro) {?> <li> <a href="&lt;?= $ro['id'] ?> - &lt;? = $ ro [ 'alt_name']?>. html "> &lt;? = $ ro [ 'title']?> </a> </ li> &lt;? php} foreach ($ row2 as $ ro) {if ($ ro [ 'id'] == $ id) {?> <li > <a href="&lt;?= $ro['id'] ?> - &lt;? = $ ro [ 'alt_name']?>. html "> <b> &lt;? = $ ro [ 'title']?> </ b> </a> </ li> &lt;? php} else {?> <li> <a href="&lt;?= $ro['id'] ?> - &lt;? = $ ro [ 'alt_name' ]?>. html "> &lt;? = $ ro [ 'title']?> </a> </ li> &lt;? php}}}?>

Отримані дані проганяє через цикли і формуємо в них блок посилань!

шаблон

У потрібному місці файлу fullstory.tpl виводимо наступний код:

[Catlist = 36] <h2> Попередні записи щоденника </ h2> <div class = "quote"> <ul> <! - прибрати пробіл нижче -> {include file = "engine / modules / mymodule.php"} </ ul> <br/> <a href="/658-kak-nachat-zarabatyvat-na-investiciyah-bazovye-pravila-investrora.html"> Як я починав інвестувати! </a> </ div> [/ catlist]Lt;?
Ro['id'] ?
Ro [ 'alt_name']?
Ro [ 'title']?
Php} foreach ($ row2 as $ ro) {if ($ ro [ 'id'] == $ id) {?
Ro['id'] ?
Ro [ 'alt_name']?
Ro [ 'title']?
Php} else {?