Наследование в 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'} став свой код и все!
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.