DLE - mój pierwszy moduł, jak napisać własny moduł Datalife Engine
Bez względu na to, jak próbowałem uciec z DLE, ponieważ jest opłacany, a na rynku jest wiele darmowych analogów, to nie działa - główna strona jest oparta na tym silniku i coraz bardziej zagłębiam się w jego część techniczną!
Utwórz plik modułu
Utwórz plik * .php o dowolnej nazwie w katalogu engine / modules , na przykład mymodule.php i na samym szczycie napisz takie wiersze kodu, które nie pozwolą na bezpośredni dostęp do modułu, ponieważ nie minie stałej DATALIFEENGINE , której nie można uzyskać z zewnątrz.
<? php jeśli (! zdefiniowane ('DATALIFEENGINE'))) umiera („Idź się pieprzyć!”);Moduł jest technicznie dość prosty, więc postanowiłem nie przejmować się osobnym szablonem i wszystkim z nim związanym. Po prostu koduj i wyślij go w szablonie ze znacznikiem meta:
{include file = "path_to_file.php"}Podstawowe parametry
Następnie musisz uzyskać identyfikatory bieżącej kategorii i posta. Żadne niepotrzebne gesty nie są potrzebne, istnieją globalnie.
Wiadomości Aydi istnieją jako stała superglobalna, a kategorie istnieją jako zmienna globalna:
$ category_id NEWS_IDZapytania do bazy danych
Ponadto nie zawracałem sobie głowy uniwersalnym żądaniem do bazy danych i rozbiłem go na 2 proste:
$ 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) ;Metoda super_query ($ query, $ return) działa w dwóch trybach. Jeśli drugi parametr ma wartość false, zwraca łańcuch - mysqli_fetch_row , co w naszym przypadku nie jest dobre, ponieważ potrzebujesz mysqli_fetch_array . Dlatego dajemy mu jednostkę!
Uruchomiłem $ row1 przez funkcję array_reverse (), aby odwrócić tablicę posortowaną w odwrotnej kolejności (10,9,8) i odwrotnie (8,9,10) i umieścić ją w chronologii (patrz po pogrubionym elemencie):
- null
- rekord +2
- Rekord +1
- aktualny rekord
- rekord -1
- rekord -2
- rekord -3
Gotowy moduł
<? php jeśli (! zdefiniowane ('DATALIFEENGINE'))) umiera („Idź się pieprzyć!”); // ----------- Zastąp swoimi danymi // zapisz kategorie id do zmiennej dla wygody $ catid = 36; // --------------------------------------- // zmniejsz obciążenie i wywołaj moduł tylko tam w razie potrzeby! // moduł będzie działać, jeśli bieżąca kategoria jest równa interesującej nas, tj. 36 if ($ category_id == $ catid) {// otrzymujemy od superglobalnego identyfikatora bieżącego posta $ 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 jako $ 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}}}?>Uzyskane dane przechodzą przez cykle i tworzą w nich blok linków!
Wzór
W odpowiednim miejscu pliku fullstory.tpl wypisujemy następujący kod:
[catlist = 36] <h2> Poprzednie wpisy w dzienniku </ h2> <div class = "quote"> <ul> <! - usuń spację poniżej -> {include file = "engine / modules / mymodule.php"} </ ul> <br/> <a href="/658-kak-nachat-zarabatyvat-na-investiciyah-bazovye-pravila-investrora.html"> Jak zacząłem inwestować! </a> </ div> [/ lista]Lt;?Ro['id'₽ ?
Ro ['alt_name']?
Ro ['title']?
Php} foreach ($ row2 jako $ ro) {if ($ ro ['id'] == $ id) {?
Ro['id' 版?
Ro ['alt_name']?
Ro ['title']?
Php} else {?