ErickAvari
Total Posts: 27
Joined: 2010-05-06
Подскажите как лучше это реализовать?
На странице товара вывожу атрибуты, для некоторых не нужны несколько атрибутов, например размер. Пропускаю его, а на странице выводится - Размер Нет.
Как сделать так, чтобы эта строка скрылась?
Image Attachments
Click thumbnail to see full-size image
Posted: June 7 2010
| top
niro
Total Posts: 1351
Joined: 2009-03-04
Latvia, Riga
Лучше всего создавать товары под разными наборами атрибутов, где будут только нужные атрибуты.
Если всё же хочется контролировать вывод, а не ввод, то надо модифицировать шаблон вывода атрибутов. Стандартный лежит тут:
app\design\frontend\default\default\template\catalog\product\view\attributes.phtml
Скопируйте его в свою тему и вставляйте нужные проверки.
Signature
My Magento ver. 1.4.1.1
My Magento ver. 1.6.2.0
My Magento ver. 1.7.0.2
ET WebSolutions community extensions
Posted: June 8 2010
| top
| # 1
ErickAvari
Total Posts: 27
Joined: 2010-05-06
Уже подумал на счет разных атрибут, но все же может есть решение.
Вот нарыл на забугорных форумах:
Номер 1:
<?php if ( $_product -> getResource ()-> getAttribute ( \ 'how_to_use\' )-> getFrontend ()-> getValue ( $_product )): ?> < h4 > <?php echo $_product -> getResource ()-> getAttribute ( \ 'how_to_use\' )-> getFrontend ()-> getLabel ( $_product ) ?> </ h4 > <?php echo $_product -> getResource ()-> getAttribute ( \ 'how_to_use\' )-> getFrontend ()-> getValue ( $_product ) ?> <?php endif; ?>
Номер 2:
if(!empty( $_product -> getData ( \ 'attribute\' )) { echo $_product -> getData ( \ 'attribute\' ) ; }
Может что то подталкнет на правильное решение, это нужно внести в файл
app\\design\\frontend\\default\\default\\template\\catalog\\product\\view\\attributes . phtml
Вот только как и куда? Пробовал методом научного, но не получилось ) Для меня это просто набор букв и символов )
Posted: June 8 2010
| top
| # 2
niro
Total Posts: 1351
Joined: 2009-03-04
Latvia, Riga
Думаю не стоит лезть в код, пусть даже и шаблонов, если не понимаете что делаете
Вот наш шаблон (просто вставьте его в вашу тему в нужный файл), но он достаточно сильно адаптирован под нашу тему (может заработает как надо вам):
<?php /** * Product additional attributes template * * @see Mage_Catalog_Block_Product_View_Attributes */ ?> <?php $_helper = $this -> helper ( 'catalog/output' ); $_product = $this -> getProduct (); $attributes = $_product -> getAttributes (); //echo get_class(array_shift($attributes)); $_additional = array(); while ( $att = array_shift ( $attributes )) if ( $att -> getIsVisibleOnFront () && $_product -> hasData ( $att -> getAttributeCode ()) && $att -> getAttributeSetId () && $value = $att -> getFrontend ()-> getValue ( $_product )) { if ( $att -> getFrontendInput () == 'multiselect' ) { $value = str_replace ( ', ' , '<br /> ' , $value ); } $_additional[] = array( 'code' => $att -> getAttributeCode (), 'value' => $value , 'label' => $att -> getFrontend ()-> getLabel ()); } //$_additional = $this->getAdditionalData(); ?> < table class= "data-table" id = "product-attribute-specs-table" > < col width = "30%" /> < col width = "70%" /> <?php foreach ( $_additional as $_data ): ?> <?php switch( true ) { case ( $_data[ 'code' ] == 'weight' ): $_data[ 'value' ] = rtrim ( $_data[ 'value' ] , "0" ); $_data[ 'value' ] = rtrim ( $_data[ 'value' ] , "." ); break; } ?> < tr > < th class= "label" > <?php echo $this -> __ ( $_data[ 'label' ] ) ?> </ th > < td class= "data" > <?php echo $_helper -> productAttribute ( $_product , $_data[ 'value' ] , $_data[ 'code' ] ) ?> </ td > </ tr > <?php endforeach; ?> </ table > < script type = "text/javascript" > decorateTable ( 'product-attribute-specs-table' ) </script>
Signature
My Magento ver. 1.4.1.1
My Magento ver. 1.6.2.0
My Magento ver. 1.7.0.2
ET WebSolutions community extensions
Posted: June 8 2010
| top
| # 3
ErickAvari
Total Posts: 27
Joined: 2010-05-06
Нет, не подошел, остановлюсь на варианте с создание нескольких наборов атрибут.
Спсибо!
Posted: June 8 2010
| top
| # 4
P.Selfin
Total Posts: 57
Joined: 2010-01-18
Russia/Krasnodar
Попоутный вопрос: наборы атрибутов создаются на основе имеющихся, в частности default, который и тянет за собой кучу всякого вроде массы.... И эти атрибуты не удаляются.
Как создать набор атрибутов только с необходимым минимумом?
маженто 1.4.1
Signature
Pro-Self.Ru - функциональные решения на открытом программном обеспечении.
Некоммерческий проект для души: El-ajo.RU - афиша концертов в Краснодаре - неформальная культура южного города. (в разработке)
Posted: June 8 2010
| top
| # 5
alesto
Total Posts: 624
Joined: 2009-03-21
Ну почему? там можно много чего поотключать лишнего , налог там или вес. Правда удалить из набора не получится
Posted: June 11 2010
| top
| # 7
Fenbrasso
Total Posts: 5
Joined: 2009-08-30
RF
Если стоит модуль “Easy Tabs”, то для срытия пустых атрибутов править нужно в нем, тот же attributes.phtml
В случае усли у вас пустые значения были разные “Нет” и “Не применимо”, то просто повторите код с другим значением проверки
<?php foreach ( $_additional as $_data ): if // проверяем на "Неприменимо" // ( ( Mage :: helper ( 'eav' )-> __ ( 'N/A' ) == $_data[ 'value' ] ) ) { continue; } if // проверяем на "Нет" //( ( Mage :: helper ( 'eav' )-> __ ( 'No' ) == $_data[ 'value' ] ) ) { continue; } ?> < tr > < th class= "label" > <?php echo $this -> htmlEscape ( $this -> __ ( $_data[ 'label' ] )) ?> </ th > < td class= "data" > <?php echo $_helper -> productAttribute ( $_product , $_data[ 'value' ] , $_data[ 'code' ] ) ?> </ td > </ tr > <?php endforeach; ?>
Posted: January 31 2011
| top
| # 8
Fenbrasso
Total Posts: 5
Joined: 2009-08-30
RF
<? foreach ( $_additional as $_data ) { $h1 = Mage :: helper ( 'eav' )-> __ ( 'N/A' ); $h2 = Mage :: helper ( 'eav' )-> __ ( 'No' ); $v = $_data[ 'value' ] ; echo 'debug: ' . $h1 . ' : ' . $h2 . ' : ' . $v ; ' if (($h1 != $v) && ($h2 != $v)) { ?> <tr> <th class="label"><?=$this->htmlEscape($this->__($_data[' label ']))?></th> <td class="data"><?=$_helper->productAttribute($_product, $_data[' value '], $_data[' code] ) ?> </ td > </ tr > <? } } ?>
Posted: February 2 2011
| top
| # 9
Rugento
Total Posts: 510
Joined: 2008-11-15
Russia, Vologda
Поучаствую. Более удобно, просто добавь в массив!
<?php foreach ( $_additional as $_data ) : //массив значений для фильтра $filter_value = array( Mage :: helper ( 'eav' )-> __ ( 'N/A' ), Mage :: helper ( 'eav' )-> __ ( 'No' ), ); if ( in_array ( $_data[ 'value' ] , $filter_value )) { continue; } ?> < tr > < th class= "label" > <?php echo $this -> htmlEscape ( $this -> __ ( $_data[ 'label' ] )) ?> </ th > < td class= "data" > <?php echo $_helper -> productAttribute ( $_product , $_data[ 'value' ] , $_data[ 'code' ] ) ?> </ td > </ tr > <?php endforeach; ?>
Signature
Модуль интеграции: Magento + 1C Торговля
Выгрузка атрибутов! Создание конфигурируемого товара! Выгрузка заказов!
Модуль отправки СМС о статусах заказа для Magento.
Posted: February 2 2011
| top
| # 10
suprotek
Total Posts: 16
Joined: 2010-06-15
Возможно есть модуль для этого решения - очень нужно ! Если есть подскажите название и разработчика, спасибо.
Posted: January 13 2013
| top
| # 14
don Victorio
Total Posts: 6
Joined: 2010-05-28
/app/code/core/Mage/Catalog/Block/Product/View/Attributes.php
if (! $product -> hasData ( $attribute -> getAttributeCode ())) { // $value = Mage::helper('catalog')->__('N/A'); } elseif ((string) $value == '' ) { // $value = Mage::helper('catalog')->__('No'); } elseif ( $attribute -> getFrontendInput () == 'price' && is_string ( $value )) { $value = Mage :: app ()-> getStore ()-> convertPrice ( $value , true ); }
строка 64-70
помогло.
Posted: February 19 2013
| top
| # 15