Выполнить smarty после принятия куки - PullRequest
0 голосов
/ 11 марта 2019

На моем сайте (на основе cms) у меня есть проверка на наличие файлов cookie. Это пакет Javascript. В шаблоне моего сайта у меня есть:

    <div class="row alert alert-info text-center fixed-bottom" role="alert" id="cookies-eu-banner" style="display: none;">
      <div class="col-12 ml-auto mr-auto">
        <p>By continuing your visit to this site, you accept the use of cookies by Google Analytics to make visits statistics.</p>
      </div>
      <div class="col-12">
        <div class="text-center">
          <a class="btn btn-info pull-center btn-round" href="./read-more.html" id="cookies-eu-more">Meer info</a> {*value="button"*}
          <button type="button" class="btn btn-succes btn-round pull-center" id="cookies-eu-accept">Accepteren</button>
          <button type="button" class="btn btn-warning btn-round pull-center" id="cookies-eu-reject">Afwijzen</button>
        </div>
      </div>
    </div>

Cookie-скрипт выполняет следующий скрипт, как только нажата кнопка «Accepteren»:

new CookiesEuBanner(function(){
    // Your code to launch when user accept cookies
    console.log('Cookies accepted and loaded');
    }, true);

В случае, если посетитель нажимает «Accepteren», необходимо загрузить дополнительный код (кнопки Google tagmanager, Analytics и социальные сети). Название cookie = hasConsent. Я знаю, что невозможно проверить, принял ли посетитель файлы cookie в тот момент, когда он нажимает кнопку. Сайт использует Smarty, и следующий фрагмент должен быть оправдан. Если пользователь возвращается в течение времени, в течение которого cookie действителен, то он выполняется без проблем, но он не будет работать в том же сеансе:

{if isset($smarty.cookies.hasConsent)}
    {block name='javascript_footer'}
      {include file="smarty_tag_manager"}
      {include file="{"smarty_analytics"}
    {/block}
  {/if}

Из того, что я понимаю, чтобы заставить это работать, это должно быть сделано с Javascript или AJAX. Я не знаком с этими языками. Может быть, есть способ добавить smarty к приведенному выше фрагменту CookiesEuBanner, но он для меня пуст.

Я пытался добавить к кнопке функцию onclick:

<button type="button" class="btn btn-succes btn-round pull-center" id="cookies-eu-accept" onclick="myFunction()">Accepteren</button>

Назначил msarty переменной:

{capture assign='_main'}
   {block name='javascript_footer'}
      {include file="smarty_tag_manager"}
      {include file="{"smarty_analytics"}
    {/block}
 {/capture}

и myFunction:

<script>
   function myFunction() {
      document.getElementById("demo").innerHTML = '{$_main}';
   }
</script>

Но это не сработает. Кто-нибудь, кто хочет помочь продвинуться дальше?

...