Посмотрев массу статей в интернете о том, как вставить рекламное объявление Google AdSense я так и не нашёл способа, который напрашивается сам собой. Это ставка рекламного объявления Google AdSense между вступлением и основной частью статьи в Joomla на место разделителя <hr id="system-readmore" />
, чтобы реклама располагалась только при просмотре полного текста статьи между вступительной частью и основным текстом статьи на всех страницах сайта.
Для того, чтобы добиться этого результата, нужно изучить исходники Joomla и найти то место, где происходит вывод статьи пользователю.
База данных Joomla
Для того, чтобы убедиться в том, что это возможно достаточно взглянуть на то, как хранится информация о статье в базе данных.
Статьи Joomla хранятся в таблице _content
и вступительная часть статьи хранится в поле introtext
, а основная часть в поле fulltext
.
Это доказывает то, что где-то в коде происходит слияние этих двух частей для вывода всего текста статьи.
Создаём текстовый файл для хранения текста объявления Google AdSense
Для того, чтобы было
- проще работать с объявлениями Google AdSense,
- вносить изменения, если потребуется,
- не перегружать правками исходные файлы Joomla,
создадим файл с текстом размещения рекламного блока, который выдаёт AdSense для размещения на страницах сайта.
Я разместил этот код в файле GaD-inarticle-up.php
(чтобы было проще понять формат объявления) в папке шаблона Protostar
/templates/protostar/includes/GaD-inarticle-up.php
чтобы проще было найти все файлы с объявлениями и чтобы эти файлы были доступны для внесения изменений из админки Joomla в файлах шаблона, и не приходилось использовать другие инструменты для доступа к ним.
Сам файл GaD-inarticle-up.php
содержит только тот код, который выдаёт AdSense, хотя в него можно также поместить HTML-разметку. Например, чтобы отцентрировать выдачу рекламного объявления.
Правка файла view.html.php
движка Joomla
Практически всё готово! Осталось только вставить две строчки в один файл Joomla. Файл находится тут:
/components/com_content/views/article/view.html.php
Вносить изменения нужно в районе 168-й строки:
Было:
// 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')
{
$item->text = $item->introtext . ' ' . $item->fulltext;
}
elseif ($item->fulltext)
{
$item->text = $item->fulltext;
}
Стало:
// читаем код рекламного блока в переменную $AdSense
$AdSense = file_get_contents('./templates/protostar/includes/GaD-inarticle-up.php');
// 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')
{
$item->text = $item->introtext . $AdSense . $item->fulltext; // выводим переменную $AdSense сразу после introtext и до fulltext
}
elseif ($item->fulltext)
{
$item->text = $item->fulltext;
}
else
Пояснения изменений в коде Joomla для вставки объявления Google AdSense во всех статьях
Как видно в коде:
добавлена строка (165) для того, чтобы прочитать код AdSense из файла GaD-inarticle-up.php
в переменную $AdSense
;
а в строке 171 (бывшая 168-я) мы вставляем этот код в виде переменной $AdSense
между introtext
и fulltext
.
Всё! Работает! =D
P.S. Продолжение! Новая статья: «Вставка рекламного объявления Google AdSense сразу после статьи в Joomla»
Заберите ссылку на статью к себе, чтобы потом легко её найти!
Раз уж досюда дочитали, то может может есть желание рассказать об этом месте своим друзьям, знакомым и просто мимо проходящим?
Не надо себя сдерживать! ;)