Дата в смарти

Нужно вывести сокращенное название месяца, но работает только полное:

{date_format date=$oTopic->getDateAdd() format="F"}


Пробовал:

{date_format date=$oTopic->getDateAdd() format="f"}
{date_format date=$oTopic->getDateAdd() format="b"}


Не работает. Можно ли? Придумал только скрывать div-ом часть месяца, но это не правильно как-то.

13 комментариев

avatar
А почему бы не сократить названия месяцев файле russian.php?
avatar
Да, можно, но мне надо чтобы в других местах месяц был полный.
avatar
Недавно столкнулся с той же проблемой, в футере топика нужно было больше места, сначала решил использовать сокращения в названиях месяцев, но все равно инфа «съезжала» вниз, решил сделать так:

avatar
У меня такое не прокатит. Надо:



Давно делал, div-ом перекрывал, сейчас хочу сделать правильней, если это конечно возможно без лишних заморочек.
avatar
Согласен, в этот дизайне перекрывать дивом как-то не то. Ну может кто-нибудь еще посоветует решение. Если нет, можно попробовать «поиграть» с размерами шрифта месяцев, уменьшить немного.
avatar
Перекрывать тоже можно, просто месяц надо сделать например абсолютным позиционирование, и поверх ложить div. Спасибо, надеюсь подскажет кто, наверняка можно сокращать.
avatar
Вот так можно:
В файле engine/modules/viewer/plugs/function.date_format.php в конце заменяем следующим кодом:
/** * Если не найден индекс склонения, берем склонене по умолчанию. * Если индекс по умолчанию также не определен, берем первое значение в массиве. */ if(is_array($sMonth)) { $sMonth = isset($sMonth[$iDeclination]) ? $sMonth[$iDeclination] : $sMonth[$iDeclinationDefault]; } $aShortMonth = $oEngine->Lang_Get('month_short_array'); $sShortMonth = isset($aShortMonth[$iMonth]) ? $aShortMonth[$iMonth] : ""; $sFormat=preg_replace("~(?<!\\\\)F~U",preg_replace('~(\w{1})~u','\\\${1}',$sMonth),$sFormat); $sFormat=preg_replace("~(?<!\\\\)M~U",preg_replace('~(\w{1})~u','\\\${1}',$sShortMonth),$sFormat); return date($sFormat,$iDate);

В языковом файле надо задать вот такой массив:
	'month_short_array' => array(
		1 => 'янв.',
		2 => 'фев.',
		3 => 'мар.',
		4 => 'апр.',
		5 => 'май',
		6 => 'июнь',
		7 => 'июль',
		8 => 'авг',
		9 => 'сент.',
		10 => 'окт.',
		11 => 'нояб.',
		12 => 'дек.',
	),


А использовать так:
{date_format date=$oTopic->getDateAdd() format="j M Y"}
avatar
Круто, благодарю, работает!
avatar
Сорри за наглость, небольшой вопрос, не могу разобраться. Как через плагин сделать Inherits функции smarty_function_date_format или Delegate самого function.date_format.php? Как-то так вызвать?

class PluginName extends Plugin {

	protected $aInherits=array(
		'module' => array(
			'???' => '???',
		),
	);
	/**
	 * Активация плагина	 
	 */
	public function Activate() {		
		return true;
	}
	
	/**
	 * Инициализация плагина
	 */
	public function Init() {
		//
	}
}
avatar
Это делается так:
public function Init()
    {
        $this->Viewer_GetSmartyObject()->addPluginsDir(dirname(__FILE__) . '/classes/modules/viewer/plugs');
    }

И соответственно в папку myplugin/classes/modules/viewer/plugs/ ставишь файл function.date_format.php.

Не уверен что это сработает в случае для замены уже существующего плагина, но для создания нового работает. Я это использовал в TimeToRead.
avatar
Неа, не переопределяет к сожалению, игнорирует.
avatar
Попробуй изменить имя смарти-плагина. Например, на date_format_short.
avatar
Не работает.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.