Перейти к содержанию
Официальный форум поддержки Simpla

Вывод Свойств Товара На Главной И В Каталоге


Рекомендуемые сообщения

Добрый день! Подскажите как вытащить свойства у товара на главной  и в каталоге. По форуму рыскал, но что то ничего на нашел. Есть только запись что нужно править View и ProductsView

Ссылка на сообщение
Поделиться на другие сайты

/view/ProductsView.php

 

заменить

$properties = $this->features->get_options(array('product_id'=>$products_ids));
foreach($properties as $property)
    $products[$property->product_id]->options[] = $property;
*/

на

/*
$properties = $this->features->get_options(array('product_id'=>$products_ids));
foreach($properties as $property)
    $products[$property->product_id]->options[] = $property;
*/

 

Вот и все. Теперь в шаблон products.tpl в нужное место пишем:

{if $product->options}
<!-- Характеристики товара -->
<ul class="features">
{foreach $product->options as $f}
<li>
	<label>{$f->name}</label>
	<span>{$f->value}</span>
</li>
{/foreach}
</ul>
<!-- Характеристики товара (The End)-->
{/if}

 

Вывод характеристик (свойств) товара на главную страницу

 

 

 

 

1. В блок Рекомендуемые товары:

Открываем на фтп файл /view/View.php, находим функцию get_featured_products_plugin и в нее вставляем:

 

$properties = $this->features->get_product_options($products_ids);
foreach($properties as $property) {
$products[$property->product_id]->options[] = $property;
}

Я вставил на 208 строку.

 

 

 

2. В блок Новинки:

Открываем тот же файл (/view/View.php), находим функцию get_new_products_plugin и в нее вставляем:

$properties = $this->features->get_product_options($products_ids);
foreach($properties as $property) {
$products[$property->product_id]->options[] = $property;
}

Я вставил на 254 строку (без учета вставки кода в рекомендуемые товары).

 

 

 

3. В блок Акционные товары:

Все тот же файл /view/View.php, находим функцию get_discounted_products_plugin, вставляем в нее код:

$properties = $this->features->get_product_options($products_ids);
foreach($properties as $property) {
$products[$property->product_id]->options[] = $property;
}

Я вставил на 299 строку кода (без учета 2-х предыдущих правок).

 

В шаблоне main.tpl в нужное место (в блок Рекомендуемые товары, Новинки или Акционные товары, а можно сразу во все) добавляем следующий код:

 

 

{if $product->options}
<!-- Характеристики товара -->
<ul class="features">
{foreach $product->options as $f}
<li>
    <label>{$f->name}</label>
    <span>{$f->value}</span>
</li>
{/foreach}
</ul>
<!-- Характеристики товара (The End)-->
{/if}


А если хотите выбирать свойства, которые выводить у товара, а которые нет прямо из админки - пишите, есть такая доработка, 20$.

Изменено пользователем smartycms
Ссылка на сообщение
Поделиться на другие сайты

/view/ProductsView.php

 

заменить

$properties = $this->features->get_options(array('product_id'=>$products_ids));
foreach($properties as $property)
    $products[$property->product_id]->options[] = $property;
*/

на

/*
$properties = $this->features->get_options(array('product_id'=>$products_ids));
foreach($properties as $property)
    $products[$property->product_id]->options[] = $property;
*/

 

Вот и все. Теперь в шаблон products.tpl в нужное место пишем:

{if $product->options}
<!-- Характеристики товара -->
<ul class="features">
{foreach $product->options as $f}
<li>
	<label>{$f->name}</label>
	<span>{$f->value}</span>
</li>
{/foreach}
</ul>
<!-- Характеристики товара (The End)-->
{/if}

 

Вывод характеристик (свойств) товара на главную страницу

 

 

 

 

1. В блок Рекомендуемые товары:

Открываем на фтп файл /view/View.php, находим функцию get_featured_products_plugin и в нее вставляем:

 

$properties = $this->features->get_product_options($products_ids);
foreach($properties as $property) {
$products[$property->product_id]->options[] = $property;
}

Я вставил на 208 строку.

 

 

 

2. В блок Новинки:

Открываем тот же файл (/view/View.php), находим функцию get_new_products_plugin и в нее вставляем:

$properties = $this->features->get_product_options($products_ids);
foreach($properties as $property) {
$products[$property->product_id]->options[] = $property;
}

Я вставил на 254 строку (без учета вставки кода в рекомендуемые товары).

 

 

 

3. В блок Акционные товары:

Все тот же файл /view/View.php, находим функцию get_discounted_products_plugin, вставляем в нее код:

$properties = $this->features->get_product_options($products_ids);
foreach($properties as $property) {
$products[$property->product_id]->options[] = $property;
}

Я вставил на 299 строку кода (без учета 2-х предыдущих правок).

 

В шаблоне main.tpl в нужное место (в блок Рекомендуемые товары, Новинки или Акционные товары, а можно сразу во все) добавляем следующий код:

 

 

{if $product->options}
<!-- Характеристики товара -->
<ul class="features">
{foreach $product->options as $f}
<li>
    <label>{$f->name}</label>
    <span>{$f->value}</span>
</li>
{/foreach}
</ul>
<!-- Характеристики товара (The End)-->
{/if}

 

А если хотите выбирать свойства, которые выводить у товара, а которые нет прямо из админки - пишите, есть такая доработка, 20$.

 

В productsview данная строка закомментированна, но свойства не выводятся. На главной тоже не выводятся. Стандартная симпла 2.3.7

Изменено пользователем Foх
Ссылка на сообщение
Поделиться на другие сайты

/view/ProductsView.php

 

 

А если хотите выбирать свойства, которые выводить у товара, а которые нет прямо из админки - пишите, есть такая доработка, 20$.

 

вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248

 

а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-же

Ссылка на сообщение
Поделиться на другие сайты

вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248

 

а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-же

 

Да с productsview наоборот, закомментированную заменить.

А копипастил не с топика, а с сайта webkab

Ссылка на сообщение
Поделиться на другие сайты

вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248

 

а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-же

Спасибо большое Мишаня.

Ссылка на сообщение
Поделиться на другие сайты

вот нахрена было копипастить решение для главной из топика http://forum.simplacms.ru/topic/9252-вывод-характеристик-в-maintpl/?p=69248

 

а решение для каталога вообще не правильное. там как было закомментирована часть кода отвечающая за свойства так и осталась. меняем закомментированную часть кода на такую-же

а свойства связанных (похожих товаров) можно вывести в product.tpl??

Ссылка на сообщение
Поделиться на другие сайты

а свойства связанных (похожих товаров) можно вывести в product.tpl??

 

ну почему не пользуетесь поиском. есть же http://forum.simplacms.ru/topic/12033-%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4-%D1%81%D0%B2%D0%BE%D0%B9%D1%81%D1%82%D0%B2-%D0%B2-%D1%81%D0%B2%D1%8F%D0%B7%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%B0%D1%85/

Изменено пользователем mishanya
Ссылка на сообщение
Поделиться на другие сайты

Спасибо! Искал, но видно где то пропустил.

Ссылка на сообщение
Поделиться на другие сайты
  • 5 месяцев спустя...

Данное решение (вывод свойств на главной) не работает на версии 2.3.8.

Изменено пользователем artbe
Ссылка на сообщение
Поделиться на другие сайты

Данное решение (вывод свойств на главной) не работает на версии 2.3.8.

 

Все работает, проверяйте внимательно.

Ссылка на сообщение
Поделиться на другие сайты

Все работает, проверяйте внимательно.

 

Проверял перед написание предыдущего сообщения. На чистой simpla без доработок.

 

Свойства на главной странице не выводятся

Изменено пользователем artbe
Ссылка на сообщение
Поделиться на другие сайты

покажите view/View.php

 

 

<?PHP

/**
 * Simpla CMS
 *
 * @copyright 	2011 Denis Pikusov
 * @link 		http://simp.la
 * @author 		Denis Pikusov
 *
 * Базовый класс для всех View
 *
 */

require_once('api/Simpla.php');

class View extends Simpla
{
	/* Смысл класса в доступности следующих переменных в любом View */
	public $currency;
	public $currencies;
	public $user;
	public $group;
	public $page;
	
	/* Класс View похож на синглтон, храним статически его инстанс */
	private static $view_instance;
	
	public function __construct()
	{
		parent::__construct();
		
		// Если инстанс класса уже существует - просто используем уже существующие переменные
		if(self::$view_instance)
		{
			$this->currency     = &self::$view_instance->currency;
			$this->currencies   = &self::$view_instance->currencies;
			$this->user         = &self::$view_instance->user;
			$this->group        = &self::$view_instance->group;	
			$this->page         = &self::$view_instance->page;	
		}
		else
		{
			// Сохраняем свой инстанс в статической переменной,
			// чтобы в следующий раз использовать его
			self::$view_instance = $this;

			// Все валюты
			$this->currencies = $this->money->get_currencies(array('enabled'=>1));
	
			// Выбор текущей валюты
			if($currency_id = $this->request->get('currency_id', 'integer'))
			{
				$_SESSION['currency_id'] = $currency_id;
				header("Location: ".$this->request->url(array('currency_id'=>null)));
			}
			
			// Берем валюту из сессии
			if(isset($_SESSION['currency_id']))
				$this->currency = $this->money->get_currency($_SESSION['currency_id']);
			// Или первую из списка
			else
				$this->currency = reset($this->currencies);
	
			// Пользователь, если залогинен
			if(isset($_SESSION['user_id']))
			{
				$u = $this->users->get_user(intval($_SESSION['user_id']));
				if($u && $u->enabled)
				{
					$this->user = $u;
					$this->group = $this->users->get_group($this->user->group_id);
				
				}
			}

			// Текущая страница (если есть)
			$subdir = substr(dirname(dirname(__FILE__)), strlen($_SERVER['DOCUMENT_ROOT']));
			$page_url = trim(substr($_SERVER['REQUEST_URI'], strlen($subdir)),"/");
			if(strpos($page_url, '?') !== false)
				$page_url = substr($page_url, 0, strpos($page_url, '?'));
			$this->page = $this->pages->get_page((string)$page_url);
			$this->design->assign('page', $this->page);		
			
			// Передаем в дизайн то, что может понадобиться в нем
			$this->design->assign('currencies',	$this->currencies);
			$this->design->assign('currency',	$this->currency);
			$this->design->assign('user',       $this->user);
			$this->design->assign('group',      $this->group);
			
			$this->design->assign('config',		$this->config);
			$this->design->assign('settings',	$this->settings);

			// Настраиваем плагины для смарти
			$this->design->smarty->registerPlugin("function", "get_posts",					array($this, 'get_posts_plugin'));
			$this->design->smarty->registerPlugin("function", "get_brands",					array($this, 'get_brands_plugin'));
			$this->design->smarty->registerPlugin("function", "get_browsed_products",		array($this, 'get_browsed_products'));
			$this->design->smarty->registerPlugin("function", "get_featured_products",		array($this, 'get_featured_products_plugin'));
			$this->design->smarty->registerPlugin("function", "get_new_products",			array($this, 'get_new_products_plugin'));
			$this->design->smarty->registerPlugin("function", "get_discounted_products",	array($this, 'get_discounted_products_plugin'));
		}
	}
		
	/**
	 *
	 * Отображение
	 *
	 */
	function fetch()
	{
		return false;
	}
	
	/**
	 *
	 * Плагины для смарти
	 *
	 */	
	public function get_posts_plugin($params, &$smarty)
	{
		if(!isset($params['visible']))
			$params['visible'] = 1;
		if(!empty($params['var']))
			$smarty->assign($params['var'], $this->blog->get_posts($params));
	}

	public function get_brands_plugin($params, &$smarty)
	{
		if(!isset($params['visible']))
			$params['visible'] = 1;
		if(!empty($params['var']))
			$smarty->assign($params['var'], $this->brands->get_brands($params));
	}
	
	public function get_browsed_products($params, &$smarty)
	{
		if(!empty($_COOKIE['browsed_products']))
		{
			$browsed_products_ids = explode(',', $_COOKIE['browsed_products']);
			$browsed_products_ids = array_reverse($browsed_products_ids);
			if(isset($params['limit']))
				$browsed_products_ids = array_slice($browsed_products_ids, 0, $params['limit']);

			$products = array();
			foreach($this->products->get_products(array('id'=>$browsed_products_ids, 'visible'=>1)) as $p)
				$products[$p->id] = $p;
			
			$browsed_products_images = $this->products->get_images(array('product_id'=>$browsed_products_ids));
			foreach($browsed_products_images as $browsed_product_image)
				if(isset($products[$browsed_product_image->product_id]))
					$products[$browsed_product_image->product_id]->images[] = $browsed_product_image;
			
			foreach($browsed_products_ids as $id)
			{	
				if(isset($products[$id]))
				{
					if(isset($products[$id]->images[0]))
						$products[$id]->image = $products[$id]->images[0];
					$result[] = $products[$id];
				}
			}
			$smarty->assign($params['var'], $result);
		}
	}
	
	
	public function get_featured_products_plugin($params, &$smarty)
	{
		if(!isset($params['visible']))
			$params['visible'] = 1;
		$params['featured'] = 1;
		if(!empty($params['var']))
		{
			foreach($this->products->get_products($params) as $p)
				$products[$p->id] = $p;

			if(!empty($products))
			{
				// id выбраных товаров
				$products_ids = array_keys($products);
		
				// Выбираем варианты товаров
				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
				
				// Для каждого варианта
				foreach($variants as &$variant)
				{
					// добавляем вариант в соответствующий товар
					$products[$variant->product_id]->variants[] = $variant;
				}
				
				// Выбираем изображения товаров
				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[] = $image;
	
				foreach($products as &$product)
				{
					if(isset($product->variants[0]))
						$product->variant = $product->variants[0];
					if(isset($product->images[0]))
						$product->image = $product->images[0];
				}				
			}
			
			$properties = $this->features->get_product_options($products_ids);
				foreach($properties as $property) {
				$products[$property->product_id]->options[] = $property;
			}

			$smarty->assign($params['var'], $products);
			
		}
	}
		
	
	public function get_new_products_plugin($params, &$smarty)
	{
		if(!isset($params['visible']))
			$params['visible'] = 1;
		if(!isset($params['sort']))
			$params['sort'] = 'created';
		if(!empty($params['var']))
		{
			foreach($this->products->get_products($params) as $p)
				$products[$p->id] = $p;

			if(!empty($products))
			{
				// id выбраных товаров
				$products_ids = array_keys($products);
		
				// Выбираем варианты товаров
				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
				
				// Для каждого варианта
				foreach($variants as &$variant)
				{
					// добавляем вариант в соответствующий товар
					$products[$variant->product_id]->variants[] = $variant;
				}
				
				// Выбираем изображения товаров
				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[] = $image;
	
				foreach($products as &$product)
				{
					if(isset($product->variants[0]))
						$product->variant = $product->variants[0];
					if(isset($product->images[0]))
						$product->image = $product->images[0];
				}				
			}
			
			$properties = $this->features->get_product_options($products_ids);
				foreach($properties as $property) {
				$products[$property->product_id]->options[] = $property;
			}

			$smarty->assign($params['var'], $products);
			
		}
	}
	
	
	public function get_discounted_products_plugin($params, &$smarty)
	{
		if(!isset($params['visible']))
			$params['visible'] = 1;
		$params['discounted'] = 1;
		if(!empty($params['var']))
		{
			foreach($this->products->get_products($params) as $p)
				$products[$p->id] = $p;

			if(!empty($products))
			{
				// id выбраных товаров
				$products_ids = array_keys($products);
		
				// Выбираем варианты товаров
				$variants = $this->variants->get_variants(array('product_id'=>$products_ids, 'in_stock'=>true));
				
				// Для каждого варианта
				foreach($variants as &$variant)
				{
					// добавляем вариант в соответствующий товар
					$products[$variant->product_id]->variants[] = $variant;
				}
				
				// Выбираем изображения товаров
				$images = $this->products->get_images(array('product_id'=>$products_ids));
				foreach($images as $image)
					$products[$image->product_id]->images[] = $image;
	
				foreach($products as &$product)
				{
					if(isset($product->variants[0]))
						$product->variant = $product->variants[0];
					if(isset($product->images[0]))
						$product->image = $product->images[0];
				}				
			}
			
			$properties = $this->features->get_product_options($products_ids);
				foreach($properties as $property) {
				$products[$property->product_id]->options[] = $property;
			}

			$smarty->assign($params['var'], $products);
			
		}
	}
}

View.php

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...