Проблема при добавлении второго настраиваемого меню в глобальный контекст

Issue when adding second custom menu to global context - Unsupported operand types in /app/wp-content/plugins/timber-library/vendor/twig/twig/lib/Twig/Environment.php(462)

Я работаю над захватом второго зарегистрированного меню и добавлением его в шаблон заголовка. Я использую плагин Timber с шаблонами Twig.

Я добавляю это второе меню в глобальный контекст:

$context['custom-menu'] = new Timber\Menu( 'Custom Menu' );

и вызываю меню в моем файле index.php.

$context = Timber::get_context();
$context['posts'] = new Timber\PostQuery();
$templates = array( 'index.twig' );
if ( is_home() ) {
    array_unshift( $templates, 'home.twig' );
}
Timber::render( $templates, $context );

Файл header.twig включен в base.twig, который расширен до index.twig. Сюда входят все части заголовка.

{% include "partial/user-menu.twig" with {'custom-menu': custom-menu.get_items} %}
{% include "menu.twig" with {'menu': menu.get_items} %}
{% include "partial/sl_logo.twig" %}
{% include "partial/sl_search.twig" %}

Menu.twig отображается нормально, но когда я добавляю пользовательское меню, вверху появляется ошибка. Когда я удаляю with {'custom-menu': custom-menu.get_items}, появляется ошибка: Object of class Timber\Menu could not be converted to int

Файл user-menu.twig выглядит так:

    <ul>
    {% for item in custom-menu %}
        <li class = "{{ item.classes | join(' ') }}">
            <a target = "{{ item.target }}" href = "{{ item.link }}">{{ item.title }}</a>
             {% include "user-menu.twig" with {'custom-menu': item.get_children} %}
        </li>
    {% endfor %}
    </ul>

Документация по репозиторию Timber Github предполагает, что вы можете добавлять меню в глобальный контекст и просто добавлять их при get_context.

https://github.com/timber/timber/blob/master/docs/guides/menus.md

Может ли кто-нибудь помочь диагностировать проблему?

Вы исправили ошибку? У меня такая же проблема с тобой. Спасибо.

Vincent Moulene 13.11.2018 11:30

У меня были проблемы с меню «Древесина», и я, наконец, обнаружил, что ему не нравится название, содержащее тире. Я сменил custom-menu на custom_menu и начал работать.

Camilo 01.07.2019 04:03
Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
3
2
469
1

Ответы 1

Может быть, я начну с предоставления вам того, что использую в той же ситуации.

В functions.php добавить

function add_to_context( $data ){
    //menu
    $data['menu_primary'] = new TimberMenu( 'primary' );
    $data['menu_footer'] = new TimberMenu( 'footer' );
    return $data;
}

Следующее использование в желаемом месте:

{% for item in menu_primary.get_items %}
...
{% endfor %}

+1, потому что этот пост заставил меня понять, что я вызвал TimberMenu с идентификатором меню Footer вместо ярлыка местоположения меню footercodex.wordpress.org/Function_Reference/register_nav_menus

tehlivi 30.09.2019 22:21

Другие вопросы по теме