Try the Demo

Magento Forum

   
Page 1 of 2
Как скрыть значение атрибутов если они пустые? 
 
ErickAvari
Jr. Member
 
Avatar
Total Posts:  27
Joined:  2010-05-06
 

Подскажите как лучше это реализовать?
На странице товара вывожу атрибуты, для некоторых не нужны несколько атрибутов, например размер. Пропускаю его, а на странице выводится - Размер Нет.
Как сделать так, чтобы эта строка скрылась?

Image Attachments
1.JPG
 
Magento Community Magento Community
Magento Community
Magento Community
 
niro
Mentor
 
Avatar
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

 
Magento Community Magento Community
Magento Community
Magento Community
 
ErickAvari
Jr. Member
 
Avatar
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
Вот только как и куда? Пробовал методом научного, но не получилось ) Для меня это просто набор букв и символов )

 
Magento Community Magento Community
Magento Community
Magento Community
 
niro
Mentor
 
Avatar
Total Posts:  1351
Joined:  2009-03-04
Latvia, Riga
 

Думаю не стоит лезть в код, пусть даже и шаблонов, если не понимаете что делаете smile

Вот наш шаблон (просто вставьте его в вашу тему в нужный файл), но он достаточно сильно адаптирован под нашу тему (может заработает как надо вам):

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

 
Magento Community Magento Community
Magento Community
Magento Community
 
ErickAvari
Jr. Member
 
Avatar
Total Posts:  27
Joined:  2010-05-06
 

Нет, не подошел, остановлюсь на варианте с создание нескольких наборов атрибут.
Спсибо!

 
Magento Community Magento Community
Magento Community
Magento Community
 
P.Selfin
Member
 
Total Posts:  57
Joined:  2010-01-18
Russia/Krasnodar
 

Попоутный вопрос: наборы атрибутов создаются на основе имеющихся, в частности default, который и тянет за собой кучу всякого вроде массы.... И эти атрибуты не удаляются.
Как создать набор атрибутов только с необходимым минимумом?
маженто 1.4.1

 Signature 

Pro-Self.Ru - функциональные решения на открытом программном обеспечении.
Некоммерческий проект для души: El-ajo.RU - афиша концертов в Краснодаре - неформальная культура южного города. (в разработке)

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rugento
Guru
 
Avatar
Total Posts:  510
Joined:  2008-11-15
Russia, Vologda
 

Default - это и есть необходимый минимум.

 Signature 

Модуль интеграции: Magento + 1C Торговля
Выгрузка атрибутов! Создание конфигурируемого товара! Выгрузка заказов!
Модуль отправки СМС о статусах заказа для Magento.

 
Magento Community Magento Community
Magento Community
Magento Community
 
alesto
Guru
 
Total Posts:  624
Joined:  2009-03-21
 

Ну почему? там можно много чего поотключать лишнего , налог там или вес. Правда удалить из набора не получится

 
Magento Community Magento Community
Magento Community
Magento Community
 
Fenbrasso
Jr. Member
 
Avatar
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; ?>

 
Magento Community Magento Community
Magento Community
Magento Community
 
Fenbrasso
Jr. Member
 
Avatar
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>
<?
      }
    }
?>

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rugento
Guru
 
Avatar
Total Posts:  510
Joined:  2008-11-15
Russia, Vologda
 

Поучаствую. Более удобно, просто добавь в массив! cheese

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

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rugento
Guru
 
Avatar
Total Posts:  510
Joined:  2008-11-15
Russia, Vologda
 

cheese

 Signature 

Модуль интеграции: Magento + 1C Торговля
Выгрузка атрибутов! Создание конфигурируемого товара! Выгрузка заказов!
Модуль отправки СМС о статусах заказа для Magento.

 
Magento Community Magento Community
Magento Community
Magento Community
 
sprinnet
Sr. Member
 
Avatar
Total Posts:  140
Joined:  2009-01-12
Prague, Czech Republic
 

Енто баг, который нелечится от версии к версии, вот здесь решение: http://www.magentocommerce.com/bug-tracking/issue?issue=9227

 Signature 

Left Navigation Menu
FlexInvoice 5.0 - Custom Invoice and Order Number
Flex PDF 3.5 (PDF Print-Outs Customizer)

 
Magento Community Magento Community
Magento Community
Magento Community
 
Rugento
Guru
 
Avatar
Total Posts:  510
Joined:  2008-11-15
Russia, Vologda
 

У нас тут своих решений море))

 Signature 

Модуль интеграции: Magento + 1C Торговля
Выгрузка атрибутов! Создание конфигурируемого товара! Выгрузка заказов!
Модуль отправки СМС о статусах заказа для Magento.

 
Magento Community Magento Community
Magento Community
Magento Community
 
suprotek
Jr. Member
 
Total Posts:  16
Joined:  2010-06-15
 

Возможно есть модуль для этого решения - очень нужно ! Если есть подскажите название и разработчика, спасибо.

 
Magento Community Magento Community
Magento Community
Magento Community
 
don Victorio
Jr. Member
 
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($valuetrue);
                
}
строка 64-70
помогло.

 
Magento Community Magento Community
Magento Community
Magento Community
Magento Community
Magento Community
    Back to top
Page 1 of 2