2015-04-17 112 views
-1

我目前正在寻找Prestashop 1.6.0.14的一些购物车主题代码,并且在构造上挣扎了一下。请参阅此代码:Prestashop中的循环产品属性

<td class="cart_description"> 
    <div class="narrow-screen">{l s='Description'}</div> 
     <div class="floatL"> 
     {capture name=sep} : {/capture} 
     {capture}{l s=' : '}{/capture} 
      <p class="product-name"><a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">{$product.name|escape:'html':'UTF-8'}</a></p> 
      {if $product.reference}<small class="cart_ref">{l s='SKU'}{$smarty.capture.default}{$product.reference|escape:'html':'UTF-8'}</small>{/if} 
      {if isset($product.attributes) && $product.attributes}<small><a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">{$product.attributes|escape:'html':'UTF-8'}</a></small>{/if} 
     <div> 
    </td> 

该代码当前以相当庞大的不可读方式显示产品属性。 Please observe this image

我想要的是获取每组属性并逐行显示。

  • 颜色:红色
  • 版本:高级
  • 宽度:1米
  • 身高:1米

我似乎但是无法通过我们的方式工作,以循环依靠我对Prestashop类的有限知识逐一进行分类。

感谢您的时间和帮助

回答

-1

您需要更换(or override)的方法cacheSomeAttributesListsclasses/Cart.php 我加入attributes沿attributes_arrayattributes_small

public static function cacheSomeAttributesLists($ipa_list, $id_lang) 
{ 
    if (!Combination::isFeatureActive()) 
     return; 

    $pa_implode = array(); 

    foreach ($ipa_list as $id_product_attribute) 
     if ((int)$id_product_attribute && !array_key_exists($id_product_attribute.'-'.$id_lang, self::$_attributesLists)) 
     { 
      $pa_implode[] = (int)$id_product_attribute; 
      self::$_attributesLists[(int)$id_product_attribute.'-'.$id_lang] = array('attributes' => '', 'attributes_small' => '', 'attributes_array' => ''); 
     } 

    if (!count($pa_implode)) 
     return; 

    $result = Db::getInstance()->executeS(' 
     SELECT pac.`id_product_attribute`, agl.`public_name` AS public_group_name, al.`name` AS attribute_name 
     FROM `'._DB_PREFIX_.'product_attribute_combination` pac 
     LEFT JOIN `'._DB_PREFIX_.'attribute` a ON a.`id_attribute` = pac.`id_attribute` 
     LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON ag.`id_attribute_group` = a.`id_attribute_group` 
     LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (
      a.`id_attribute` = al.`id_attribute` 
      AND al.`id_lang` = '.(int)$id_lang.' 
     ) 
     LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (
      ag.`id_attribute_group` = agl.`id_attribute_group` 
      AND agl.`id_lang` = '.(int)$id_lang.' 
     ) 
     WHERE pac.`id_product_attribute` IN ('.implode(',', $pa_implode).') 
     ORDER BY ag.`position` ASC, a.`position` ASC' 
    ); 

    foreach ($result as $row) 
    { 
     self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes'] .= $row['public_group_name'].' : '.$row['attribute_name'].', '; 
     self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes_small'] .= $row['attribute_name'].', '; 
     self::$_attributesLists[$row['id_product_attribute'].'-'.$id_lang]['attributes_array'][] = $row ; 
    } 

    foreach ($pa_implode as $id_product_attribute) 
    { 
     self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes'] = rtrim(
      self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes'], 
      ', ' 
     ); 

     self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes_small'] = rtrim(
      self::$_attributesLists[$id_product_attribute.'-'.$id_lang]['attributes_small'], 
      ', ' 
     ); 
    } 
} 

然后,这条线在后tpl

{if isset($product.attributes) && $product.attributes}<small><a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}">{$product.attributes|@replace: $smarty.capture.sep:$smarty.capture.default|escape:'html':'UTF-8'}</a></small>{/if} 

添加该代码

{if isset($product.attributes_array) && count($product.attributes_array)} 
    <small> 
     <a href="{$link->getProductLink($product.id_product, $product.link_rewrite, $product.category, null, null, $product.id_shop, $product.id_product_attribute)|escape:'html':'UTF-8'}"> 
      {foreach from=$product.attributes_array item=attribute} 
       {$attribute.public_group_name}: {$attribute.attribute_name}<br> 
      {/foreach} 
     </a> 
    </small> 
{/if} 

如果这很适合你,请附上改善显示的屏幕截图,我想犯这个编辑的PrestaShop源

+0

我会考虑它在未来天,肯定会回复。 – Ktraving