Кнопки социальных сетей в Joomla 2.5

Куда внедрять?
Какие и где взять?
  Блок Поделиться от Яндекса и панель от Pluso
  Плавающая вертикальная панель от Share42
Выборочное размещение


Плагин RusButtonsКак и обещал в одной из статей цикла "Миграция с Joomla 1.5 на Joomla 2.5", детально остановлюсь на вопросе интеграции социальных кнопок в сайт на Joomla 2.5.

Для Joomla 1.5 я использовал плагин социальных закладок RusButtons (немного подправив его). К сожалению, автор не переписал его под 2.5. Существующие решения в виде расширений Джумлы не удовлетворили, к тому же - где гарантия, что авторы будут их своевременно обновлять? Поэтому мой выбор - немного поработать ручками и вживить кнопочки в шаблон. Вариантов соцкнопок нашлось достаточно, но о них - в следующей статье. Здесь же будет описано, куда именно внедряются их скрипты.

Стандартный вариант - вставить панель кнопок в тело статьи перед содержимым или после него. Во втором случае, если используется компонент JComments, социальные кнопки можно интегрировать в его плагин. В этом случае кнопки будут появляться только в тех статьях, в которых включены комментарии. Отдельным вариантом будет рассматриваться вертикальная панель, которую можно подвесить в любом месте веб-страницы.

Итак, давайте разберемся, в код каких файлов и в какое именно место вставляются скрипты панелей кнопок.

1. В тело статьи перед содержимым или после него.

В общем случае редактируется файл components \ com_content \ views \ article \ tmpl \ default.php. В следующем фрагменте кода этого файла наглядно демонстрируется, куда вставляется панель кнопок:

/* ------------ More code..... ----------- */
 
<?php
if (!empty($this->item->pagination) AND $this->item->pagination AND !$this->item->paginationposition AND !$this->item->paginationrelative):
    echo $this->item->pagination;
endif;
?>
 
 /* =====> !!! Перед содержимым - Вставляем сюда */
 
<?php echo $this->item->text; ?>
 
/* ------------ More code..... ----------- */
 
 /* =====> !!! После содержимого - Вставляем сюда */
 
<?php
if (!empty($this->item->pagination) AND $this->item->pagination AND $this->item->paginationposition AND $this->item->paginationrelative):
    echo $this->item->pagination;?>
<?php endif; ?>
 
<?php echo $this->item->event->afterDisplayContent; ?>
</div>
 
/* ------------ End of File ----------- */

Вышеописанное прекрасно работает в шаблонах, поставляемых с Джумлой по умолчанию - Beez2, Beez5, Atomic, а также во многих других. Однако есть множество шаблонов, где свой файл default.php перекрывает тот, который мы рассматривали выше. Например, мой шаблон, сделанный в Artisteer и являющийся активным на момент написания статьи. Покажу на его примере, куда внедрять код в этом случае.

Открываем на редактирование файл templates \ [my_template] \ html \ com_content \ article \ default.php.

/* ------------ More code..... ----------- */
 
if (!$article->introVisible)
    $content .= $article->event('afterDisplayTitle');
$content .= $article->event('beforeDisplayContent');
 
 /* =====> !!! Перед содержимым - Вставляем сюда */
 
if (strlen($article->toc))
    $content .= $article->toc($article->toc);
 
/* ------------ More code..... ----------- */
 
if (strlen($article->readmore))
    $content .= $article->readmore($article->readmore, $article->readmoreLink);
 
 /* =====> !!! После содержимого - Вставляем сюда */
 
if ('below full article' === $article->paginationPosition)
    $content .= $article->pagination();
 
$content .= $article->event('afterDisplayContent');
$params['content'] = $content;
 
// Render article
echo $article->article($params);
echo $component->endPageContainer();
 
/* ------------ End of File ----------- */

Надеюсь, принцип понятен и здесь. Единственное, что хочу уточнить - в этом случае весь скрипт страницы присваивается переменной $content. Поэтому код кнопок не вставляется как есть, а добавляется к значению этой переменной в строковом представлении, т. е. обрамленный одинарными или двойными кавычками:

$content .= 'Блок кода кнопок';

2. Интеграция в JComments.

Редактировать будем файл components \ com_jcomments \ tpl \ default \ tpl_index.php. Тут все просто:

      // include JComments JavaScript initialization
?>
 
 /* =====> !!! Вставляем сюда */
 
<script type="text/javascript">

Теперь, разобравшись, куда и в каком случае мы будем встраивать скрипты наших панелей, перейдем к теме, что именно встраивать. Об этом - в следующей статье.

Комментарии  

Александр
+1 # Александр 13.12.2013 17:24
Добротная инструкция, +++ на google
Ogri
0 # Ogri 13.12.2013 17:43
Спасибо, Александр. Всегда стараюсь, чтобы инструкции получались добротными ))
Евгений
0 # Евгений 05.01.2015 09:50
Будем пробовать
Алекс
0 # Алекс 24.01.2014 00:40
А есть какая то возможность избавиться от исходящих ссылок, которые появляются при использовании данных сервисов.
Только на Share42 нет этих ссылок, но у меня не получается корректно использовать этот скрипт. Ссылки на страницу не указываются. Пытался прикрутить его к страницам товаров в virtuemart.
Ogri
0 # Ogri 25.01.2014 02:46
Вы знаете, не исследовал этот вопрос. Давно уже не переживаю за утечку веса страниц, да и знакомые СЕОшники говорят, что борьба с исходящими ссылками не поднимает сайт в выдаче, а совсем наоборот. Из всех пузомерок меня интересуют две: посещаемость и траст. Первая - тупо растет, второй - стабилен. Индексируюсь быстро.

Так что не знаю даже, что вам посоветовать, кроме как тщательно погуглить, если вам исходящие так уж сильно мешают жить. Извините.
Алекс
0 # Алекс 27.01.2014 05:20
Вполне возможно. Но я так же знаю, что перевес все равно должен быть в пользу входящих. В противном случае поисковики воспринимают сайт, как сайт для платного размещения ссылок. Это так же наставление от опытных сеошников. :-)
Gary
0 # Gary 20.10.2014 19:18
Можно просто тегами закрыть от индексации и
Я так сделла на сайте.
Но с другой стороны Вы ссылаетесь на трастовые ресурсы, поэтому можно в принципе и не закрывать от индексации (ИМХО).
Gary
0 # Gary 20.10.2014 19:19
Теги не прописались :o < NOINDEX > и < NOFOLLOW >
Ogri
0 # Ogri 20.10.2014 20:34
Конечно не прописались, JComments режет теги. А вот так прописываются: <noindex>, <nofollow>. & lt; (без пробела) вместо знака "меньше".
Ogri
0 # Ogri 20.10.2014 20:47
Поисковые роботы давно научились отличать соцкнопки от платных исходящих ссылок. А вот к тегам <noindex> и <nofollow> относятся настороженно. А открытые исходящие ссылки на трастовые ресурсы - скорее плюс, чем минус (в разумных количествах, понятное дело). Так что закрывать линки в соцкнопках не стал бы, вместо этого присоединился бы к вашему ИМХО.
rotor
0 # rotor 14.02.2014 11:12
Во-первых описанный способ не работает вообще. На сайте производителя кнопок описан рабочий способ
Во-вторых, кнопки делают ссылку на сайт, а не на страницу.
Ogri
0 # Ogri 14.02.2014 12:59
Интересная логика. Во-первых - не работает вообще. Во-вторых - кнопки дают неверную ссылку. При этом - не работая вообще. Это как?

И о каком производителе кнопок вы говорите? В статье, которую вы прокомментировали, описано, в какие файлы движка и куда именно внедрять скрипты неких гипотетических кнопок. Примеры конкретных кнопок от конкретных производителей рассматриваются в двух следующих статьях. Во всех случаях открываются, разумеется, страницы, а не сайт в целом, и этот функционал реализован именно в скриптах производителей. То, что в этих статьях для иллюстрации вставлены (причем как раз по описываемой методике) все рассматриваемые варианты, и можно легко убедиться, что всё работает как надо, бесспорно, свидетельствует только в пользу вашего, уважаемый, мнения. Да и я вот уже полтора года использую этот способ, и работает он, видимо, только в моем горячечном бреду.

Ув. rotor, если у вас есть конкретные вопросы, я с удовольствием на них отвечу. На подобное же замечание - это всё, что мне есть сказать.
Марат
0 # Марат 12.05.2014 10:54
Здравствуйте! Использовал скрипт кнопок от Pluso. Следуя вашим рекомендациям вставлял скрипт и в components \ com_content \ views \ article \ tmpl \ default.php и в templates \ [my_template] \ html \ com_content \ article \ default.php и в components \ com_jcomments \ tpl \ default \ tpl_index.php скрипт нигде не заработал. Подскажите пожалуйста где я мог ошибиться?
Ogri
0 # Ogri 12.05.2014 13:52
Здравствуйте, Марат! Не смогу сказать, где может быть ошибка, если не гляну код. Бросьте на мыло () файл templates \ [my_template] \ html \ com_content \ article \ default.php. А если сможете заархивировать всю папку шаблона и приаттачить - будет еще лучше. Конечно, если ваш шаблон не оригинальный и суперсекретный ;)
Andreiand78
0 # Andreiand78 03.06.2014 09:41
Здравствуйте. Спасибо, помогло, все работает. :-)
У меня вопрос (немного не по теме):
Подскажите пожалуйста. Когда ставлю модуль "Материалы - Новости" он выводит заголовки с тегом h от 1 до 5 на выбор. Как убрать тэг h? Потому что на странице получается переизбыток заголовков с тегами, нерелевантность и т.п. Хотелось бы, чтобы просто ссылкой, как текст, без тэга h. ...потому что это плохо на ранжировании сказывается...или нет?
Ogri
+1 # Ogri 03.06.2014 15:16
Здравствуйте. Рад, что помог.

Насчет "переизбытка заголовков с тегами, нерелевантности и т.п", и сказывается ли это плохо на ранжировании - вопрос не ко мне, а к сеошникам. Насколько я знаю, заголовки как раз хорошо выводить с тегами h, но я могу ошибаться. Поменять же - легко, немного покастомизировав модуль.

Идите в папку [корень сайта]\modules\mod_articles_news. Откройте на редактирование файл mod_articles_news.xml. Найдите в нем "item_heading", там и заданы опции тега заголовка. Добавьте к существующим вашу. Например:

<option value="p">p</option>

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

Вывод каждой статьи в модуле задан в файле _item.php в подпапке tmpl. Если разбираетесь в кодах - можете глянуть и еще чего-нибудь поменять. Также можете добавить стили через Суффикс CSS-класса модуля.

При апдейтах ваши изменения могут слететь, придется их ручками восстанавливать. Так что проверяйте после каждого обновления. Удачи!
Andreiand78
0 # Andreiand78 04.06.2014 05:30
Спасибо большое за ответ! Просто слева, в сайтбаре, вывожу 5 рандомных статей (заголовков), как у Вас внизу популярные и новые ( они у Вас вроде без h), а мне pr-cy выдает плотность заголовков большую (эти 5 добавляются) ...вот я и думаю, как к этому поисковики отнесутся?
Ogri
+1 # Ogri 04.06.2014 11:54
Ох, в предыдущем комменте в примере скушались теги. Поправил. Но вы, надеюсь, и так поняли, о чем речь.

У меня Новые и Популярные - другие модули: mod_articles_latest и mod_articles_popular. Заголовки в них - обычные линки. Я, кстати, сильно усовершенствовал функционал этих модулей - добавил соответствующие параметры с иконками как в заголовках статей, а главное - сделал их контекстными. В ближайшие дни как раз планируется статья с описанием, если вам интересно - почитайте.

А насчет плотности заголовков - все эти тестовые сервисы обязаны ко всему придираться. Хотя для профилактики, наверное, стОит поправить, хуже не будет.
Andreiand78
0 # Andreiand78 04.06.2014 11:44
Спасибо Вам большое!!! :-) Поменял на p. Все работает!
Алекс
0 # Алекс 14.06.2014 11:10
До но так будут кнопки на всех страницах, если в index.php, а вы подумали о том что на всез они нафиг не нужны?
Ogri
0 # Ogri 14.06.2014 15:18
Как я понимаю, это коммент к варианту с вертикальной панелью от share42. Только там рассматривалось внедрение в index.php. Возможно, некоторым нравится иметь соцкнопки на всех страницах. Если же только в статьях - кто мешает засунуть ее в файл шаблона материала, задав абсолютное позиционирование через стили?
victor82
0 # victor82 24.07.2014 04:50
Добрый день! У меня шаблон Artisteer код как в вашем варианте, но после вставки скрипта кнопок, материалы перестают отображаться. В чем может быть проблема?
Ogri
0 # Ogri 24.07.2014 13:30
Навскидку - или неправильно вставили, или что-то не так с тегами. Протестируйте вывод страницы - вытащите из браузера код страницы, он должен навести на решение. Если не разберетесь - бросьте файл мне на почту (), гляну.

Оставлять комментарии могут только зарегистрированные пользователи.

Работая с этим сайтом, вы даете свое согласие на использование файлов cookie, необходимых для сохранения выбранных вами настроек, а также для нормального функционирования сервисов Google.