0
 следующая заметка >>
Модули

Модуль — это короткий код (одной функции), написанный на языке PHP и вызываемый непосредственно из текста заметки или шаблона. Модуль — это файл МОДУЛЬ.php, который кладется в папку site_mod (или site_module, если автор счел его «системным», хотя физически разницы нет).

Вызов модуля происходит из HTML-кода (из текста заметки или темплейта дизайна) командой MODULE NOT FOUND: МОДУЛЬ:параметры, при этом должен существовать файл МОДУЛЬ.php, содержащий одноименную (это важно!) процедуру function МОДУЛЬ($параметр){}

Параметр (это может быть и слово и огромный кусок текста) передается модулю как один параметр. А то, что модуль вернул, вставляется вместо вызвавшей конструкции.

Пример простого файла-модуля B.php:

<?php function B($e) { return "<b>$e</b>"; } ?>

Пишем в заметке "жырный", видим: жырный

А если надо передать несколько параметров? Универсальной процедуры разбора я не делал, здесь все на ваше усмотрение: придумывайте любые форматы и разбирайте параметр $e. Например, если мне надо получить два параметра, разделенных запятой, я пишу:

Вчера, например, я делал модуль меню с двумерными параметрами: сперва делил на строки, затем в каждой строке разбирал через разделитель | перечисленные тексты, имена картинок, ссылки.

Штатно присутствующая в движке функция c() очищает текст от пробелов в начале и конце и прочего мусора. Изначально параметр $e очищен, но дальнейшие разборки я всегда чищу вручную — мало ли пробелов кто для красоты втиснет.

Заодно для простоты учтите, что h() — это htmlspecialchars() для тех, кто заебался всякий раз набирать эту непроизносимую строку, а e() — это mysqlescapespecial... блин, я даже не помню, как она называлась в оригинале, но вы поняли.

Итого: пишем любой модуль, кладем в site_mod/ и радуемся жизни, вызывая его из текста заметки или шаблона.

Хозяйке на заметку: уже достаточно давно модули можно сколь угодно (до 200 кажется) вкладывать друг в друга. То есть, можно писать: {CENTER:{B:{IMG:... Замена начнется с самого внутреннего модуля.

http://lleo.me/blog/2010/02/22.html

В site_mod лежат все модули, к которым можно обращаться при написании заметок или темплейтов или вообще чего-то.

А в site_module лежат модули, которые сами по себе представляют собой сложную систему и не используются при написании заметок (точнее, раньше им требовалась одна одноименная заметка, содержащая только их вызов). Так вот теперь при обращении к движку вида http://site.ru/abcde, если нет такой страницы нигде в движке, зато в папке есть модуль (заглавными буквами) site_module/ABCDE.php, то движок как бы создает виртуальную заметку с темплейтом blank и текстом MODULE NOT FOUND: ABCDE: и как бы сразу этот модуль запускает.

http://lleo.me/blog/2011/10/13.html

  следующая заметка >>
Оставить комментарий