На моем сайте (на основе 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>
Но это не сработает. Кто-нибудь, кто хочет помочь продвинуться дальше?