Чем плох стандартный модуль последние новости в 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 текст, мета данные и прочее.

Если пост тебе помог - поделись с друзьями. Это будет наилучшая поддержка для меня!


Или закинь автору на пиво :-)

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

Комментарии  

Денис Permalink 0 Денис
спасибо за материал.
у меня все отображается, но есть проблема - в ссылке пропало название сайта: tema-nedeli-obsuzhdaem/4-zaderzhalis-na-popravkakh и как результат - страница не отображается

как исправить?
18.03.2014 09:50 Ответить Ответить с цитатой Цитировать
Денис Permalink 0 Денис
спасибо за материал.
у меня все отображается, но есть проблема - в ссылке пропало название сайта: tema-nedeli-obsuzhdaem/4-zaderzhalis-na-popravkakh и как результат - страница не отображается. (сайт как понимаете, называется не tema-nedeli-obsuzhdaem))))

как исправить?
18.03.2014 09:52 Ответить Ответить с цитатой Цитировать
Денис Permalink 0 Денис
ну вот - задал вопрос - нашел ответ - у вас слэш перед выводом ссылки
18.03.2014 10:00 Ответить Ответить с цитатой Цитировать
Ягнёнок Permalink +3 Ягнёнок
Цитирую Денис:
ну вот - задал вопрос - нашел ответ - у вас слэш перед выводом ссылки

Ну да. Без слеша получается вы задаете ссылку на внешний ресурс. А с ним все путем
18.03.2014 10:19 Ответить Ответить с цитатой Цитировать
Анастасия Permalink +1 Анастасия
Здравствуйте,
подскажите, пожалуйста, как бы сделать вывод новостей в модуле горизонтально? CSS что-то не помогает.
19.05.2014 02:41 Ответить Ответить с цитатой Цитировать
Ягнёнок Permalink 0 Ягнёнок
Цитирую Анастасия:
Здравствуйте,
подскажите, пожалуйста, как бы сделать вывод новостей в модуле горизонтально? CSS что-то не помогает.

Всмысле не помогает? Если прописать в css тегу li стиль display: inline; то будет в строку. Либо вообще убрать все теги ul и li и из кода файла default.php
19.05.2014 12:25 Ответить Ответить с цитатой Цитировать
Анастасия Permalink +1 Анастасия
Цитирую Ягнёнок:

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

Уже всё получилось, вот уж действительно - задашь вопрос и тут ж находишь ответ :)
Просто модуль был узкий, и li аккуратно переносились на следующую сроку, что создавало ощущение вертикального списка.
Спасибо.
19.05.2014 17:24 Ответить Ответить с цитатой Цитировать
Video Sved Permalink 0 Video Sved
Не подскажете как добавить в конце последней новости ссылку на архив всех новостей (когда уже имеется такой пункт меню)
27.02.2015 20:52 Ответить Ответить с цитатой Цитировать
JED min Permalink 0 JED min
Цитирую Video Sved:
Не подскажете как добавить в конце последней новости ссылку на архив всех новостей (когда уже имеется такой пункт меню)

я просто добавил в конец шаблона модуля тег a href c указанием ссылки на ваш архив раз уж она постоянная
27.02.2015 21:20 Ответить Ответить с цитатой Цитировать
Александр Permalink 0 Александр
День добрый!
Ситуация: на сайте последние новости и рекламные акции компании разместил в доп. модулях (mod_articles_latest). Есть у меня мысль, что лучше бы все эти вещи разместить при условии, что новости и акции есть (просто пока сайт компании только начинает работу, я бы не хотел оставлять пустые блоки с заголовками). Соответственно, хотелось бы узнать, как можно выведать у джумлы с помощью ПХП в шаблоне число материалов в той или иной категории, чтобы поставить все это дело в if (число_материалов > 0 ) { выводим модуль }.
Джумла последней версии, так, на всякой случай.
27.04.2015 13:02 Ответить Ответить с цитатой Цитировать
denisgaker Permalink +1 denisgaker
Подскажите пожалуйста, а как добавить миниатюры изображений в список?
Я так понимаю, что для этого придется объявлять новую переменную в helper.php?
31.08.2015 12:23 Ответить Ответить с цитатой Цитировать
Мария Permalink 0 Мария
Спасибо за статью!
А можно как-то сделать так, чтобы на странице материала в блоке "Самые читаемые материалы" не выводилась ссылка на этот же материал?
16.11.2015 01:18 Ответить Ответить с цитатой Цитировать
Ягнёнок Permalink 0 Ягнёнок
Цитирую Мария:
Спасибо за статью!
А можно как-то сделать так, чтобы на странице материала в блоке "Самые читаемые материалы" не выводилась ссылка на этот же материал?

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

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


Да. А то получается что материал ссылается сам на себя.
16.11.2015 12:41 Ответить Ответить с цитатой Цитировать
eldenio Permalink 0 eldenio
Спасибо большое за статью!

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

Спасибо большое!
23.06.2016 17:05 Ответить Ответить с цитатой Цитировать
Евгений Евгениев Permalink 0 Евгений Евгениев
Цитирую Мария:
Цитирую Ягнёнок:
Цитирую Мария:
Спасибо за статью!
А можно как-то сделать так, чтобы на странице материала в блоке "Самые читаемые материалы" не выводилась ссылка на этот же материал?

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


Да. А то получается что материал ссылается сам на себя.

Тоже интересует этот вопрос! Решения ни где не удается найти!
22.11.2017 21:54 Ответить Ответить с цитатой Цитировать
Владимир Емельянов Permalink 0 Владимир Емельянов
День добрый. А как сделать, чтобы дата отображалась другим цветом?
10.02.2018 12:50 Ответить Ответить с цитатой Цитировать
Ягнёнок Permalink 0 Ягнёнок
Цитирую Владимир Емельянов:
День добрый. А как сделать, чтобы дата отображалась другим цветом?

php код вывода даты заключить в тег font
10.02.2018 21:05 Ответить Ответить с цитатой Цитировать

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

Ответьте на вопрос:
Сколько будет два плюс шесть буквами?