Гость
Покинул форум
Сообщений всего: 103
Дата рег-ции: Март 2011
Помог: 0 раз(а)
|
Стадию "быдлокодер" я уже прошел (вроде), нависла необходимость написать шаблонизатор. У меня уже было много идей, но все они немного кривы и нету возможности внедрять эти идеи с максимальной простотой. Но в то же время от шаблонизатора требуется много возможностей: циклы и, желательно, вложенные условия. Хотя условиями можно обойтись обычными. Вот последняя идея, на мой взгляд лучшая:
пример кода в tmpl файле:
CODE ( html):
скопировать код в буфер обмена
<! BEGIN ARTICLES !> <span style="font-size: 30px; font-weight: 400;"><a href="?id=cat&cat={CAT}" style="color: black; opacity: 0.3;">{CAT_NAME}</a></span><br><h1><a href="?id=article&article={ID}">{NAME}</a></h1> <div style="font-size: 10px;">Оставлено {DATE}</div> <div class="article-text">{PROMO}</div> <! END ARTICLES !>
Скрипт PHP, который должен все это парсить:
PHP:
скопировать код в буфер обмена
$offset = 0; while ($pos = strpos($page, '<! BEGIN ', $offset) != FALSE) { $begin = strpos($page, '!>', $pos+6 ); $len = ($begin + 4) - ($pos + 2); $begin = substr($page, $pos+2 , $len); $end_pos = strpos($page, '<! END '.$what.' !>', $pos+$len); $code_len = $end_pos - ($pos+1 + $len); $code = substr($page, $pos+$len, $code_len); }
Этот код сначала высчитывает позицию строчки <! BEGIN , выясняет, к чему этот BEGIN , ищет END, который относится к этому же элементу, потом вычисляет расстояние между началом и концом, извлекает из этого промежутка код. Дальше части кода нужно заменить и вернуть уже полноценную страницу.
Вот я не могу придумать дальше извлекалки кода. Хотелось бы реализовать это с помощью ООП (чтобы по понятиям). При этом нужно, чтобы код было максимально легко внедрить в любой другой проект.
(Добавление)
Главное забыл описать: зачем такая фигня. Так как пишу я блог, нужны цикличные части страницы. То есть берется кусок кода, к нему подставляются нужные переменные, берется еще раз этот же кусок кода, к нему подставляются аналогично переменные. Потом это все склеивается. Плюс у движка блога есть такие возможности, как отключение комментирования статьи. Они требуют отдельной части шаблонизатора, при ненужности удаляемой.
P.S.: мне не столько нужен код, которым это все реализовать, сколько сама идея...
(Добавление)
Все, я наконец-то родил идею. Можно закрывать тему(Отредактировано автором: 02 Сентября, 2011 - 14:30:15)
|