Jump to content
Sign in to follow this  
rassigor

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

Recommended Posts

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

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

Share this post


Link to post
Share on other sites
4 часа назад, rassigor сказал:

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

 

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

Share this post


Link to post
Share on other sites

можно еще отдельное поле завести(в админке будет галочка) скрыть/показать

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

 

 

 

Так вод код 

<?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 } ?>

 

Share this post


Link to post
Share on other sites

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

 

 


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

 

Share this post


Link to post
Share on other sites

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

Снимок.JPG

Share this post


Link to post
Share on other sites

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

 

<?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 

Share this post


Link to post
Share on other sites

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

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

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

where sort_order != '666'

Share this post


Link to post
Share on other sites

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

 


 

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;
    }

 

Share this post


Link to post
Share on other sites

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

 

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

 

Share this post


Link to post
Share on other sites
$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

Share this post


Link to post
Share on other sites
3 минуты назад, rassigor сказал:

|ГДЕ

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.