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 {?