将字段名称从CFS wordpress插件传递到twig

时间:2017-03-12 00:30:22

标签: php wordpress twig timber

所以我对PHP非常陌生,我在通过字段名称时遇到了一些麻烦。

我正在使用自定义字段(cfs)并在twig中为php编写。

目前,我只是在我的page.twig中。这个想法是,如果在Wordpress中设置了图像,图像将显示在page.twig中设置的位置。

字段名称为header_image

{%if header_image %}
  {{header_image}}
{% endif %}

1 个答案:

答案 0 :(得分:0)

使用Timber时,您可以轻松地将变量从PHP控制器传递到twig视图。有两种方法可以做到这一点:

1)在functions.php中,您可以将变量全局传递给上下文。 Timber Starter主题有这个参考。您的add_to_content功能应如下所示:

function add_to_context( $context ) {
    global $cfs;

    $context['header_image'] = $cfs->get('header_image');

$context视为一个巨大的变量,将变量传递到实际视图中。

请记住:这使您的变量可以全局访问,因此您需要为CFS ID唯一命名。例如global_phone_number

2)为了更好地构建代码,您应该通过该页面的控制器将变量传递给上下文。这有助于确保您不会传递未被使用的变量。

page.twig 文件中,您需要添加:

$context['header_image'] = $cfs->get('header_image');

请记住: $ context名称是您在twig文件中使用的名称,$ cfs名称是您在自定义字段套件中调用的名称。

<强>最后:

{% if header_image %}是好的,因为这将检查是否已设置变量,然后决定是否显示此块。 但是,在CFS中,上传图像时,您可以选择文件URL 附件ID 。这意味着您需要在twig文件中处理此结果。

例如,通过选择文件网址,您需要将{{header_image}}输出为:

<img src="{{header_image}}" />

您可能还想根据Wordpress媒体库中设置的图片替换文字添加alt属性。