0

所以我对 PHP 很陌生,并且在传递字段名称时遇到了一些麻烦。

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

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

字段名称是header_image

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

1 回答 1

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 中,上传图像时,您可以选择File URLAttachment ID。这意味着您需要在 twig 文件中处理此结果。

例如,通过选择File URL,您将需要输出{{header_image}}为:

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

然后,您可能还想根据在 Wordpress 媒体库中设置的图像 alt 文本添加 alt 属性。

于 2017-03-12T11:21:53.937 回答