Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Ограничение кол-ва атрибутов на странице категории


dimamix

Recommended Posts

Добрый вечер, коллеги!

 

Прошу помочь решить одну задачу:

Вывел атрибуты в описания товаров на страницу категории.

Строка в контроллере выглядит следующим образом:

'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),

Как  можно её дополнить, чтобы выводилось только 9 атрибутов, а не все?

Или просьба подсказать другие варианты решения.. Заранее спасибо!

Надіслати
Поділитися на інших сайтах


Неторые товары сожержат по 10-20 характеристик. Мы xотим вывести не более 8-9 строк, показать ключевые характеристики товара. Остальные уже в карточке товара. Может сделаем меньше 8. Главное научиться ограничивать. В атрибутах проставлен порядок сортировки, сначала выводятся ключевые.

Надіслати
Поділитися на інших сайтах


dimamix, попробуйте поковырять в catalog/model/catalog/product.php

Изменения касаются переменной $iter.

public function getProductAttributes($product_id) {
		$product_attribute_group_data = array();
		
		$product_attribute_group_query = $this->db->query("SELECT ag.attribute_group_id, agd.name FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_group ag ON (a.attribute_group_id = ag.attribute_group_id) LEFT JOIN " . DB_PREFIX . "attribute_group_description agd ON (ag.attribute_group_id = agd.attribute_group_id) WHERE pa.product_id = '" . (int)$product_id . "' AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "' GROUP BY ag.attribute_group_id ORDER BY ag.sort_order, agd.name");
		
		
		foreach ($product_attribute_group_query->rows as $product_attribute_group) {
		
			$product_attribute_data = array();
			
			$product_attribute_query = $this->db->query("SELECT a.attribute_id, ad.name, pa.text FROM " . DB_PREFIX . "product_attribute pa LEFT JOIN " . DB_PREFIX . "attribute a ON (pa.attribute_id = a.attribute_id) LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE pa.product_id = '" . (int)$product_id . "' AND a.attribute_group_id = '" . (int)$product_attribute_group['attribute_group_id'] . "' AND ad.language_id = '" . (int)$this->config->get('config_language_id') . "' AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY a.sort_order, ad.name");
			
			$iter=0;
			foreach ($product_attribute_query->rows as $product_attribute) {
				$iter++;
				if ($iter>8) break;
				$product_attribute_data[] = array(
					'attribute_id' => $product_attribute['attribute_id'],
					'name'         => $product_attribute['name'],
					'text'         => $product_attribute['text']		 	
				);
				
			}
			
			$product_attribute_group_data[] = array(
				'attribute_group_id' => $product_attribute_group['attribute_group_id'],
				'name'               => $product_attribute_group['name'],
				'attribute'          => $product_attribute_data
			);			
		}
		
		return $product_attribute_group_data;
	}

Только скорее всего вам понадобится сделать копию функции getProductAttributes, внести в нее изменения, переименовать копию и обращаться к этой копии со страницы категорий.

И подойдет этот вариант только если группа аттрибутов одна, в противном случае, в каждой группе категорий будет выводится указанное в этой строке "if ($iter>8) break;" количество аттрибутов.

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.