ADBLOCK_MSG
Итак, определим условие, по которому будем фильтровать вывод блока кнопок. Если цель - вывести его только на страницах определенных статей, то для каждой из них оно примет следующий вид:
$article_id = explode(':', JRequest::getVar('id')); if (JRequest::getVar('view') == 'article' && $article_id[0] == '[Article ID]') ...
Здесь [Article ID]
- идентификатор материала, выяснить значение которого легко в административном сервисе из списка материалов, либо же зайдя на страницу редактирования статьи. Соответственно, для скрытия кнопок на некоторых страницах к приведенной конструкции добавляется оператор отрицания !
.
Таким образом, в файле шаблона статьи код панели кнопок, добавленный как описано в первой статье цикла, обрамляется условным оператором if
. Например, на моем двуязычном сайте ID русской и английской страниц 404 соответственно - 80 и 448. Фрагмент кода с кнопками от Pluso выглядит следующим образом:
<?php $article_id = explode(':', JRequest::getVar('id')); if (!(JRequest::getVar('view') == 'article' && ($article_id[0] == '80' || $article_id[0] == '448'))) { ?> <script type="text/javascript">(function() { if (window.pluso)if (typeof window.pluso.start == "function") return; var d = document, s = d.createElement('script'), g = 'getElementsByTagName'; s.type = 'text/javascript'; s.charset='UTF-8'; s.async = true; s.src = ('https:' == window.location.protocol ? 'https' : 'http') + '://share.pluso.ru/pluso-like.js'; var h=d[g]('head')[0] || d[g]('body')[0]; h.appendChild(s); })();</script> <div class="pluso" data-options="big,square,line,horizontal,counter,theme=06" data-services="facebook,twitter,vkontakte,odnoklassniki,yandex,moimir,google,linkedin" data-background="transparent"></div> <?php } ?>
Замените 80 и 448 на свои значения идентификаторов страниц. Кстати, если кому интересно, для случая, когда включен SEF (ЧПУ), условие могло бы выглядеть проще:
if (JRequest::getVar('id') == '[Article ID]') ...
Надеюсь, вы используете ЧПУ; однако наверняка бывают случаи, когда джумловоды по тем или иным соображениям его отключают. И если в первом случае JRequest::getVar('id')
возвращает строку идентификатора, то во втором - ее же, но с приличным хвостом в виде алиаса материала, отделенного двоеточием. Так, при включенном SEF строка ID данной статьи - '630'
, в противоположном же случае была бы '630:knopki-sotsialnykh-setej-v-joomla-2-5-vyborochnoe-podklyuchenie
'. Для этого и введена функция explode
, отсекающая тот самый хвост, и это делает условие универсальным для обоих вариантов. Ну, это программистские тонкости, и вникать в них необязательно. Помните только, что условие с вытаскиванием номера из строки идентификатора материала гарантирует вам возможность отключения ЧПУ без скрытых побочных эффектов в логике вывода соцкнопок.
P.S. Напоследок хотелось бы заметить вот еще что. Многие мои статьи рассказывают, как кастомизировать Джумлу и ее расширения. Сам я понавносил уже немало полезных изменений в коды и на определенном этапе сделал открытие: палка, оказывается, о двух концах. Все кастомизации приходится тащить через обновления, выпускаемые, как мы знаем, достаточно часто. Как регулярно обновляться и при этом не потерять свои изменения - вот вопрос, которым я озаботился. При этом хотелось бы решение этой, не побоюсь этого слова, диалектической проблемы оптимизировать и при каждом апдейте и даже апгрейде тратить времени по-минимуму на восстановление кастомно добавленного функционала. Определенный сценарий в общих чертах уже выработан и применяется на практике. Планирую выделить время на изучение темы в сети, добавить лучшие идеи оттуда к своим и посвятить вопросу подробную статью. Кому интересно - подписывайтесь на обновления. А если кто имеет свои мысли по этому поводу и желает ими поделиться, может сделать это через камменты, контактную форму или на мыло ogri@ogri.me.