Реально ли получать содержимое блока из родительского файла в дочерний? Например, у меня есть 3 файла parent.tpl
& first-child.tpl
& second-child.tpl
Наследование основного блочного кода Smarty
Родитель содержит этот код:
<div>
{block name='greetings'}{/block}
</div>
первого ребенка содержит:
{extends file="parent.tpl"}
{block name='greetings'}
<h1>Hello! I'm child</h1>
{/block}
второго ребенка содержит так же, как первые приветствия блока (только тот же текст), но вместо h1
тег, использование второго ребенка h4
тег:
{extends file="parent.tpl"}
{block name='greetings'}
<h4>Hello! I'm child</h4>
{/block}
Я не хочу, чтобы дублировать текст Hello! I'm child
в каждом ребенке, но положить это в собственный блок. Это можно сделать так: Создайте новый файл greeting_text.tpl
и включите их в каждый дочерний элемент, но я не хочу выделять для этого собственного файла. Я пытался заявить, что текст в parent.tpl
:
...
{block name='greetings_text'}Hello! I'm child{/block}
И получаю, что у детей:
{extends file="parent.tpl"}
{block name='greetings'}
<h1>{block name='greetings_text'}{/block}</h1>
{/block}
и второго ребенок:
{extends file="parent.tpl"}
{block name='greetings'}
<h4>{block name='greetings_text'}{/block}</h4>
{/block}
Но я понял, что это невозможно принять block
содержания от родителя к ребенку. Или, может быть, я ошибаюсь. Пожалуйста, дайте мне совет, как я могу это сделать, кроме как положить greeting_text
в свой собственный файл и включить их в детей? Благодаря!
Редакция:
К сожалению, предыдущий текст вопроса был немного неправильно (не в полной мере описать то, что я пытаюсь сделать)
Как писал sofl, это работа с append
строительство. Но проблема в том, что у меня есть 3 файлов, и два из них выдвижная (layout.tpl, DEFAULT.TPL и page.tpl)
layout.tpl
<div class="layout">
{block name="content"}{/block}
</div>
DEFAULT.TPL
{extends file="layout.tpl"}
{block name='menu'}
<ul>
<li>Link 1</li>
<li>Link 2</li>
<li>Link 3</li>
</ul>
{/block}
page.tpl
{extends file="default.tpl"}
{block name="content"}
<div class="first-page-example">
{block name='menu' append}{/block}
<span>I'm text only for first page....</span>
</div>
{/block}
запускает page.tpl
($smarty->display('page.tpl')
), и я хотел бы получить menu
от default.tpl
к каждому ребенку (page.tpl
, P.S. может быть много детей page1.tpl, page2.tpl, ...Но для всех из них необходимо было установить меню по умолчанию от default.tpl
) И положите все на layout.tpl
, как content
. Так как я могу сделать это с block
строительство? Пожалуйста, любые советы.
Пожалуйста, помогите мне, ребята. Я знаю, что есть много опытных Smarty, парни, которые знают, почему эта конструкция не работает. Дайте мне совет, как это лучше делать, пожалуйста ... :) – kxc