Товар успешно добавлен в корзину!
Блог Кодинг Портфолио Я

Вычисление количества дней до завершения публикации товара

Кодинг HostCMS Интернет-магазин

 Решение для вычисления количества дней до даты завершения публикации товара. Также можно применить для проверки актуальности товара. Решение помещает в xml информацию о количестве дней до даты завершения публикации товара.

 

Пример использования

 

 Нижеприведенный способ не самый лучший.  James Kotov предложил более простое и универсальное решение

Установка:

  1. В ТДС "Интернет-магазин" перед вызовом метода $shop->ShowShop помещаем код для вычисления количества дней в каталоге. 
  2. А также перед вызовом $shop->ShowItem для вычисления количества дней для одного товара

Использование:

В шаблоне товара <xsl:template match="item"> добавляем 2 переменные

 

 <xsl:variable name="item_id" select="@id"/>

 <xsl:variable name="days" select="/shop/items_days/item_days[@id=$item_id]/value"/>

 

 Переменная days равна количеству дней до начала актуальности товара.

 Если товар еще не поступил в продажу или дата окончания актуальности товара не установлена  days будет равен 999 

 

Для HostCMS v.5 

Код для вычисления количества дней в каталоге.

//->// КАД: Вычисляем количество дней (0.3)
		$itParam = array();
		if ( $param['current_group_id'] )  $itParam['shop_groups_id'] = $param['current_group_id'];
		if (isset($_GET['sallers'])) $itParam['shop_sallers_id'] = $_GET['sallers'];

		$items = array();
		$resource = $shop->GetItemByParam($itParam);

		while($row = mysql_fetch_assoc($resource))
		{
			$days = floor((strtotime($row['shop_items_catalog_putend_date']) - strtotime("now"))/86400)+1;
			$daysPutOff = floor((strtotime($row['shop_items_catalog_putoff_date']) - strtotime("now"))/86400)+1;

			if ($days < -735000 or $daysPutOff > 0)
			$days = 999;
			if ( $days > 0)
			{
				$items[$row['shop_items_catalog_item_id']] = $days ;
			}
		}
		
		$prop = array(); 
		$prop_arr = array();
		$props = array();
		
		foreach($items as $key => $value) 
		{ 
			$prop['attribute']=array('id' => $key); 
			$prop['xml_name'] = 'item_days'; 
			$prop['value'] = array(0 => array('xml_name' => 'value', 'value' => $value));
			$props[] = $prop; 
		}
			
		$prop_arr[0]['xml_name'] = 'items_days'; 
		$prop_arr[0]['value'] = $props;

		$ExternalXml = new ExternalXml(); 
		$newxml = $ExternalXml->GenXml($prop_arr, 1); 
		$param['external_xml'] = $newxml;
		
//<-// КАД: Вычисляем количество дней

 

Код для вычисления количества дней для одного товара

//->// КАД: Вычисляем количество дней (0.3-i)
		
		$itParam = array();
		if ( $param['current_group_id'] )  $itParam['shop_groups_id'] = $param['current_group_id'];
		if (isset($_GET['sallers'])) $itParam['shop_sallers_id'] = $_GET['sallers'];

		$items = array();
		
		$row = $shop->GetItem($GLOBALS['shop_item_path']['item']);

		$days = floor((strtotime($row['shop_items_catalog_putend_date']) - strtotime("now"))/86400)+1;
		$daysPutOff = floor((strtotime($row['shop_items_catalog_putoff_date']) - strtotime("now"))/86400)+1;

		if ($days < -735000 or $daysPutOff > 0)
		{
			$days = 999;
		}
			
		if ( $days > 0)
		{
			$items[$row['shop_items_catalog_item_id']] = $days ;

			$prop_arr = array();
			
			$prop_arr[0]['xml_name'] = 'item_days'; 
			$prop_arr[0]['value'] = $days;

			$ExternalXml = new ExternalXml(); 
			$newxml = $ExternalXml->GenXml($prop_arr, 1); 
			$param['external_xml'] = $newxml;
		}
		
//<-// КАД: Вычисляем количество дней		

 


10.01.2013, 3476 просмотров.

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

Имя
E-mail
Комментарий