2015-04-17 35 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