DLE - мой першы модуль, як напісаць свой модуль Datalife Engine
Як ні спрабаваў сысці з 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
гатовы модуль
<? 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="<?= $ro['id'] ?> - <? = $ ro [ 'alt_name']?>. html "> <? = $ ro [ 'title']?> </a> </ li> <? php} foreach ($ row2 as $ ro) {if ($ ro [ 'id'] == $ id) {?> <li > <a href="<?= $ro['id'] ?> - <? = $ ro [ 'alt_name']?>. html "> <b> <? = $ ro [ 'title']?> </ b> </a> </ li> <? php} else {?> <li> <a href="<?= $ro['id'] ?> - <? = $ ro [ 'alt_name' ]?>. html "> <? = $ ro [ 'title']?> </a> </ li> <? 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 {?