Нужна помощь, чтобы скрыть код

Я работаю над веб-сайтом Joomla (1.5.14)/Virtuemart (1.1.3) и столкнулся с проблемой реализации некоторых фрагментов кода AdWords из-за невозможности использования PHP в областях описания категорий в Virtuemart.

Это то, чего я хотел добиться.

У меня есть основной фрагмент AdWords в основном файле index.php для веб-сайта следующим образом:

<?php if ($HideAdWords != "yes") : ?>

<!-- Google Code for Every user Remarketing List -->
<script type="text/javascript">
/* <![CDATA[ */
var google_conversion_id = ###;
var google_conversion_language = "en";
var google_conversion_format = "3";
var google_conversion_color = "666666";
var google_conversion_label = "###";
var google_conversion_value = 0;
/* ]]> */
</script>
<?php if ($_SERVER['HTTPS']) { ?>
<script type="text/javascript" src="https://www.googleadservices.com/pagead/conversion.js">
<?php } else { ?>
<script type="text/javascript" src="http://www.googleadservices.com/pagead/conversion.js">
<?php }?>

</script>
<noscript>
<div style="display:inline;">
<!--<img height="1" width="1" style="border-style:none;" alt="" src="###"/>-->
</div>
</noscript>

<?php endif; ?>

На некоторых страницах я добавил другой код AdWords вместе со следующим фрагментом PHP, желая удалить исходный фрагмент кода со страницы при просмотре этой страницы:

<?php
$HideAdWords = "yes";
?>

Это сделало то, что я хотел, однако на большинстве страниц, которые мне нужно применить, я не могу использовать PHP, при вводе PHP в описание категории в Virtuemart, после сохранения изменений он комментирует любой PHP-код и делает его бесполезным. .

Я пытался искать столько, сколько мог, и пробовал специальные веб-сайты / форумы Joomla / Virtuemart. Мне удалось заставить JavaScript работать в этих областях описания категорий, поэтому мне было интересно, смогу ли я воспроизвести этот эффект с помощью JavaScript, или, может быть, вы, ребята, придумаете лучшее решение?

Я надеюсь, что я был ясен, любая помощь будет действительно оценена.

С уважением.

*изменить: исправлен неопределенный заголовок.


person iamlolz    schedule 10.04.2012    source источник
comment
Не могли бы вы просто написать if (hideAdWords)-блок в javascript? Вам нужно будет только получить доступ к переменной и каким-то образом передать ее в javascript.   -  person Basti    schedule 10.04.2012


Ответы (3)


Если вы хотите сделать это в JavaScript, используйте этот фрагмент на своей главной странице:

<script>
(function() {
  if(window.hideAdWords) return;
  var google_conversion_id = "###",
      google_conversion_language = "en",
      google_conversion_format = "3",
      google_conversion_color = "666666",
      google_conversion_label = "###",
      google_conversion_value = 0;

  document.write(unescape("%3Cscript%20type%3D%22text/javascript%22%20src%3D%22//www.googleadservices.com/pagead/conversion.js%22%3E%3C/script%3E"));
}());
</script>

Тогда вашему PHP просто нужно записать:

<script>
  hideAdWords = <?php print ($HideAdWords == "yes" ? 'true':'false'); ?>;
</script>

Если вы не можете гарантировать, что строка hideAdWords будет напечатана перед функциональным блоком, вы можете изменить функциональный блок так, чтобы он был заключен в обработчик событий, который срабатывает после завершения загрузки страницы (в этом примере используется jQuery, но вы можно легко сделать то же самое с вызовом addEventListener):

<script>
jQuery(function() {
  if(window.hideAdWords) return;
  var google_conversion_id = "###",
      google_conversion_language = "en",
      google_conversion_format = "3",
      google_conversion_color = "666666",
      google_conversion_label = "###",
      google_conversion_value = 0;

  document.write(unescape("%3Cscript%20type%3D%22text/javascript%22%20src%3D%22//www.googleadservices.com/pagead/conversion.js%22%3E%3C/script%3E"));
});
</script>

Учитывая, что единственная разница между URL-адресами SSL и HTTP заключается в схеме, вы можете отказаться от протокола и начать URL-адрес с двойной косой чертой, чтобы просто использовать http или https, через которые был осуществлен доступ к текущей странице.

person steveukx    schedule 10.04.2012
comment
Спасибо, что пытаетесь помочь, вы спасатель! Однако я не могу заставить его работать, когда я копирую его точно так, как вы его написали, он все равно распечатывается на странице. Выглядит так: img600.imageshack.us/img600/9100/16238576.jpg - person iamlolz; 10.04.2012
comment
Вы изменили значения google_conversion_id и google_conversion_label, чтобы они были реальными значениями? Если они действительно должны быть тремя хэшами, то их нужно будет заключить в кавычки (как указано выше) - person steveukx; 10.04.2012
comment
Ой, не знаю, как я скучаю по этому, но, к сожалению, это все еще происходит. img687.imageshack.us/img687/5091/46287193.jpg - person iamlolz; 10.04.2012
comment
Похоже, вам не хватает открывающего тега скрипта второго блока скрипта, вот вам рабочая версия jsfiddle. net/steveukx/n9fQe - person steveukx; 10.04.2012
comment
Я все еще не могу понять, прошу прощения за потраченное вами время, у меня не все хорошо, хех. img341.imageshack.us/img341/1138/60762760.jpg - person iamlolz; 10.04.2012
comment
Несколько вопросов... а что не работает? вы получаете какие-либо ошибки в консоли? Вы пытались использовать предупреждение вместо document.write, чтобы увидеть, продвинулись ли вы так далеко? Предполагая, что вы используете Chrome, посмотрите на вкладку «Сеть» инструментов разработчика, чтобы увидеть, загружается ли convert.js, как это происходит в скрипте, указанном выше. - person steveukx; 10.04.2012
comment
Большое спасибо за всю вашу помощь. Я понял, почему он все еще загружал файл convert.js ... потому что я оставил его ложным, а не истинным. Пожалуйста, извините мое невежество, я всегда благодарен вам за помощь сегодня! - person iamlolz; 10.04.2012

Ну, вы могли бы сделать это в js, вы могли бы использовать в js:


//js part included in php file that loads as common file to all, like footer or header
var hideAdWords = "<?php if ($HideAdWords) { echo "yes"; } else { echo "no"; } ?>

теперь ваша js-переменная hideAdWords может иметь значение «да» или «нет». И вы можете использовать это как переменную js. Вы имели в виду что-то вроде этого

person Sudhir Bastakoti    schedule 10.04.2012
comment
Похоже, это может сработать, но из-за моей бесполезности и отсутствия знаний JS я не могу понять, как вы хотите это реализовать. - person iamlolz; 10.04.2012

Вы ознакомились с некоторыми расширениями Google Analytics для Virtuemart?

BIT Virtuemart Google Analytics

Google Analytics для Virtuemart

У меня нет опыта с ними, но, кажется, у них много вариантов.

person Guido Gautier    schedule 10.04.2012
comment
Спасибо, что разместили их. Я смотрел на них, но этот веб-сайт в настоящее время переносится на 3DCart, поэтому я сразу после быстрого исправления, так как не думаю, что у меня будут такие же проблемы с 3DCart, но время покажет. - person iamlolz; 11.04.2012