За шаблон вывода блога категории, как и за вывод материала категории отвечает файл \templates\test\html\com_content\category\blog_item.php, что очень удобно так как не нужно редактировать файлы ядра Joomla.
Наша задача вывести в блоге определенной категории дату создания материала в нужном нам формате.
Воспользуемся имеющимся в Joomla функционалом.
Интересующая нас часть кода файла blog_item.php:
<div class="article-tools"> <div class="article-meta"> <?php if ($this->item->params->get('show_create_date')) : ?> <span class="createdate"> <?php echo JHTML::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2')); ?> </span> <?php endif; ?> ... <?php endif; ?> <?php echo $this->item->event->beforeDisplayContent; ?> <div class="article-content"> |
В первой половине куска в наличии большое условия на параметры публикации, во второй — формирование контейнеров с датой.
Первую часть мы трогать не будем, так как следуя этому условию при публикации только даты создания мы должны ее увидеть и в блоге категории и в отдельном материале.
Во второй части в первую очередь добавим условие на категорию:
<?php if ($this->item->catid == 36) : ?> ... <!-- Блок кода, который должен выполняться только для нашей категории --> <?php endif; ?> |
В данном случае переменная $this->item->catid содержит id категории материала.
Во вторую очередь поменяем использующийся в Joomla по умолчанию формат вывода даты DATE_FORMAT_LC2 на %d %B %Y.
Конечный вариант:
<?php if ($this->item->catid == 36) : ?> <!-- Проверяем категорию материала --> <div class="article-tools"> <div class="article-meta"> <?php if ($this->item->params->get('show_create_date')) : ?> <span class="createdate"> <?php echo JHTML::_('date', $this->item->created, JText::_('%d %B %Y')); ?> </span> <!-- Выводим дату в нужном формате --> <?php endif; ?> ... <?php endif; ?> <?php endif; ?> <!-- Закрываем нашу проверку на категорию --> <?php echo $this->item->event->beforeDisplayContent; ?> <div class="article-content"> |
[update]
Для вывода даты на русском в модуле новостей на Joomla-сайте рекомендую использовать модуль mod_thumbsup. Если под его заголовком вдруг окажется непонятно откуда взявшийся пробел преобразуйте файл \modules\mod_thumbsup\tmpl\default.php в кодировку UTF-8 без BOM например в notepad++ (BOM — Byte Order Mark). Этим самым вы избавитесь от символов п»ї в начале файла, которые некоторые браузеры интерпретируют как пробел.
Скажите, почему у меня дата публикации статьи в блоге отображается верно, а при наж. «детальнее...» стоит сегодняшнее число? Уже все перепробовал...
Скорее всего дата берется из одной таблицы для обоих шаблонов вывода, так что попробуйте сначала посмотреть дату в поле created таблицы jos_content для вашего материала (чтобы понять какая дата правильная) и очистить кэш.
В таблице стоит верная дата создания материала. Почему же отображается другая?.. Не уверен, что правильно вас понял.
Проверить тут достаточно просто. Я бы исходил из того, где дата не совпадает с условно правильной в поле jos_content.created (дата создания материала).
А дальше проверил бы шаблоны вывода этой даты на соответствующих страницах. Для блога категории (файл \components\com_content\views\category\tmpl\blog_item.php):
Для шаблона вывода статьи (файл \components\com_content\views\article\tmpl\default.php):
Некоторые тимплейты для Joomla могут подменять эти шаблоны вывода, что и описано в заметке. В таком случае в папке с тимплейтом будет папка html (со вложенными папками типа com_content) и проверять уже нужно в ней.
Спасибо, но эти файлы я уже смотрел у себя, — «ничего» не нашел. blog_item.php:
item->params->get('show_create_date')) : ?> item->created, JText::_('DATE_FORMAT_LC4')); ?>
default.php:params->get('show_create_date')) : ?> item->created, JText::_('DATE_FORMAT_LC4')); ?>
Таблицы тоже смотрел: т.е. надо сравнить created дату статьи (вкладка обзор ) с датой отображаемой на сайте? Думал, что дело в файлах локализации, но на демо-сайте разработчика та же проблема...default_php: foto1 blog_item.php: foto2
Вобщем дело в следующем:
В шаблоне используются свои шаблоны вывода для большинства стандартных компонентов в т.ч. и для com_content. Дата и в блоге категории (blog_item.php) и в шаблоне одиночной статьи (default.php) выводится одинаково через
<?php echo JHTML::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2')); ?>
. В итоге думаю есть в этом некоторая некорректность и дата на странице статьи выведется правильно при использовании в методе запроса даты из БД свойства article:У меня включен модуль «Последние новости» (mod_latestnews), хочу чтобы кроме названия материала отображалась еще и дата его создания. В файл по адресу: «\modules\mod_latestnews\tmpl\default.php» вставляю строку «item->created, JText::_('DATE_FORMAT_LC2')); ?>» и выводиться текущая дата, а не дата создания материала. Измучался уже в попытках все сделать как надо. Помогите)
Кирилл, огромная Вам благодарность. Я был близко к «разгадке», но сказалось отсутсвие знаний php. А на форумах ничего не нашел (в ответ: молчание). Теперь все работает, спасибо )))
created, JText::_('d.m.Y')); ?>
как я могу обернуть в год??
не уверен, что правильно понял вопрос, но может угадаю: если оставить в аргументе функции только 'Y', то должен вывестись только год
У меня включен модуль «Последние новости» (mod_latestnews), хочу чтобы кроме названия материала отображалась еще и дата его создания. В файл по адресу:
«\modules\mod_latestnews\tmpl\default.php»
вставляю строку:
?php echo JHTML::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2')); ?>
и выводиться текущая дата, а не дата создания материала. Измучался уже в попытках все сделать как надо. Помогите:)