Flat |
Отправлено: 22 сентября 2018 — 12:10
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Давайте немного поразмышляем..
Пока конкретно о такой вещи, как шаблонизация. Для кого тема скучная, а по мне так наоборот..
Много чего я читал на просторах и-нета про шаблоны и шаблонизацию. говорят, что нужно, просто обязательно отделять форму от содержания для того, чтобы верстальщикам было легче верстать, а пэхэпэтчикам кодить))
Однако посмотрите каким образом всё это реализовано в существующих шаблонизаторах. Взять тот же движок exbb. Посмотрите там: отделена ли там сущность от формы? Да любой шаблонизатор возьмите..
Вот часть кода из одного шаблона exbb:
CODE:<td align="center">{$GLOBALS['fm']->_Counters}<br />
Как хорошо видно переменные php прекрасно уживаются в шаблоне вместе с html тегами. Казалось бы - а куда деваться? Везде так.. Так-то так, да можно и по другому..
Откройте этот шаблон в любом редакторе исходного кода и вы не увидите никакой подсветки html. Можно сказать: ну создай свои темы подсветки для файлов типа .tpl Дык ведь даже это дело не каждому по плечу.
Итак две проблемы налицо:
1) Отсутствует подсветка тэгов в стандартных общедоступных редакторах.
2) Код html по прежнему перемешан с кодом php.
Предлагаю совершенно другой подход. Во-всяком случае я такого на просторах и-нета ещё не встречал. Меня интересует мнение знакомых с данной проблематикой людей, да и просто заинтересованных лиц. Прошу высказать свои мнения и соображения по данному вопросу.
Суть предложения.
В файле с шаблоном не должно быть вообще никаких переменных, условий и вообще НИКАКОГО кода php! Там должен находится только ЧИСТЫЙ html!
Скажете - утопия, как вообще возможно в него что-либо вставлять? Отвечу всё довольно просто реализуется, и мечта о разделении формы и содержания может быть осуществлена хотя бы в новом движке.
Итак, например имеем файл tpl.php с нашим шаблоном. Заметьте расширение - не tpl, а php! Это важный момент! Реализуется он так:
CODE:<?php if (!defined('EXBB_OK')){die('Access denied!');}?>
<table width="100%" id="logostrip" cellspacing="0" cellpadding="0"><tr><td><a href="index.php" title="
"><img src="./templates/
/im/logo.gif" alt="
" width="207" height="52" border="0" /></a></td><td valign="bottom" align="right"><a href="index.php" style="margin-right:20px;color:#ffffff">
</a></td></tr></table>
Это из шаблона этого движка, но реализованного по своему.
Каждая часть на своей строке. В редакторах подобный html отлично подсвечивается. Никакого php и в помине..
Теперь как происходит вставка. Имеем например функцию:
CODE:<?php if (!defined('EXBB_OK')){die('Access denied!');}
function exbb_showLogoStrip()
{
global $Config, $ContentBuf, $TemplatesPath;
require_once($TemplatesPath.'tpl.php');
$tpl=exbb_getArr($TemplatesPath.'tpl.php');
$ContentBuf.=$tpl[0].$Config[1].$tpl[1].$Config[4].$tpl[2].$Config[1].$tpl[3].$Config[1].$tpl[4];
}
?>
Как видим и здесь только PHP и никакого html. Итак код и данные полностью разделены!
Что это еще даёт?
А это даёт то, что теперь сторонний код может с лёгкостью ИЗМЕНЯТЬ шаблоны! Иногда прямо "на лету". Ещё этот способ в разы быстрее, чем в существующих шаблонизаторах..
Когда эта идея впервые пришла мне в голову, то я сразу понял: так оно и должно быть! И никак иначе.. А вы как думаете?(Отредактировано автором: 22 сентября 2018 — 12:18) |
|
|
|
Отправлено: 23 сентября 2018 — 18:48
|
Покинул форум
Сообщений всего: 0
Дата рег-ции: N/A
Репутация: 0
|
Parapsixolog пишет: но то что в шаблонах перемешан php с html самому давно не нравиться. Каша там Там не каша - там чистый HTML с вкраплениями PHP.
Обычно вкрапления связаны с включением в шаблон условий выводить или нет тот или иной элемент.
При желании код PHP легко убирается из шаблонов в код движка без всяких нововведений, а потому считаю данную проблему надуманной.(Отредактировано автором: 23 сентября 2018 — 18:59) |
|
|
Flat |
Отправлено: 24 сентября 2018 — 09:32
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
Parapsixolog пишет: я не совсем уловил, как это будет реализоваться на практике
А вот так и будет, как я написал. Более того я часть такого уже реализовал в функциях вывода шапки форума, логоменю и меню пользователя. Работа над новым ядром идёт полным ходом, и мне всё настолько нравится и я настолько понял как всё должно быть, что особых задержек быть не должно, так как концепция ясна. Причём меню выводится через config файлы, поэтому через админку можно менять взаимное расположение пунктов меню, удалять, изменять, добавлять новые пункты.. Более того, ввёл языковую поддержку, как в этом движке, однако опять по другому.. Теперь пользователь может выбирать любой установленный язык интерфейса форума, а админ может из админки запрещать выбор пользователю или разрешать его. Да, пришлось пойти на усложнение кода из-за темплейтов и языков, но сегодня без этого никуда. Делать так делать.
NordWest пишет:Там не каша - там чистый HTML с вкраплениями PHP.
А вот эти-то вкрапления и губят всю малину. Попробуйте изменить функцию без изменения темплейта если там будут затронуты общие переменные. Если отделить мух от котлет, то это станет возможным.
NordWest пишет:При желании код PHP легко убирается из шаблонов в код движка без всяких нововведений, а потому считаю данную проблему надуманной.
Ну, без плясок с бубном не получится. Самая главная проблема в том, что файлы шаблонов невозможно модифицировать сторонними функциями, например функциями из плагина. Сейчас это невозможно. Приведу пример. Вот мы тут с Parapsixolog , разбирали одну задачу. Нужно было вставить фиксированную кнопку в page_tail.php. Нужно было вставить в него блок <div>. Сейчас это пришлось вставлять руками и лезть в сырой код. И ладно, что Parapsixolog , имеет опыт подобного, и не боится туда лезть, а представим менее опытного человека?. Если бы код и данные были разделены, то я бы написал функцию, которая сама бы изменила этот шаблон, а юзеру достаточно было бы скачать плагин. Поэтому имеет смысл это осуществить.(Отредактировано автором: 24 сентября 2018 — 09:33) |
|
|
Flat |
Отправлено: 25 сентября 2018 — 08:26
|
Full Member
Покинул форум
Сообщений всего: 187
Дата рег-ции: Май 2018
Откуда: Красноярский край
Репутация: 14
|
1Bot пишет:Что только люди не придумают, лишь бы MVC не использовать.
Концепция "модель-вид-контролёр" это чистая оопная концепция, а меня от ооп воротит: слишком много передумано по этому поводу. Поверьте: Гради Буча я читал, и много чего ещё. ООП это мода. Она пройдёт. И кстати уже проходит, так как многие уже поняли его недостатки. Увы, новый двиг будет без ооп, но с нечто более важным чего нет в других.. Keep it simple, stupid. - это так называемый kees-принцип, как можно более проще, но не более того.
Что касается темплейтов, то я ещё в поиске, хотя сильно соблазняет предложенный вариант, из-за возможности изменений сторонними функциями, и похоже, что это преимущество перевесит все сомнения. |
|
|
|