【问题标题】:Checking conditions in fe_page template for Contao在 fe_page 模板中检查 Contao 的条件
【发布时间】:2017-10-23 15:58:59
【问题描述】:

我现在正在使用 contao fe_page 模板来生成元标记。现在我需要根据条件显示元标记。那就是

    if (condition a){
        meta tag =a
}
else {
        meta tag = b
}

条件是“该页面是否使用了新闻模块”。 如何检查 fe_page 模板中的 dat 条件?有什么解决办法吗?

【问题讨论】:

  • 你想在什么条件下插入什么样的元标签?也许你应该反过来做:在parseArticles 钩子中添加一个元标记或通过$GLOBAL['TL_HEAD'][] = … 添加一个新闻模板。
  • 我在所有页面中都使用 fe_page 模板。在所有页面中,我需要根据条件显示元标记,它是:1)如果在该页面中使用新闻模块并且包含图像,则将元标记写为

标签: templates meta-tags contao


【解决方案1】:

您可以在 news_full 模板中执行以下操作,而不是在 fe_page 模板中检查它:

<?php

if ($this->addImage)
{
    $GLOBALS['TL_HEAD'][] = '<meta name="twitter:card" content="summary_large_image">';
    $GLOBALS['TL_HEAD'][] = '<meta name="twitter:image" content="' . $this->singleSRC . '">';
}

如您所见,这还为新闻文章的预告图片添加了 twitter:image 元属性。

除了在news_full 模板中执行此操作,您还可以在parseArticle 挂钩中执行此操作,这样您可以在需要时进行更多控制。

【讨论】:

  • 感谢您的回复。我正在尝试使用 parseArticle 挂钩。
  • 公共函数 parseArticles($objTemplate, $arrRow, $module) { if (!empty($arrRow['singleSRC'])) { $GLOBALS['TL_HEAD'][] = ''; } else { $GLOBALS['TL_HEAD'][] = ''; } }....这是方法吗?如果我的页面不包含新闻模块,我需要显示 。这不能用这种方法来实现。如何使这种 else 条件成为可能?
  • 如果使用parseArticle钩子,还需要检查模块类型。例如if ($module-&gt;type == 'newsreader')&lt;meta name="property" content="no image"&gt; 之类的东西似乎没有必要。
  • 对于使用新闻模块的页面,这是正确的。对于不使用新闻模块的页面,我可以做什么?仅当页面包含新闻模块时,才会启动此 parseArticle 挂钩。一种选择是在所有页面模板中写入,另一种情况,我认为不是写入方法。我们可以在一个共同的地方给出这两个条件,以便我们只需要在一个地方写吗?
  • 您可以将以下内容添加到您的 fe_page 模板中:&lt;meta name="twitter:card" content="&lt;?= $GLOBALS['twitter_card_type'] ?: 'summary' ?&gt;"&gt;,然后在您的 parseArticle 钩子或 news_full 模板中相应地设置 $GLOBALS['twitter_card_type'] = 'summary_large_image'。不漂亮,但可以完成工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-23
  • 1970-01-01
  • 2013-05-23
  • 2021-10-11
  • 1970-01-01
相关资源
最近更新 更多