Это, вероятно, очень простой вопрос, поэтому извиняюсь за то, что не усложняю!
Я разрабатываю собственную CMS, в которой используется система шаблонов.
Чтобы сделать эту CMS расширяемойнасколько это возможно, я хочу использовать «модули».Следовательно, в файлы шаблонов я хочу поместить пользовательские теги HTML, которые представляют модули.
Это будет выглядеть так:
<p><Module name="newsTicker" property="value" anotherProperty="anotherValue" /></p>
Я получаю файл шаблона с помощью:
ob_start();
include "templatefile.tpl";
$buffer= ob_get_contents();
ob_end_clean();
Теперь я хочу просмотреть содержимое $buffer
и для каждого вхождения <Module name="moduleName" />
Я хочу include "moduleName.class.php"
, создать новый экземпляр этого класса, запустить функцию getOutput()
этого модуля и поместите возвращаемое значение туда, где раньше был тег <Module />
.
Я понятия не имею, как это сделать ...: / Есть идеи?
Если выне понимаю думать о тикере новостей.Я могу написать некоторый код, который просматривает таблицу новостей в моей базе данных и составляет список из 10 последних новостей, а затем выводит его в формате html <ul>
.Я хочу абстрагировать это, чтобы его можно было использовать на многих страницах.Так что в моем шаблоне для домашней страницы у меня может быть тег <Module name="newsTicker" />
.Теперь, когда я захожу на домашнюю страницу, мне нужно просмотреть tpl-файл домашней страницы, и я найду, где он говорит <Module name="newsTicker" />
, я извлечу атрибут name
и включу класс, основанный на этом имени (в данном случаеэто будет newsTicker.class.php
).У него будет функция с именем getOutput()
, поэтому я смогу выполнить что-то похожее на: $output = $current_module->getOutput();
, а затем мне нужно вернуться к моему файлу tpl и изменить исходный <Module name="newsTicker" />
для содержимого $output
.
Спасибо за вашу помощь.:)
Том