我找到了一个解决方案,如何在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 } ?>
答案 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属性数组的新函数来清理它(当前是一个带属性组的嵌套数组)