Geo Api в файле TPL

#javascript #prestashop #smarty

#javascript #prestashop #умный

Вопрос:

Я использую этот код для отображения div только для клиентов из Великобритании, и он работает через встроенный конструктор страниц — prestashop.

К сожалению, я не могу заставить его работать в файле tpl для адресной формы. В принципе, мне нужен текст под формой адреса.

     <div class="hide GB">text</div>
    <script type="text/javascript">
    {literal}
    $.get("https://freegeoip.app/json/", function (response) {
    document.getElementsByClassName(response.country_code)[0].style.display = "block";
    }, "jsonp");
    {/literal}
    </script>
  

Я также пробовал этот:

 {literal}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script>$.ajax("https://freegeoip.app/json/")
  .done(function (e) {
  $('.hide').eq(e.country_code === 'GB' ? 0 : 1).show();
});</script>
<div class="hide">text</div>
<div id="country_code"></div>
{/literal}
  

Они оба работают в скрипте. Они оба работают в конструкторе страниц при добавлении в виде необработанного html (без буквенных тегов ofc)

Однако по какой-то причине я не могу заставить их работать в файле adress-form.tpl. Текст просто не будет отображаться. Однако код страны отображается там, где я этого хочу. Это просто текст, который не используется. Есть идеи? С уважением

Ответ №1:

 {literal}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"> 
</script>

<div id="GB">text</div>
<script>$.get("https://freegeoip.app/json/", function (response) {
    $("#country_code").html(response.country_code);
    if(response.country_code=='GB'){
        document.getElementById(response.country_code).style.display = "block";
    }
}, "jsonp");</script>


{/literal}
  

Я на самом деле решил это с помощью этого кода.
С точки зрения CSS:

 #GB{display:none;}