2013-04-25 1 views
1

Я использую opencart 1.5.5.1. На страницах продуктов я уже успешно изменил вкладку «Обзор» с помощью инструмента для обсуждения на Disqus! и он отлично работает. Но мой сайт - это язык на двух языках итальянский/английский, и я бы хотел, чтобы пользователи прочитали дискуссию на выбранном им языке. Итак, я создал два разных идентификатора disqus id (две независимые доски обсуждений).Выполнение различных сокращений в Opencart

На моем product.tpl я должен был вставить свой JavaScript, который поставляется с переменной, как:

<script type="text/javascript"> 
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ 

var disqus_shortname = 'xxxxxxxxxx'; 

/* * * DON'T EDIT BELOW THIS LINE * * */ 
     (function() { 
      var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; 
      dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 
      (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
     })(); 
    </script> 

Я хотел бы сделать переменную disqus_shortname зависеть от языка код, указанный на сессии.

До тех пор, как я понимаю, я могу получить его с PHP

$this->session->data['language'] 

или

$this->language->get('code') 

но здесь мы говорим о JS! Как я могу сказать этому скрипту утверждение if? мне нужно что-то вроде

if $this->language->get('code') == 'it' { var disqus_shortname = 'xxxxxxxxxxitalian'; } 
else { var disqus_shortname = 'xxxxxxxxxxenglish'; } 

ответ

0

Проверьте регистр ли вы Disqus для вашего короткое имя сайта на Disqus.

disqus_shortname

Сообщает службу Disqus ShortName вашего форума, который является уникальным идентификатором для вашего сайта, зарегистрированного на Disqus. Если undefined, значение Disqus не загружается.

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

var disqus_config = function() { 
    this.language = "ru"; 
}; 

код как:

<?php 
    $language = ($this->language->get('code') == 'it')? 'it' : 'en'; 
    ?> 
    <script> 
    var disqus_config = function() { 
      this.language = "<?php echo $language; ?>"; 
     }; 

http://help.disqus.com/customer/portal/articles/466249-can-disqus-be-loaded-in-different-languages-per-page-

+0

может быть, я не объяснить мою проблему должным образом. У меня уже есть два disqus_shortname, потому что я хочу разделить английский и итальянский обсуждения. Итак, мне нужно создать условие, которое выбрало бы правильное имя disqus_shortname в зависимости от языка сеанса. –

+0

Я хочу, чтобы избежать смешанных английских/итальянских комментариев в той же теме. –

0

в контроллере Вы должны распространять код языка на шаблон (изменить файл catalog/controller/product/product.php) - добавить это:

$this->data['language_code'] = $this->language->get('code'); 

Затем отредактируйте файл шаблона таким образом (catalog/view/theme/<YOUR_THEME>/template/product/product.tpl):

<script type="text/javascript"> 
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */ 

var disqus_shortname = 'xxxxxxxxxx<?php echo $language_code; ?>'; // here the mojo is done... 

/* * * DON'T EDIT BELOW THIS LINE * * */ 
(function() { 
    var dsq = document.createElement('script'); 
    dsq.type = 'text/javascript'; dsq.async = true; 
    dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; 
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); 
})(); 
</script> 
+0

Спасибо вам за ответы на тур. Я на самом деле уже достиг того, что мне нужно, чтобы установить «код» $ language = ($ this-> language-> get ('code') == 'it')? 'it': 'en'; 'code', а затем использовать его в скрипте для условия, чтобы установить два disqus_shortnames. Я бы показал вам код, но я не могу ответить на тот же вопрос ... –

+0

@FabrizioTatti Вы можете ответить на свой вопрос, и если бы вы поняли свое собственное решение, вы должны даже опубликовать его и принять его здесь. В любом случае, в OpenCart условие '$ lang = ($ this-> language-> get ('code') == 'it'? 'It': 'en');' такое же, как если бы вы вызывали только '$ lang = $ this-> language-> get ('code');' ... – shadyyx