Перезагрузите .twig шаблон с AJAX - PullRequest
0 голосов
/ 10 мая 2019

Я использую https://github.com/gmrchk/swup в сочетании с веткой / древесиной. Это прекрасно работает, однако, я понял, что ни одно из моих предложений if не работает, когда я попадаю на новую страницу, так как SWUP не может прочитать аргументы if из моих файлов веток. (это библиотека JS для динамической загрузки страниц)

Например:

{% if fn('is_single') %}
<div class="progress"></div>
{% endif %}

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

Моя идея состояла в том, чтобы заново обработать header.twig (где вышеупомянутое условие if) с помощью вызова AJAX.

AJAX-вызов выглядит так:

function swupReplaceHeader() {
    jQuery.ajax({
        type: "POST",
        url: "/wp-admin/admin-ajax.php",
        data: {
            action: 'spx_replace_header',
        },
        success: function (output) {
            console.log(output);
        }
    });
}

swupReplaceHeader();
document.addEventListener('swup:clickLink', swupReplaceHeader);

Он помещен в прослушиватель событий, который срабатывает каждый раз, когда я нажимаю на ссылку.

Функция WP выглядит следующим образом:

add_action('wp_ajax_spx_replace_header', 'spx_replace_header');
add_action('wp_ajax_nopriv_spx_replace_header', 'spx_replace_header');
function spx_replace_header()
{
    $context = Timber::get_context();
    Timber::render('templates/header.twig', $context);
    wp_send_json_success(['AJAX is working']);
}

Я добавил сообщение JSON об отправке, чтобы проверить, работает ли мой вызов AJAX.

Теперь, когда я тестирую вызов AJAX без кода Timber, он работает, но когда я добавляю две строки Timber в функцию, ничего не происходит - даже не появляется сообщение JSON. Я тоже попробовал Timber :: compile безуспешно.

Я надеюсь, что кто-то может мне помочь ..

Лучший, Dennis

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...