Есть два способа решения проблемы.
Сначала необходимо использовать sfYaml
класс для обновления view.yml
мета-тегами по умолчанию (см. документацию о view.yml ). После этого, если конкретная страница должна использовать другие метас, вы можете переопределить значения по умолчанию с помощью addMeta
метода объекта ответа
Второй (как предложил ManseUK) - объявить слот, поместив код, подобный этому, в макет
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<?php include_javascripts() ?>
<?php include_stylesheets() ?>
<?php include_title() ?>
<?php if (has_slot('metas')): ?>
<?php include_slot('metas') ?>
<?php else: ?>
<?php include_component('page', 'metas') ?>
<?php endif; ?>
<link rel="shortcut icon" href="/favicon.ico" />
</head>
<body>
Метаданные по умолчанию будут отображаться с помощью page
компонентов . Поверх вашего шаблона (я думаю modules/page/templates/showSuccess.php
) поместите код
<?php slot('metas') ?>
<?php if($page->hasMetas()):?>
<!-- code to render nondefault page metas -->
<?php echo $page->getMetas(); ?>
<?php else: ?>
<?php include_component('page', 'metas') ?>
<?php endif;?>
<?php end_slot() ?>
Я предполагаю, что вы замените $page->hasMetas()
реальным кодом, который проверит, есть ли у вашего page
объекта метатеги.
На самом деле я бы предпочел пойти дальше и кодировать page
компоненты для принятия параметров. Код в шаблоне будет выглядеть как
<?php slot('metas') ?>
<?php include_component('page', 'metas', array('metas'=>$page->getMetas())) ?>
<?php end_slot() ?>
Решение о том, какие метас (по умолчанию или нет) должны отображаться, будет приниматься в page
компонентах (я предполагаю, что вы можете легко получить настройки по умолчанию; t из вашей базы данных). Если параметры не были переданы (см. Код компоновки), ваш компонент также должен отображать мета-значения по умолчанию.
Надеюсь, это поможет.