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:  1609
Joined:  2009-03-04
Latvia, Riga
 

Лучше всего создавать товары под разными наборами атрибутов, где будут только нужные атрибуты.

Если всё же хочется контролировать вывод, а не ввод, то надо модифицировать шаблон вывода атрибутов. Стандартный лежит тут:

app\design\frontend\default\default\template\catalog\product\view\attributes.phtml

Скопируйте его в свою тему и вставляйте нужные проверки.

 
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:  1609
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>
 
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

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

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

 
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:  540
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; ?>
 
Magento Community Magento Community
Magento Community
Magento Community
 
Rugento
Guru
 
Avatar
Total Posts:  540
Joined:  2008-11-15
Russia, Vologda
 

cheese

 
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

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

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

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