Серьезное предложение по шаблонизатору.

Всем привет долго я занимался версткой, и Joomla десятки шаблонов и WP пару десятков. И даже vBulletin 3.8 ой мама дорогая и даже 4.* (кто знает тот поймет :))

Так что мне есть с чем сравнивать шаблонизатор LS, хорошо что выбрали Smarty очень умненький и интуитивный, как верстальщик это говорю.

Но в чем проблема не всегда понятно где какой шаблон? в каком Action или еще где? А бывает ИНОГДА что плагин БЛИН заменяет шаблон, не знаю почему такое решение выбрали :) как мне кажется не самое удачное но ладно. ПО мне так хуки лучшее решение…

Ну так в чем ПРЕДЛОЖЕНИЕ!


vBulletin прям в движок вшили такую замечательную особенность, что там можно включать отображение название шаблонов прям в HTML которые используются.

То есть как пример на LS

<!-- header.tpl - START -->
тут html

<!-- header_top.tpl - START -->
тут html
<!-- header_top.tpl - END -->

тут html
<!-- header.tpl - END -->


ну и так далее.

А ЕСЛИ! ВДРУГ плагин заменяет шаблон ТО, пусть пишется название плагина.

Пример:
<!-- aceBlogExtend/comment.tpl - START -->
тут html
<!-- aceBlogExtend/comment.tpl - END -->


ТАК ЖЕ можно на счет Action сделать и пр.

пример:
<!-- ActionBlog/example.tpl - START -->
тут html
<!-- ActionBlog/example.tpl - END -->


ну вы меня поняли :)

PS это по мотивам не то что я вот такой лентяй :) я с удовольствием пользуюсь внутреним поиском phpShtorm, и от меня не один шаблон не скроется, но так посудить я бы с экономил ну пару часов на сложном шаблоне точно :)

Хорошо бы это встроить прям в движок, но если кто сделает такой плагин с радостью куплю.

15 комментариев

avatar
Если это сделать в ядро движка(С возможностью отключения), то новичкам было-бы намного проще править шаблоны (А старички могут просто отключить данную функцию), я сам сейчас ни черта не пойму, что к чему. А так открыл хтмл код, посмотрел что и где поправить и в путь. Если я правильно понял автора то поддерживаю идею.
avatar
Да думаю вы все правильно поняли :) Спасибо!
avatar
Хорошая идея.
А бывает ИНОГДА что плагин БЛИН заменяет шаблон, не знаю почему такое решение выбрали :) как мне кажется не самое удачное но ладно.
Я думаю, здесь все с радостью выслушают предложения удачнее делегирования шаблонов. велком)
avatar
ну я вот с удовольствием предложу свое решение :) прежде чем в топик сформирую у вас цензуру пройду

несколько решений:
1. как я в статье писал выше, хуки отличное решение! почему некоторые разработчики плагинов его используют, а некоторые нет? Это какой то разный принцип разработки? или кто как хочет? или просто у них выхода нет?
Хуки это идеальное решение, которое можно позаимствовать у Joomla. Допустим использовать готовые хуки, или же из плагина как то задавать свои хуки, и их позиции. Ну или на крайний случай писать их в коде.
Ну а если нужно заменить какой то шаблон, например комментарии, то пусть будет прописано условие в шаблоне.

{if useHook == "nameHook"}
 выводим хук
{else}
 дефолт шаблон
{/if}


ну как то так… а еще все хуки можно хранить в каком нить xml файле как в Joomla хранить свои позиции модулей. Не знаю может это уже есть :) просто не допер.

2. еще решение :) так сказать для выбора, более сложный для понимание и плодит сущности, но все таки тоже более чистый чем есть сейчас.
Есть у нас используемый шаблон допустим называется new и тут мы подключаем плагин. Тогда весь шаблон копируется в new_mod там удаляется шаблон который заменяет плагин и вставляется шаблон уже из плагина.

вот тоже решение :) более чистое в плане шаблоне, но лично мне не нравится из-за дублирование сущностей.

3. ну последние оставить уж все как есть, но блин допилить модификацию которую я описал в топике :) как в движке! что просто будет УЖЕ как мана небесная!
avatar
1) В вашем рассуждении есть одно огромное упущение — хуки далеко не везде размещены в шаблоне да не всегда уместны.
2) совсем не понял применимость данного метода и чем он может отличаться от обычного наследования, которое не плодит, как вы и сами сказали сущности.
avatar
ну да 2 я предложил для пиши чтобы порассуждать и придумать что нить еще.

А вот первое решение на счет 1, может не все прелести хуков я понимаю или же хуки не такие серьезные. Но почему решение которое я предложил то есть хуки с условиями, почему не как вариант?

Сейчас хуки это так сказать места куда можно вывести свой плагин или еще что нить :) возможно…
Но как я понимаю в чем суть проблемы? и почему разработчики заменяют шаблоны темы на шаблоны плагин? Потому что им как но надо исключить стандартный функционал и встроить свой.

Поэтому если вы надеюсь поняли меня, то хуки заменяймые это хорошо. ДА СОГЛАСЕН что разработка шаблона может усложнится, НО можно же на примере дефолтного шаблона напихать хуков.

PS кажется я только сейчас понимаю почему в LS выбрали это решение :)
1. сложно напихать хуков столько сколько надо :) придется время когда нужно будет еще и еще
2. сложность разработки темы
3. и даже после 1 и 2 пункта не каких гарантий, что все будет работать как надо.

Выводы:
оставить все как есть и выбрать комментирование шаблонов.

PSPS извините за мою сумборность речи :) по другому не умею по русскому троечка у меня… Когда пишу на русском голова с рукой не дружит :) так сказать в плане орфографии, хотя вот в английском такова нет :( русский язык сложный, хотя и родной.
avatar
LS поддерживает блочные хуки, но они пока нигде не используются в шаблонах
avatar
Приветствую, такова авторитетного гостя в своем топике.

Что скажите на счет введения комментариев tpl, по моему предложение в сборку LS 0.5.2 :)

Как видите на уровне костыля например это внедряется оч просто :)
avatar
что за блочные хуки?
avatar
avatar
отличное предложение, только не плагином, а опционально в конфиг движка.

для себя уже давно использую костыль (для05x, на 04x не пробовал): файл \engine\lib\external\Smarty\libs\sysplugins\smarty_internal_templatecompilerbase.php

найти строку (примерно 58)
$template_header .= "         compiled from \"" . $this->template->getTemplateFilepath() . "\" */ ?>\n";
после нее добавить
$template_header .= "<!-- Start " . $this->template->getTemplateFilepath() . " -->";
и найти строки (примерно 86)
if ($template->suppressFileDependency) {
            $template->compiled_template = $_compiled_code;
        } else {
            $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code;
        }
и изменить на
if ($template->suppressFileDependency) {
            $template->compiled_template = $_compiled_code."<!-- End " . $this->template->getTemplateFilepath() . " -->";
        } else {
            $template->compiled_template = $template_header . $template->createPropertyHeader() . $_compiled_code."<!-- End " . $this->template->getTemplateFilepath() . " -->";
        }

на идеальность решения конечно не претендую, НО ОЧЕНЬ помогает при верстке.
ну и вынести все это настройкой в конфиг было бы идеальным решением
avatar
avatar
БЛЯЯЯТь спасибочки :)) других слов нет просто.
avatar
отблагодарить можно тут )
комментарий был удален
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.