Чем плох стандартный модуль последние новости в Joomla 3 (mod_articles_latest)? Правильно, тем что он выводит только название материала. А как же быть, когда в этом модуле нужно вывести дату создания или публикации материала и категорию в которой он опубликован, а может и еще чего полезного? Я решил не искать сторонний модуль, а просто подправить шаблон вывода стандартного модуля, тем более что его стандартные возможности, как оказалось, это позволяют.

Сразу оговорюсь, что это не хак. Так как вы просто настраиваете формат вывода данного модуля по вашему шаблону. Для начала в папке /templates/вашшаблон/ находим папку html. Если папки с таким названием нет - то создаем. В папке html создаем папку с названием mod_articles_latest. Копируем файл default.php из папки /modules/mod_articles_latest/tmpl/ в только что созданную папку /templates/вашшаблон/html/mod_articles_latest/, заодно можете скопировать и файл index.html для безопасности. 

Теперь Joomla будет в первую очередь проверять как ей отображать модуль. Если существует папка с названием модуля в папке html вашего шаблона и в ней присутствует файл отображения (в нашем случае default.php) то обрабатываться будет он. Если же отсутствует - стандартный в папке /modules. Таким образом даже после обновления Joomla ваши изменения не пропадут, так как они заданы в папке вашего шаблона.

Стандартный файл default.php у модуля последние новости выглядит следующим образом:

<ul class="latestnews<?php echo $moduleclass_sfx; ?>">
<?php foreach ($list as $item) :  ?>
	<li>
		<a href="/<?php echo $item->link; ?>">
			<?php echo $item->title; ?></a>
	</li>
<?php endforeach; ?>
</ul>

Нумерация строк сохранена. В данном случае все, что он умеет делать это отображать название материала ($item->title) и ссылку на него ($item->link). Давайте сделаем так, чтобы модуль отображал также дату публикации материала и категорию в которой он находится. Делается это все просто, тем более что стандартный helper модуля данные в массив $list уже получил.

Приводим наш модуль к следующему виду:

<ul class="latestnews<?php echo $moduleclass_sfx; ?>">
<?php foreach ($list as $item) :  ?>
	<li>
		<a href="/<?php echo $item->link; ?>">
			<?php echo $item->title; ?></a><br>
			<?php echo JHtml::_('date', $item->publish_up, JText::_('DATE_FORMAT_LC1')); ?> <?php echo "в рубрике ";?> <?php echo $item->category_title; ?>
	</li>
<?php endforeach; ?>
</ul>

После данных изменений модуль начал отображать под названием материала также дату его публикации ($item->publish_up) в формате день.месяц.год все цифрами (DATE_FORMAT_LC1) и также наименование категории ($item->category_title).

Формат вывода даты можно менять, если заменить цифру после символов LC. Возможны разные варианты с 1 до 6. Попробуйте, кому какой формат понравится. Работу модуля в этом виде можно увидеть у меня в левой колонке под названием Последние поступления.

Что еще можно вывести? Вот не полный список конечно, но может оказаться полезным.

1. Отображаем количество просмотров материала. Для это вставляем данный код в нужное вам место:

<?php echo $item->hits; ?>

Если хотите чтобы количество просмотров отображалось при наведении на ссылку, то можно сделать так:

<a title="просмотров: <?php echo $item->hits; ?>" href="/<?php echo $item->link; ?>">
			<?php echo $item->title; ?></a>

 2. Отображение даты создания, а не публикации:

<?php echo JHtml::_('date', $item->created, JText::_('DATE_FORMAT_LC1')); ?>

 3. Отображение даты последнего изменения материала:

<?php echo JHtml::_('date', $item->modified, JText::_('DATE_FORMAT_LC1')); ?>

Главное, чтобы данные строки добавлялись внутри тегов li пока работает оператор foreach. Думаю общие принципы понятны, для того чтобы вывести, что-то специфическое рекомендую глянуть mysql таблицы в базе данных сайта, особенно таблицу _content. Аналогичным методом можно в принципе вывести любые данные из данной таблицы относительно обрабатываемого материала, такие как его id, alias, intro текст, мета данные и прочее.

Комментарии  

0 #15 eldenio 23.06.2016 17:05
Спасибо большое за статью!

Подскажите пожалуйста, а как добавить в конец модуля ссылку на ту категорию, из которой он берет последние новости.
Т.е. у меня будет несколько модулей под разные категории, и в каждом хочется сделать снизу ссылку на саму категорию. Но категории будут разные, т.е. добавить ссылку a href не подходит. Плохо знаю синтаксис joomla, не могу понять, как мне прописать, чтобы ссылка уводила на ту категорию, которая выбрана в настройках модуля, чтобы брать оттуда последние новости.

Спасибо большое!
Цитировать
+1 #14 Мария 16.11.2015 12:41
Цитирую Ягнёнок:
Цитирую Мария:
Спасибо за статью!
А можно как-то сделать так, чтобы на странице материала в блоке "Самые читаемые материалы" не выводилась ссылка на этот же материал?

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


Да. А то получается что материал ссылается сам на себя.
Цитировать
0 #13 Ягнёнок 16.11.2015 12:26
Цитирую Мария:
Спасибо за статью!
А можно как-то сделать так, чтобы на странице материала в блоке "Самые читаемые материалы" не выводилась ссылка на этот же материал?

То есть не отображать в списке ссылку на статью на странице с которой отображается данный модуль?
Цитировать
0 #12 Мария 16.11.2015 01:18
Спасибо за статью!
А можно как-то сделать так, чтобы на странице материала в блоке "Самые читаемые материалы" не выводилась ссылка на этот же материал?
Цитировать
+1 #11 denisgaker 31.08.2015 12:23
Подскажите пожалуйста, а как добавить миниатюры изображений в список?
Я так понимаю, что для этого придется объявлять новую переменную в helper.php?
Цитировать
0 #10 Александр 27.04.2015 13:02
День добрый!
Ситуация: на сайте последние новости и рекламные акции компании разместил в доп. модулях (mod_articles_l atest). Есть у меня мысль, что лучше бы все эти вещи разместить при условии, что новости и акции есть (просто пока сайт компании только начинает работу, я бы не хотел оставлять пустые блоки с заголовками). Соответственно, хотелось бы узнать, как можно выведать у джумлы с помощью ПХП в шаблоне число материалов в той или иной категории, чтобы поставить все это дело в if (число_материал ов > 0 ) { выводим модуль }.
Джумла последней версии, так, на всякой случай.
Цитировать
0 #9 JED min 27.02.2015 21:20
Цитирую Video Sved:
Не подскажете как добавить в конце последней новости ссылку на архив всех новостей (когда уже имеется такой пункт меню)

я просто добавил в конец шаблона модуля тег a href c указанием ссылки на ваш архив раз уж она постоянная
Цитировать
0 #8 Video Sved 27.02.2015 20:52
Не подскажете как добавить в конце последней новости ссылку на архив всех новостей (когда уже имеется такой пункт меню)
Цитировать
+1 #7 Анастасия 19.05.2014 17:24
Цитирую Ягнёнок:

Всмысле не помогает?

Уже всё получилось, вот уж действительно - задашь вопрос и тут ж находишь ответ :)
Просто модуль был узкий, и li аккуратно переносились на следующую сроку, что создавало ощущение вертикального списка.
Спасибо.
Цитировать
0 #6 Ягнёнок 19.05.2014 12:25
Цитирую Анастасия:
Здравствуйте,
подскажите, пожалуйста, как бы сделать вывод новостей в модуле горизонтально? CSS что-то не помогает.

Всмысле не помогает? Если прописать в css тегу li стиль display: inline; то будет в строку. Либо вообще убрать все теги ul и li и из кода файла default.php
Цитировать

Добавить комментарий

Вы можете оставить комментарий авторизовавшись через любую из представленных социальных сетей ниже:

                 


Защитный код
Обновить