Symfony1 自定义元标记配置

Symfony1 自定义元标记配置,symfony1,symfony-1.4,meta-tags,Symfony1,Symfony 1.4,Meta Tags,我有两个表,page和settings page只是一组字段,如name和slug,还有3个其他字段用于元标记(title、keywords、description),并显示一个cms页面 settings有3个字段:default\u meta\u title、default\u meta\u关键字、default\u meta\u description 现在我要做的是,如果我所在的页面没有cms页面中的特定元信息集,那么在HTML源代码中显示默认的元标记 所有的页面,除了主页都是这样管理的

我有两个表,
page
settings

page
只是一组字段,如name和slug,还有3个其他字段用于元标记(title、keywords、description),并显示一个cms页面

settings
有3个字段:default\u meta\u title、default\u meta\u关键字、default\u meta\u description

现在我要做的是,如果我所在的页面没有cms页面中的特定元信息集,那么在HTML源代码中显示默认的元标记

所有的页面,除了主页都是这样管理的,所以我想我需要在
layout.php
中添加一些代码来实现这一点


因此,主页将显示我的默认值,因为我无法在cms
页面中设置此项。

您可以使用插槽-检查布局中是否存在插槽-如果存在,则添加自定义元字段-如果不存在,则添加默认元字段

您可以使用插槽-检查布局中是否存在插槽-如果存在,则添加自定义元字段-如果不存在,则添加默认值有两种方法可以解决这个问题

首先是使用类用默认的元标记更新
view.yml
(请参阅)。之后,如果特定页面应该使用另一个元,您可以使用

第二个(正如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->hasMetas()
,该代码将检查您的
page
对象是否具有元标记

实际上,我更愿意进一步编写
page
组件以接受参数。模板中的代码如下所示

<?php slot('metas') ?>
  <?php include_component('page', 'metas', array('metas'=>$page->getMetas())) ?>
<?php end_slot() ?>

将在
页面
组件中决定应呈现哪些图元(默认值或非默认值)(我假设您可以轻松地从数据库中检索defaul;t设置)。如果未传递任何参数(请参见布局代码),则组件也应呈现默认图元


我希望这会有所帮助。

有两种方法可以解决这个问题

首先是使用类用默认的元标记更新
view.yml
(请参阅)。之后,如果特定页面应该使用另一个元,您可以使用

第二个(正如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->hasMetas()
,该代码将检查您的
page
对象是否具有元标记

实际上,我更愿意进一步编写
page
组件以接受参数。模板中的代码如下所示

<?php slot('metas') ?>
  <?php include_component('page', 'metas', array('metas'=>$page->getMetas())) ?>
<?php end_slot() ?>

将在
页面
组件中决定应呈现哪些图元(默认值或非默认值)(我假设您可以轻松地从数据库中检索defaul;t设置)。如果未传递任何参数(请参见布局代码),则组件也应呈现默认图元


我希望这会有所帮助。

你能详细说明你的问题吗?你能详细说明你的问题吗?太棒了!!像一个魔咒一样工作,现在在数据库中没有定义meta的所有页面上呈现默认meta,并且在数据库中显示页面中的meta!伟大的明亮的像一个魔咒一样工作,现在在数据库中没有定义meta的所有页面上呈现默认meta,并且在数据库中显示页面中的meta!伟大的