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

Как скрыть атрибуты из карточки товара


rassigor

Recommended Posts

Есть атрибуты служебные, нужны для фильтра, как их скрыть из карточки товара?

Пока у меня решение, ставить код сортировки 666 и проверять, если он такой, то не выводить

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


4 часа назад, rassigor сказал:

атрибуты служебные, ..., как их скрыть

 

Можно по id, можно и по сортировке

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

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

какой будет код ? 

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


 

 

 

Так вод код 

<?php if ($show_product_attr && $attribute_groups) { ?>
							<h5 class="heading"><span><?php echo $lang['text_short_attributes']; ?></span></h5>
							<div class="attributes">
								<?php foreach ($attribute_groups as $key => $attribute_group) { ?>
									<?php if ($key < $show_product_attr_group) { ?>
										<?php foreach ($attribute_group['attribute'] as $key => $attribute) { ?>
											<?php if ($key < $show_product_attr_item) { ?>
												<div class="attribute">
													<span><span><?php echo $attribute['name']; ?></span></span>
													<span><span><?php echo $attribute['text']; ?></span></span>
												</div>
											<?php } ?>
										<?php } ?>	
									<?php } ?>
								<?php } ?>
							</div>
							<a href="" class="show_attr" onclick="$('a[href=\'#tab-specification\']').trigger('click'); scroll_to('#tab-specification'); return false;"><?php echo $lang['text_all_attributes']; ?></a>
							<hr />
						<?php } ?>

 

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


Как я понимаю надо вот такое условие зафигачить 

 

 


 
<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
<?php if($attribute['attribute_id'] <> 12) { ?>
тогда выводим
</tr>
<?php } ?>
<?php } ?>

 

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


А вообще наверно по другому должна задача стоять, как выводить только первые X символов, например хочу только 100 символов в атрибуте выводить, как это поставить?

Снимок.JPG

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


Блин, поставил вот так  - падает 

 

<?php foreach ($attribute_group['attribute'] as $attribute) { ?>
                                                        <?php if($attribute['sort_order'] <> 666) { ?>
                                                        <div>
                                                            <span><span><?php echo $attribute['name']; ?></span></span>
                                                            <span><span><?php echo $attribute['text']; ?></span></span>
                                                        </div>
                                                    <?php } ?>
                                                    <?php } ?>

 

Notice: Undefined index: sort_order in 

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


Зачем лишние условия, зачем выводить sort_order во view?

Отсеивать атрибуты с определённым sort_order можно при запросе в базу.

В функцию getProductAttributes($product_id), в файле /catalog/model/catalog/product.php нужно добавить условие в выборку из базы:

where sort_order != '666'

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

Точно, а не подумал, подскажи как поставтить, я два раза делал, синтаксический ерор((((

 


 

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");
            foreach ($product_attribute_query->rows as $product_attribute) {
                $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;
    }

 

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


Я вот с такими по жизни работаю с запросами))в этот PHP еще не как не вьеду

 

КонечнаяСтрока="";
	ТаблЧасть=Товар.Культура;
	ПервыйРаз=Истина;
		
	Запрос = Новый Запрос;
	Запрос.Текст = 
		"ВЫБРАТЬ РАЗЛИЧНЫЕ
		|	НоменклатураКультура.ВидКультуры КАК ВидКультуры
		|ИЗ
		|	Справочник.Номенклатура.Культура КАК НоменклатураКультура
		|ГДЕ
		|	НоменклатураКультура.Ссылка = &Товар
		|
		|УПОРЯДОЧИТЬ ПО
		|	ВидКультуры
		|АВТОУПОРЯДОЧИВАНИЕ";
	
	Запрос.УстановитьПараметр("Товар", Товар);
	
	РезультатЗапроса = Запрос.Выполнить();
	
	ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
	
	Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
		Если ПервыйРаз тогда
			Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ВидКультуры) тогда	
				КонечнаяСтрока=Строка(ВыборкаДетальныеЗаписи.ВидКультуры);
			КонецЕсли;
		Иначе
			Если ЗначениеЗаполнено(ВыборкаДетальныеЗаписи.ВидКультуры) тогда	
				КонечнаяСтрока=КонечнаяСтрока+","+Строка(ВыборкаДетальныеЗаписи.ВидКультуры);
			КонецЕсли;	
		КонецЕсли;
		
		ПервыйРаз=Ложь;	
	КонецЦикла;
	Возврат КонечнаяСтрока;	

 

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


$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') . "' AND a.sort_order != '666' ORDER BY a.sort_order, ad.name");

 

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

3 минуты назад, rassigor сказал:

|ГДЕ

| НоменклатураКультура.Ссылка = &Товар

|И ПорядокСоритровки <> 666

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

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

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

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

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

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

Вхід

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

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

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

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

Important Information

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