Отложенная загрузка контента

Есть плагин "Информация о доставке и оплате" - https://www.webasyst.ru/store/...

Есть возможность выводить блок плагина на страницах товаров через хелпер:

{shopDpPluginHelper::product($product)}

Но этот блог сильно тормозит загрузку страницы. Есть ли способ вывести его на странице через хелпер не сразу, а только после того как страница будет полностью загружена?

6 ответов

  • 1
    Алексей Webasyst 12 ноября 2020 16:13 #

    Теоретически да, но сложно.
    Вам нужно будет создать отдельную страницу на которую будете обращаться Ajax по окончанию загрузки основного контента, и получать данные.
    На странице нужно будет снова получить $product и передать его в хелпер.

    • +1
      waku42 waku42 12 ноября 2020 21:32 #

      А что, если...

      ... не делать отдельную страницу для этого, а выводить этот блок на этой странице по условию, например, наличию get-параметра. И ajax-запрос делать соответственно к этой же странице но с get-параметром.

      • +1
        Алексей Алексей Webasyst 12 ноября 2020 22:02 #

        Можно так, главное чтобы данные получать ajax, чтобы не прилетало половина index.html.
        Будет тот же принцип как сейчас при ?cart=1

      • +1
        chikurov-seo chikurov-seo 13 ноября 2020 09:36 #
        ajax-запрос делать соответственно к этой же странице но с get-параметром.

        Можно пример кода? =)

        • +1
          Игорь Гапонов Игорь Гапонов 13 ноября 2020 13:22 #

          Примерно так:

          $.post('https://mydomain.com/page/', { load_dp: 1 }, function(response) {
              if (response) {
                  const $content = $(response);
                  const $magicBlock = $content.find('.dp-magic-block');
                  if ($magicBlock.length) {
                      const $desiredContent = $magicBlock.html();
                      console.log($desiredContent);
                  }
              }
          }, 'html');

          В шаблоне так:

          {if $wa->post('load_dp')}
              <div style="display: none" class="dp-magic-block">    
                  {* Хелпер вывода *}
              </div>
          {/if}

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите