Замена числовой составляющей даты словом — различия между версиями

Материал из Umicms
Перейти к:навигация, поиск
(Новая страница: «Задание: нам требуется чтобы дата публикации новости отражалась не в формате 21.12.2012, а, нап…»)
 
 
(не показано 7 промежуточных версий 3 участников)
Строка 1: Строка 1:
Задание: нам требуется чтобы дата публикации новости отражалась не в формате 21.12.2012, а, например, в формате
+
'''Актуально для версии 18.'''
"21 декабря".
 
  
Решение рассматривается для шаблона современный интернет магазин (demodizzy) на версии 2.8.6
+
'''Задача:''' отображать дату публикации новости не в формате 21.12.2012, а, например, в формате "21 декабря".
  
Для начала, поместим следующий код в файл classes/modules/custom.php  
+
'''Решение''' рассматривается для шаблона "Интернет-магазин" (demodizzy).
 +
 
 +
Поместим следующий код в файл classes/modules/custom.php или classes/components/custom.php, в зависимости от используемой реализации модулей:
 
<source lang="php">
 
<source lang="php">
 
                 public function getDay($timestamp) {
 
                 public function getDay($timestamp) {
Строка 40: Строка 41:
 
}
 
}
 
</source>
 
</source>
Теперь отредактируем шаблон /xsltTpls/modules/news/news-list.xsl
+
Теперь отредактируем шаблон /xslt/modules/news/news-list.xsl
  
 
Содержимое  
 
Содержимое  
Строка 54: Строка 55:
 
<xsl:value-of select="document(concat('udata://custom/getMonth/', @publish_time, '/'))" />
 
<xsl:value-of select="document(concat('udata://custom/getMonth/', @publish_time, '/'))" />
 
</source>
 
</source>
 +
 +
[[Категория:Написание кастомных макросов]][[Категория:Модуль Новости]]

Текущая версия на 10:51, 1 июня 2018

Актуально для версии 18.

Задача: отображать дату публикации новости не в формате 21.12.2012, а, например, в формате "21 декабря".

Решение рассматривается для шаблона "Интернет-магазин" (demodizzy).

Поместим следующий код в файл classes/modules/custom.php или classes/components/custom.php, в зависимости от используемой реализации модулей:

                public function getDay($timestamp) {
	        $pre_lang = cmsController::getInstance()->getModule("content")->pre_lang;
		if ($pre_lang != "" && $pre_lang != "/ru") {
			return date("F", $timestamp);
		}
		
		$d = date("d", $timestamp);
		
		return "$d ";
	}
		public function getMonth($timestamp) {
		$pre_lang = cmsController::getInstance()->getModule("content")->pre_lang;
		if ($pre_lang != "" && $pre_lang != "/ru") {
			return date("F", $timestamp);
		}
		$m = date("m", $timestamp);
		
		switch ($m) {
			case "01": return "января";
			case "02": return "февраля";
			case "03": return "марта";
			case "04": return "апреля";
			case "05": return "мая";
			case "06": return "июня";
			case "07": return "июля";
			case "08": return "августа";
			case "09": return "сентября";
			case "10": return "октября";
			case "11": return "ноября";
			case "12": return "декабря";
		}		
		return "";
	}

Теперь отредактируем шаблон /xslt/modules/news/news-list.xsl

Содержимое

<div class="date" umi:field-name="publish_time" umi:empty="&empty-page-date;"></div>

нужно будет заменить на

<xsl:value-of select="document(concat('udata://custom/getDay/', @publish_time, '/'))" />
<xsl:value-of select="document(concat('udata://custom/getMonth/', @publish_time, '/'))" />