Вывод даты на русском в блоге категории Joomla

Дата на русскомЗа шаблон вывода блога категории, как и за вывод материала категории отвечает файл \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). Этим самым вы избавитесь от символов п»ї в начале файла, которые некоторые браузеры интерпретируют как пробел.

Комментариев: 14

  • 31.05.2010 Vlad:

    Скажите, почему у меня дата публикации статьи в блоге отображается верно, а при наж. «детальнее...» стоит сегодняшнее число? Уже все перепробовал...

  • 31.05.2010 Кирилл:

    Скорее всего дата берется из одной таблицы для обоих шаблонов вывода, так что попробуйте сначала посмотреть дату в поле created таблицы jos_content для вашего материала (чтобы понять какая дата правильная) и очистить кэш.

  • 31.05.2010 Vlad:

    В таблице стоит верная дата создания материала. Почему же отображается другая?.. Не уверен, что правильно вас понял.

  • 31.05.2010 Кирилл:

    Проверить тут достаточно просто. Я бы исходил из того, где дата не совпадает с условно правильной в поле jos_content.created (дата создания материала).

    А дальше проверил бы шаблоны вывода этой даты на соответствующих страницах. Для блога категории (файл \components\com_content\views\category\tmpl\blog_item.php):

    //...
    <?php if ($this->item->params->get('show_create_date')) : ?>
    <tr>
    	<td valign="top" colspan="2" class="createdate">
    		<?php echo JHTML::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2')); ?>
    	</td>
    </tr>
    <?php endif; ?>
    //...

    Для шаблона вывода статьи (файл \components\com_content\views\article\tmpl\default.php):

    //...
    <?php if ($this->params->get('show_create_date')) : ?>
    <tr>
    	<td valign="top" class="createdate">
    		<?php echo JHTML::_('date', $this->article->created, JText::_('DATE_FORMAT_LC2')) ?>
    	</td>
    </tr>
    <?php endif; ?>
    //...

    Некоторые тимплейты для Joomla могут подменять эти шаблоны вывода, что и описано в заметке. В таком случае в папке с тимплейтом будет папка html (со вложенными папками типа com_content) и проверять уже нужно в ней.

  • 01.06.2010 Vlad:

    Спасибо, но эти файлы я уже смотрел у себя, — «ничего» не нашел. 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 дату статьи (вкладка обзор ) с датой отображаемой на сайте? Думал, что дело в файлах локализации, но на демо-сайте разработчика та же проблема...

  • 01.06.2010 Vlad:

    default_php: foto1 blog_item.php: foto2

  • 01.06.2010 Кирилл:

    Вобщем дело в следующем:

    В шаблоне используются свои шаблоны вывода для большинства стандартных компонентов в т.ч. и для com_content. Дата и в блоге категории (blog_item.php) и в шаблоне одиночной статьи (default.php) выводится одинаково через <?php echo JHTML::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2')); ?>. В итоге думаю есть в этом некоторая некорректность и дата на странице статьи выведется правильно при использовании в методе запроса даты из БД свойства article:

    <?php echo JHTML::_('date', $this->article->created, JText::_('DATE_FORMAT_LC3')); ?>
    // и соответственно
    <?php echo JHTML::_('date', $this->article->modified, JText::_('DATE_FORMAT_LC3')); ?>
    • 09.09.2012 Виктор:

      У меня включен модуль «Последние новости» (mod_latestnews), хочу чтобы кроме названия материала отображалась еще и дата его создания. В файл по адресу: «\modules\mod_latestnews\tmpl\default.php» вставляю строку «item->created, JText::_('DATE_FORMAT_LC2')); ?>» и выводиться текущая дата, а не дата создания материала. Измучался уже в попытках все сделать как надо. Помогите)

  • 02.06.2010 Vlad:

    Кирилл, огромная Вам благодарность. Я был близко к «разгадке», но сказалось отсутсвие знаний php. А на форумах ничего не нашел (в ответ: молчание). Теперь все работает, спасибо )))

  • 26.04.2012 Евгений:

    created, JText::_('d.m.Y')); ?>

    как я могу обернуть в год??

    • 27.04.2012 Кирилл:

      не уверен, что правильно понял вопрос, но может угадаю: если оставить в аргументе функции только 'Y', то должен вывестись только год

  • 09.09.2012 Виктор:

    У меня включен модуль «Последние новости» (mod_latestnews), хочу чтобы кроме названия материала отображалась еще и дата его создания. В файл по адресу:

    «\modules\mod_latestnews\tmpl\default.php»

    вставляю строку:

    ?php echo JHTML::_('date', $this->item->created, JText::_('DATE_FORMAT_LC2')); ?>

    и выводиться текущая дата, а не дата создания материала. Измучался уже в попытках все сделать как надо. Помогите:)


Добавление комментария:

 css.php