Шаблонизатор, подходы

  • Автор темы Автор темы ShVad
  • Дата начала Дата начала

ShVad

JSmart CMS
Здравствуйте, как вы относитесь к такому методу?

PHP:
{comments}
<div id="comment-id-{id}" style="min-width: 250px; overflow: auto; border: 1px solid #E6E4E6; padding: 5px; margin-bottom: 10px;">
    <div style="border-bottom: 1px dashed #E6E4E6; padding: 0 0 5px 2px;">
        <a href="#">{name}</a>
    </div>
    <div style="padding: 2px;">
        {comment}
    </div>
    <div style="border-top: 1px dashed #E6E4E6; padding: 5px 2px 0 0; text-align: right;">
        <a href="#">ответить</a> | <a href="JavaScript:" onclick="Comment_Edit({id});">редактировать</a> | <a href="JavaScript:" onclick="Comment_Delete({id});">удалить</a>
    </div>
</div>
{/comments}

<div id="ajax-comment"></div>

<div class="block_title">Добавление комментария</div>
<div>
    <p><textarea id="comment_text" style="width: 660px; height: 120px;"></textarea></p>
    <p><input type="submit" class="button" value="Отправить" onclick="Comment_Add('{sing}');" /></p>
</div>

{comments}...{/comments} обрабатываются как foreach.

Или удобнее все таки делать в отдельном файле? И выводить тегом {comments}.
 
ShVad
отрицательно отношусь вообще к дополнительным надстройкам над php.
 
Лучше циклом грузить шаблон просмотра комментариев, а потом выводить его в основной?
В моем первом методе плохо то, что нельзя делать "set block"...
 
ShVad
какие преимущества он даёт кроме ограничений и паления скорости в сранении с php native?

это было в phpbb шаблонах, два ацких месяца в карьере, пока не встретил смарти
 
Удобнее так:
PHP:
<?foreach($comments AS $k=>$c){?>
<div id="comment-id-<?=$c['id']?>" style="min-width: 250px; overflow: auto; border: 1px solid #E6E4E6; padding: 5px; margin-bottom: 10px;">
    <div style="border-bottom: 1px dashed #E6E4E6; padding: 0 0 5px 2px;">
        <a href="#"><?=e($c['name'])?></a>
    </div>
    <div style="padding: 2px;">
        <?=e($c['text'])?>
    </div>
    <div style="border-top: 1px dashed #E6E4E6; padding: 5px 2px 0 0; text-align: right;">
        <a href="#">ответить</a> | <a href="JavaScript:" onclick="Comment_Edit(<?=$c['id']?>);">редактировать</a> | <a href="JavaScript:" onclick="Comment_Delete(<?=$c['id']?>);">удалить</a>
    </div>
</div>
<?}?>

<div id="ajax-comment"></div>

<div class="block_title">Добавление комментария</div>
<div>
    <p><textarea id="comment_text" style="width: 660px; height: 120px;"></textarea></p>
    <p><input type="submit" class="button" value="Отправить" onclick="Comment_Add('<?=$c['sing']?>');" /></p>
</div>
 
Получается лучше проверять например право на редактирование прямо в шаблоне через php функцию? Чем строить что то вроде [edit]редактировать[/edit]
 
ShVad
ты можешь в контроллере проверять право, а в шаблонизатор передаешь переменную-флаг и просто ставишь условие на true/false. А вообще ты можешь все что угодно, потому и удобнее нативные шаблоны.
 
Или удобнее все таки делать в отдельном файле? И выводить тегом {comments}.
Правильный вопрос: какой шаблонизатор стоит использовать

Если этот синтаксис идёт в своём собственном шаблонизаторе - то декларативный синтаксис лучше.
Он всегда был в шаблонах лучше, потому что для человека более удобный, и менее инвариантный.
 
  • Like
Реакции: AmdY
Здравствуйте, как вы относитесь к такому методу?
Здравствуйте. Как в вашем "методе" проверить значение переменной и в зависимости от её значения, вывести тот или иной блок HTML-кода? И зачем ваш подход нужен в целом? Какова цель ваших свистоплясок с шаблоном? Чего хотите добиться?

Получается лучше проверять например право на редактирование прямо в шаблоне через php функцию?
право на редактирование должно определяться при запросе php-скрипта. В шаблоне ты можешь вызвать объект модели (или массив прав) и посмотреть, разрешено ли для данного пользователя использовать право на редактирование и в зависимости от этого, выводить или нет html.
 
какие преимущества он даёт кроме ограничений и паления скорости в сранении с php native?
Это миф. Если библиотека шаблонизатора загружена уже, то падения не будет. А прирост производительности может появиться по сравнению с PHP native.
Это словесные спекуляции, но обоснованные логически.

какой шаблонизатор стоит использовать
Тот, который удовлетворяет поставленную задачу. Но навряд ли это будет "своём собственном шаблонизаторе".
 
Это миф. Если библиотека шаблонизатора загружена уже, то падения не будет. А прирост производительности может появиться по сравнению с PHP native.
Это словесные спекуляции, но обоснованные логически.
даже больше, помнится WP на примере своего quicky демонстрировал как засчёт внутренней оптимизации и кеширования скорость возрастает.
 
Сверху