Навигация по каталогу статей
Вывод товаров из сопутствующего бренда
Опубликовал  GMan1990 GMan1990 Добавлено  22-07-2014 21:37 22-07-2014 21:37 3784  Прочтений 3784 Прочтений  0 Комментариев 0 Комментариев
printer

Вывод товара из сопутствующего бренда на странице карточки товара.

Редактируем файл:

\api\Brands.php

После функции

	public function get_brand($id)
	{
		if(is_int($id))			
			$filter = $this->db->placehold('id = ?', $id);
		else
			$filter = $this->db->placehold('url = ?', $id);
		$query = "SELECT id, name, url, meta_title, meta_keywords, meta_description, description, image
								 FROM __brands WHERE $filter ORDER BY name LIMIT 1";
		$this->db->query($query);
		return $this->db->result();
	}

вставляем:

	/*
	*
	* Функция возвращает бренд по продукту id или url
	* (в зависимости от типа аргумента, int - id, string - url)
	* @param $id id или url поста
	*
	*/
	public function get_brand_pr($id)
	{
		if(!is_int($id))			
			$filter = $this->db->placehold('id = ?', $id);
		else
			$filter = $this->db->placehold('url = ?', $id);
		$query = "SELECT brand_id, id, url, name, position, meta_title
								 FROM __products WHERE $filter LIMIT 1";
		$this->db->query($query);
		return $this->db->result();
	}

далее, находим в файле:

\view\ProductView.php

			$this->design->assign('related_products', $related_products);
		}

после сразуже вставляем:

else { // генерируемые связанные товары
			$products->brands  = $this->brands->get_brand_pr($product->id);
			$brandy = reset($products->brands);			
			$related_products = array();
			$after = false;
		 
			$products = $this->products->get_products(array('brand_id' => $brandy, 'limit' => 100, 'in_stock'=>1, 'visible'=>1));
		 
			foreach($products as $p)
			{
				if($after && count($related_products) < 6)
					$related_products[$p->id] = $p;
				elseif($p->id == $product->id)
					$after = true;
			}
		 
			if(count($related_products) < 6)
				foreach($products as $p)
					if($p->id != $product->id && count($related_products) < 6)
						$related_products[$p->id] = $p;
					else break;  
		 
			$related_products_images = $this->products->get_images(array('product_id'=>array_keys($related_products)));
			foreach($related_products_images as $related_product_image)
				if(isset($related_products[$related_product_image->product_id]))
					$related_products[$related_product_image->product_id]->images[] = $related_product_image;
			$related_products_variants = $this->variants->get_variants(array('product_id'=>array_keys($related_products), 'instock'=>true));
			foreach($related_products_variants as $related_product_variant)
			{
				if(isset($related_products[$related_product_variant->product_id]))
				{
					$related_product_variant->price *= (100-$discount)/100;
					$related_products[$related_product_variant->product_id]->variants[] = $related_product_variant;
				}
			}
			foreach($related_products as $r)
			{
				$r->image = &$r->images[0];
				$r->variant = &$r->variants[0];
			}
			$this->design->assign('related_products', $related_products);
		} // end: генерируемые связанные товары

 

И вс,, должно вс, работать

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, авторизуйтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесь или зарегистрируйтесь для голосования.

Нет данных для оценки.