DLE - mój pierwszy moduł, jak napisać własny moduł Datalife Engine

  1. Utwórz plik modułu
  2. Podstawowe parametry
  3. Zapytania do bazy danych
  4. Gotowy moduł
  5. Wzór

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_ID

Zapytania 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ł

&lt;? 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="&lt;?= $ro['id'₽ ?> - &lt;? = $ ro ['alt_name']? >> html "> &lt;? = $ ro ['title']?> </a> </ li> &lt;? php} foreach ($ row2 jako $ 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}}}?>

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