Перейти к содержанию
rassigor

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

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

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

Пока у меня решение, ставить код сортировки 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 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.