Наследование в Fenom
Добрый день!
Ни как не могу разобраться, как правильно записать на Fenom'е. Есть 2 шаблона, 2й наследует от первого. Есть 2 блока, один внутри другого. Надо поменять верстку во внешнем блоке, а внутренний оставить без изменений.
Приведу пример:
shablon_1
shablon_2
Получается во втором шаблоне мне надо чуть изменить верстку в блоке content, а в блоке sidebar ничего менять не надо. Но запись, описанная выше не работает. Она работает только в том случае, если в шаблоне shablon_2 уже определен блок sidebar. Подскажите пожалуйста, как правильно вставить блок sidebar без изменений, т.е. в том же виде как в шаблоне shablon_1? Ну не вставлять же верстку повторно?
А может плохая идея вставлять блоки в блоках?
Ни как не могу разобраться, как правильно записать на Fenom'е. Есть 2 шаблона, 2й наследует от первого. Есть 2 блока, один внутри другого. Надо поменять верстку во внешнем блоке, а внутренний оставить без изменений.
Приведу пример:
shablon_1
<html>
</html>
<head><title>Пример</title></head>
<body>
{block 'content'}
<div>Текст 1</div>
<div>Текст 2</div>
{block 'sidebar'}
<div>Сайдбар</div>
{/block}
{/block}
</body>
</html>
shablon_2
{extends 'template:shablon_1'}
{block 'content'}
<div>Текст 1</div>
{block 'sidebar'}
{parent}
{/block}
{/block}
Получается во втором шаблоне мне надо чуть изменить верстку в блоке content, а в блоке sidebar ничего менять не надо. Но запись, описанная выше не работает. Она работает только в том случае, если в шаблоне shablon_2 уже определен блок sidebar. Подскажите пожалуйста, как правильно вставить блок sidebar без изменений, т.е. в том же виде как в шаблоне shablon_1? Ну не вставлять же верстку повторно?
А может плохая идея вставлять блоки в блоках?
Комментарии: 11
Вот так нужно:
<html>
</html>
<head><title>Пример</title></head>
<body>
{block 'content'}
{block 'main'}
<div>Текст 1</div>
<div>Текст 2</div>
{/block}
{block 'sidebar'}
<div>Сайдбар</div>
{/block}
{/block}
</body>
</html>
{extends 'template:shablon_1'}
{block 'main'}
<div>Текст 1</div>
{/block}
Ок, тогда по этому примеру как сделать такое?
Первый шаблон такой же, а второй нужно:
Т.е. мне нужно сделать изменение только в блоке conten (вставить текст 3)t, а в блоках main и sidebar оставить верстку такую же. Я думал, что можно так:
Такой вариант не работает. Т.е. в блоке content я вношу нужные мне измения, но в нем есть блоки main и sidebar, которые трогать не надо, а надо просто унаследовать от первого шаблона. Можно так сделать?
Первый шаблон такой же, а второй нужно:
{extends 'template:shablon_1'}
{block 'content'}
<div>Текст 3</div>
{block 'main'}
<div>Текст 1</div>
<div>Текст 2</div>
{/block}
{block 'sidebar'}
<div>Сайдбар</div>
{/block}
{/block}
Т.е. мне нужно сделать изменение только в блоке conten (вставить текст 3)t, а в блоках main и sidebar оставить верстку такую же. Я думал, что можно так:
{extends 'template:shablon_1'}
{block 'content'}
<div>Текст 3</div>
{block 'main'}
{parent}
{/block}
{block 'sidebar'}
{parent}
{/block}
{/block}
Такой вариант не работает. Т.е. в блоке content я вношу нужные мне измения, но в нем есть блоки main и sidebar, которые трогать не надо, а надо просто унаследовать от первого шаблона. Можно так сделать?
Т.е. в блоке content я вношу нужные мне измения, но в нем есть блоки main и sidebar, которые трогать не надо, а надо просто унаследовать от первого шаблона. Можно так сделать?Наверное можно, если расширять блоки без учета вложенности. Например, так:
{extends 'template:shablon_1'}
{block 'content'}
<div>Текст 3</div>
{parent}
{/block}
{block 'sidebar'}
<div>Сайдбар 2</div>
{parent}
{/block}
Наверное можно, если расширять блоки без учета вложенности.Во, уже ближе. В общем, редактировать блоки по ходу дела надо с последней вложенности. Буду думать, потом отпишусь.
Такой вариант работает, если текст надо вставить вверх верстки. А если в середину:
Тут я опять голову ломаю и не пойму как сделать.
PS вставляем «Текст 3» и получается в этом варианте блоки main и sidebar пустые. Не наследуются с предыдущего шаблона(
{extends 'template:shablon_1'}
{block 'content'}
{block 'main'}
{parent}
{/block}
<div>Текст 3</div>
{block 'sidebar'}
{parent}
{/block}
{/block}
Тут я опять голову ломаю и не пойму как сделать.
PS вставляем «Текст 3» и получается в этом варианте блоки main и sidebar пустые. Не наследуются с предыдущего шаблона(
При расширении наследуются блоки шаблона, а не блоки блоков (: Как-то так, не могу сформулировать правильно без разбора кода шаблонизатора. Лучше наверное задать этот вопрос разработчику на гитхабе.
А так, можно добавить код к блоку main вниз или к sidebar вверх. Или в content добавить пустой блок center и уже его менять.
А так, можно добавить код к блоку main вниз или к sidebar вверх. Или в content добавить пустой блок center и уже его менять.
Я хочу изменить внешний блок без написания верстки внутренних блоков (там же по верстке остается то же, что и было в первом шаблоне). К примеру я в первом шаблоне поменяю, и изменения будут учтены уже во втором шаблоне. В предложенном варианте мне приходится повторять верстку и если я в первом шаблоне изменю блок sidebar, то во втором шаблоне не будет изменений, т.к. там четко прописано что выводить.
Как мне видится, Вам нужно в shablon_1 в нужном для изменения месте указать блок пустой, например
{block 'kakoytoblock'}
{/block}
Потом выводите в его теле нужную Вам информацию{extends 'template:shablon_1'}
{block 'kakoytoblock'}
kakoytocod
{/block}
Делай вот так
1
1
{include 'header'}
{block 'sidebar'}
{include 'sidebar'}
{/block}
{block 'content'}
{/block}
{block 'footer'}
{include 'footer'}
{/block}
2 {extends 'template:main'}
{block 'content'}
{/block}
Т.е. ты предлагаешь все засовывать в чанки? В принципе как вариант, но не очень удобно, т.к. в блоке может быть всего 2 строчки и их проще написать в шаблоне, а не создавая для этого отдельный чанк.
Мде… ППЦ
Я показал пример не надо быть только чанк.
Убери
Я показал пример не надо быть только чанк.
Убери
{include 'footer'}
став свой код и все!
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.