На примере вставки кода кнопок Яндекс.Поделиться в код шаблона материала.

В предыдущей статье на примере вставки кода объявлений Google AdSense в код шаблона материала было показано, как вставить модуль Joomla в любое место шаблона (в код любого шаблона). Чтобы закрыть тему вставки дополнительных модулей в код шаблона материала, в этой статье рассмотрим, как добавить кнопки «Поделиться» в социальных сетях от разработчиков Яндекса в начало и в конец всех статей, опубликованных в CMS Joomla.

Старт! Честный VDS/VPS, на котором «Лунная База» живет уже 20+ лет

Задумываетесь о том, чтобы поднять свой pet-проект, сайт клиента или настроить окружение для разработки? Уже пора подумать, где арендовать железо.

Лунная База хостится на FirstVDS более 20 лет. Мыслей о том, чтобы перебраться на другой хостинг, не было ни разу (хотя опыт работы с другими вариантами, конечно, есть).

Бывали разные ситуации, но они бывают на любом железе. Главное, что нужно понять: здесь нет маркетинговой шелухи и сказок про «мы всё сделаем за вас». Если вы берете VDS — вам дают полный root, возможность накатить любую ОС и не лезут в ваши конфиги.

Если в саппорт написать с вопросом по вашему коду и получить ответ: «Читайте документацию и разбирайтесь сами» или «Обратитесь к профильному специалисту» — это не повод обижаться. Это повод углубить свои знания в DevOps и сайтостроении! Бегите от тех, кто пообещает: «Мы всё чиним и настраиваем абсолютно бесплатно!». Никто никогда не работает «по доброте душевной» в ущерб себе, а бесплатный сыр в администрировании обычно заканчивается сломанной базой данных.

Что по факту: Гибкое масштабирование ядер и RAM, экономия по сравнению с физическими серверами и адекватная панель ispmanager, если она вам нужна.



Создание модуля сайта с определённой позицией вывода. Предварительная подготовка данных.

  1. О том, где взять код кнопок «Поделиться» в социальных сетях Яндекса можно прочитать в → этой статье. Его можно дополнить дополнительной информацией в формате HTML.
  2. Предварительно создадим дополнительные две позиции модуля в файле. (Как это сделать подробно описано в → этой статье.)
    • позиция YaShare-up будет предназначена для размещения кнопок «Поделиться» в социальных сетях в начале статьи
    • позиция YaShare-down — в начале статьи
  3. После создаём стандартный модуль сайта «HTML-код» с кодом Яндекса кнопок «Поделиться» в социальных сетях (см.выше п.1). Так как этот код вставки содержит JavaScript, то для его вставки нужно прибегнуть к некоторой хитрости. (Как обойти все препятствия подробно рассказано в → этой статье.)
  4. В итоге у нас получится два модуля, содержащими код для вставки кнопок «Поделиться» в двух новых позициях. Этот код может быть разным (в зависимоти от того, в начале статьи или в её конце располагаются кнорки). Позиции модуля — это важно: они потребуются для вызова кода, содержащегося в этих модулях. Выглядеть в Менеджере модулей Joomla всё это в итоге должно примерно так:

Как вставить модуль Joomla в любое место шаблона (в код любого шаблона).

Вставка модуля Joomla в любое место шаблона

Сразу отмечу, данный способ работает не только с модулем типа HTML-код, а с любым модулем Joomla. Важно только то, чтобы знать его позицию и каким по счёту следует нужный модуль в этой позиции. Так как мы создали отдельные модули для каждой позиции, то вызов их будет несколько проще. Модули считываются в массив. А так, как у нас по одному модулю на позицию, то первый же элемент массива будет содержать данные из этого модуля. Первый элемент массива в php имеет номер [0] (ноль), второй - [1] и так далее. То есть, счёт элементов массива начинается с нуля.

Собственно код для вставки двух модулей Joomla в любое место шаблона (что он делает, подробно разберём ниже):

jimport( 'joomla.application.module.helper' );
$YamoduleUp   = JModuleHelper::getModules('YaShare-up');
$YamoduleDown = JModuleHelper::getModules('YaShare-down');
$attribs['style'] = 'none';
$YaShareUp   = JModuleHelper::renderModule($YamoduleUp[0], $attribs);
$YaShareDown = JModuleHelper::renderModule($YamoduleDown[0], $attribs);

// NOTE: The following code (usually) sets the text to contain the fulltext, but it is the
// responsibility of the layout to check 'access-view' and only use "introtext" for guests
if ($item->params->get('show_intro', '1') == '1')
{
	// выводим переменные $YaShareUp и $YaShareDown в начале вывода статьи и в самом её конце
	$item->text = $YaShareUp . '<br><br>' . $item->introtext . $item->fulltext . '<br><br>' .  $YaShareDown;
}

Вставка кода Яндекса кнопок «Поделиться» в социальных сетях в код шаблона материала.

Ранее в двух статьях было подробно описано, как и почему требуется изменять код шаблона материала, который находится в файле /components/com_content/views/article/view.html.php:

Теперь делаем тоже самое, только уже из данных модулей, хранящихся в базе данных сайта и доступных для редактирования из админки Joomla, а не из файлов, лежащих на сервере. (Так удобнее и, возможно, быстрее работает.)

Разберём код, приведённый выше:

  1. В строке jimport( 'joomla.application.module.helper' ); подключаем требуемый класс module.helper Joomla.
  2. В строке $YamoduleUp = JModuleHelper::getModules('YaShare-up'); заполняем массив $YamoduleUp модулями (а он у нас один), опубликованными в позиции YaShare-up - модуль верхних кнопок «Поделиться»
  3. В строке $YamoduleDown = JModuleHelper::getModules('YaShare-down'); заполняем массив $YamoduleDown модулями (и тут только один модуль), опубликованными в позиции YaShare-down - модуль нижних кнопок «Поделиться»
  4. В строке $attribs['style'] = 'none'; указываем стиль вывода модуля none (так как при использовании стиля xhtml наблюдается дублирование заголовков модуля)
  5. В строке $YaShareUp = JModuleHelper::renderModule($YamoduleUp[0], $attribs); присваиваем значение первого модуля из позиции YaShare-up в переменную $YaShareUp
    • $YamoduleUp[0] - первый элемент массива
  6. В строке $YaShareDown = JModuleHelper::renderModule($YamoduleDown[0], $attribs); присваиваем значение первого модуля из позиции YaShare-down в переменную $YaShareDown
    • $YamoduleDown[0] - первый элемент массива

А дальше просто выводим содержимое переменных $YaShareUp и $YaShareDown в нужном месте шаблона. То есть в самом начале (до вывода вступительной части $item->introtext) и в самом конце статьи (после вывода основной части $item->fulltext).

Резюме

Таким способом можно вставлять любые модули в любое место шаблона Joomla и выводить их работу на страницу с контентом на фронтенде сайта.

Самый честный хостинг за 20+ лет существования Лунной Базы

Задумываешься о том, чтобы поднять свой сайт в Интернете? Уже пора подумать о том, какой хостинг выбрать?

Лунная База хостится 20+ лет на firstDVS. При этом, мыслей о том, чтобы перебраться на другой хостинг не было. (Но, при этом есть опыт работы с другими вариантами.)

Бывали с firstDVS разные ситуации, но, они бывают на всех хостингах. Единственное, что тут важно понять, - это то, что никто ничего тебе не будет впаривать... Но, и работать за тебя тоже никто не станет. Если в саппорт ответили: «Читайте по ссылке и разбирайтесь сами...» или вообще «Обратитесь за помощью к специалисту», - это повод углубить свои знания в области сайтостроения, а не бежать к тем, что пообещают: «Мы всё чиним и всё делаем за своих клиентов абсолютно бесплатно!» Никто никогда ничего ни за кого "по доброте душевной" не делал, не делает и не будет делать!

Старт! Горячий старт на просторы интернета
Старт! Горячий старт на просторы интернета
Старт! Меню