如何在opencart中输出属性为table的产品

时间:2013-12-17 13:11:20

标签: php opencart

我找到了一个解决方案,如何在category.tpl中输出属性作为表的产品。但是,我只需要一个表在标题中具有属性名称,而产品只需要一个表的行。我想知道是否有人可以帮助我。

    <?php foreach ($products as $product) { ?>
    <table class="attribute">
      <tbody>
        <tr>
          <td>Picture</td>
          <td>Name</td>
          <?php if($product['attribute_groups']) { ?>
              <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
                  <?php foreach($attribute_group['attribute'] as $attribute) { ?>
                      <td><?php echo $attribute['name']; ?></td>
                  <?php } ?>
          <td>Price</td>
          <td>PDF</td>
          <td><!--Купить--></td>
        </tr>
        <tr>
          <td><?php if ($product['thumb']) { ?>
            <div class="image"> <a href="<?php echo $product['href']; ?>"><img src="catalog/view/theme/gainta/image/pic.png " title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
            <?php } ?></td>
          <td><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></td>
          <?php foreach($attribute_group['attribute'] as $attribute) { ?>
          <td><?php echo $attribute['text']; ?></td>
          <?php } ?>
          <td><?php echo $product['price']; ?></td>
          <td><?php if (isset($product['file_href'])) { ?>
            <div class="pdf"> <a href="<?php echo $product['file_href']; ?>">PDF</a> </div>
            <?php } else { ?>
            <div class="pdf"></div>
            <?php } ?></td>
          <td><input type="button" value="<?php echo $button_cart; ?>" class="button" /></td>
        </tr>
      </tbody>
    </table>
            <?php } ?>
        <?php } ?>
    <?php } ?>

1 个答案:

答案 0 :(得分:1)

首先,您需要将attrtibute_groups添加到catalog/controller/product/category.php中的产品数组中(第240行) 找到'product_id' => $result['product_id'],,然后添加以下行

'attribute_groups' => $this->model_catalog_product->getProductAttributes($result['product_id']),

然后在 category.tpl 文件中替换<div class="product-list"> .. lots of code .. </div>

用这个

<table class="attribute">
      <thead>
        <tr>
          <td>Picture</td>
          <td>Name</td>
          <td>Attributes</td>
          <td>Price</td>
          <td>PDF</td>
          <td><!--Купить--></td>
        </tr>
      </thead>
    <?php foreach ($products as $product) { ?>
      <tbody>
        <tr>
          <td><?php if ($product['thumb']) { ?>
            <div class="image"> <a href="<?php echo $product['href']; ?>"><img src="catalog/view/theme/gainta/image/pic.png " title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
            <?php } ?></td>
          <td><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></td>
          <td>
            <?php foreach($product['attribute_groups'] as $attribute_group) { ?>
            <b><?php echo $attribute_group['name']; ?></b> <br>
            <?php foreach ($attribute_group['attribute'] as $attribute) { ?>
              <b><?php echo $attribute['name']; ?></b> -->
              <?php echo $attribute['text']; ?><br>
            <?php } ?>
            <?php } ?>
          </td>
          <td><?php echo $product['price']; ?></td>
          <td><?php if (isset($product['file_href'])) { ?>
            <div class="pdf"> <a href="<?php echo $product['file_href']; ?>">PDF</a> </div>
            <?php } else { ?>
            <div class="pdf"></div>
            <?php } ?></td>
          <td><input type="button" value="<?php echo $button_cart; ?>" class="button" /></td>
        </tr>
      <?php } ?>
      </tbody>
    </table>

我删除了将属性组作为表标题的代码,因为如果类别页面上的产品具有许多不同的属性组,它可能会变得讨厌

---------------- 使用attrribute名称编辑为表格标题 ----------------- -

<?php $AllAttributes = array(); ?>
  <?php foreach ($products as $product) {
    foreach($product['attribute_groups'] as $attribute_group) {
    foreach ($attribute_group['attribute'] as $attribute) {
      $attribute_name = $attribute['name'];
      if(!in_array($attribute_name, $AllAttributes)) {
        $AllAttributes[] = $attribute_name;
      }
    }
   }
   } ?>
  <table class="attribute">
    <thead>
      <tr>
        <td>Picture</td>
        <td>Name</td>
        <?php for ($i=0; $i < sizeof($AllAttributes); $i++) { ?>
          <td><?php echo $AllAttributes[$i];?></td>
        <?php } ?>
        <td>Price</td>
        <td>PDF</td>
        <td><!--Купить--></td>
      </tr>
    </thead>
  <?php foreach ($products as $product) { ?>
    <tbody>
      <tr>
        <td><?php if ($product['thumb']) { ?>
          <div class="image"> <a href="<?php echo $product['href']; ?>"><img src="catalog/view/theme/gainta/image/pic.png " title="<?php echo $product['name']; ?>" alt="<?php echo $product['name']; ?>" /></a></div>
          <?php } ?></td>
        <td><a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a></td>

        <?php for($i=0; $i <sizeof($AllAttributes) ; $i++) { ?>
          <td>
          <?php foreach($product['attribute_groups'] as $attribute_group) {
            foreach ($attribute_group['attribute'] as $attribute) {
              if($attribute['name'] == $AllAttributes[$i]) { 
                echo $attribute['text'] . "</td>";
                continue 3;
               } 
            } ?>
          </td>
          <?php } ?>
        <?php } ?>
        <td><?php echo $product['price']; ?></td>
        <td><?php if (isset($product['file_href'])) { ?>
          <div class="pdf"> <a href="<?php echo $product['file_href']; ?>">PDF</a> </div>
          <?php } else { ?>
          <div class="pdf"></div>
          <?php } ?></td>
        <td><input type="button" value="<?php echo $button_cart; ?>" class="button" /></td>
      </tr>
    <?php } ?>
    </tbody>
  </table>

由于getProductAttributes返回属性的方式,此代码因嵌套for循环而变得凌乱。您可以通过创建一个返回just属性数组的新函数来清理它(当前是一个带属性组的嵌套数组)