我可以将我的PHP代码传递给木材的细枝代码吗

时间:2019-07-05 06:28:43

标签: wordpress woocommerce twig timber

我想知道是否可以将任何类型的php代码转换为细枝,例如,我想知道是否可以传递代码。

?php if (ICL_LANGUAGE_CODE == 'in'):?

{{lang.en}}

有没有一种方法可以添加任何php代码并将其变成树枝并识别它?

我将木材模板用于WordPress。

2 个答案:

答案 0 :(得分:0)

有一个很好的方法来传递您的函数(更正确地说,将函数注册到Twig)。

使用木材挂钩:timber/twig

过滤器挂钩timber/twig中有一个类可以帮助我们将函数传递给Twig。它叫Timber\Twig_Function

new Timber\Twig_Function(
    'function_name_that_will_be_called_in_Twig',
    'function_name_in_php'
);

// OR
new Timber\Twig_Function(
    'function_name_that_will_be_called_in_Twig',
    function( $input ) {
        // anonymous function is ok too.
    }
);

functions.php

add_filter( 'timber/twig', 'add_to_twig' );

function hello_in_php( $name = 'world' ) {
    $hello = 'Hello ';
    $hello .= $name;

    return $hello;
}

function add_to_twig( $twig ) {
    $func = new Timber\Twig_Function('hello', 'hello_in_php');
    $filter = new Timber\Twig_Function('introduce', function( $name ) {
        return "I'm ${name}!";
    });

    $twig->addFunction($func); //Registering a pre-defined function
    $twig->addFunction($filter); //Registering a filter function

    return $twig;
}

index.twig

<p id='a'>{{ hello() }}</p>
<p id='b'>{{ hello('who?') }}</p>
<p id='c'>{{ "Batman"|introduce }}</p>

结果是

<p id='a'>Hello World</p>
<p id='b'>Hello who?</p>
<p id='c'>I'm Batman!</p>

来源:https://timber.github.io/docs/guides/extending-timber/#adding-functionality-to-twig

答案 1 :(得分:0)

您的意思是这种比较吗?

{% if constant('ICL_LANGUAGE_CODE') == 'en' %}
    {# your output here #}
{% endif %}