0

我想要的东西有点难以解释。因此,为任何混淆道歉。我正在检索我为我的产品创建的一组属性(总共 16 个)。而这 16 个属性可以根据类型分为 4 列(A、B、C、D)。所以我想创建一个以 A、B、C、D 为标题的表格。然后我想显示相关列的标签和数据。下面将给你一个想法,我想要什么。

<table>
<tr>
<td>heading-A</td>
<td>heading-B</td>
<td>heading-C</td>
<td>heading-D</td>
</tr>
<tr>
<td>label-A</td>
<td>Data-A</td>
<td>label-B</td>
<td>Data-B</td>
<td>label-C</td>
<td>Data-C</td>
<td>Label-D</td>
<td>Data-D</td>
</tr>
<tr>...and so on
</table

*不必担心将标签-A 和数据-A 放在标题-A 下。我可以使用 CSS 来实现。

我知道我可以通过在每个相关表中直接调用属性名称(即 $_product->getAttribute)来做到这一点。但问题是有几个属性集,每个属性集都有不同的属性(即每个集有 16 个属性组不同)。

因此,我没有创建一个巨大的表并单独调用值,而是尝试使用伪代码来实现这一点,这将是一种更简单和智能的方式。

到目前为止,我已经尝试过这样的:

$attributes = $_product->getAttributes();
<table>
<tr>
<td>Sight</td>
<td>Nose</td>
<td>Palate</td>
<td>Finish</td>
</tr>
<?php foreach($attributes as $attribute):?>
                    <?php if($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined()):?>
                        <tr>
                            <?php if(stripos($attribute->getAttributeCode(), "_sight")!=0):?><td><th class="data"><?php echo $attribute->getFrontend()->getLabel(); ?></th></td>
                            <td class="data"><?php echo $attribute->getFrontend()->getValue($_product); continue;?></td><?php endif; ?>

                            <?php if(stripos($attribute->getAttributeCode(), "_nose")!=0): ?><td><th class="data"><?php echo $attribute->getFrontend()->getLabel(); ?></th></td>
                            <td class="data"><?php echo $attribute->getFrontend()->getValue($_product); continue;?></td><?php endif; ?>

                            <?php if(stripos($attribute->getAttributeCode(), "_palate")!=0): ?><td><th class="data"><?php echo $attribute->getFrontend()->getLabel(); ?></th></td>
                            <td class="data"><?php echo $attribute->getFrontend()->getValue($_product); continue;?></td><?php endif;?>

                            <?php if(stripos($attribute->getAttributeCode(), "_finish")!=0): ?><td><th class="data"><?php echo $attribute->getFrontend()->getLabel(); ?></th></td>
                            <td class="data"><?php echo $attribute->getFrontend()->getValue($_product); continue;?></td><?php endif;?>
                        </tr>
                    <?php endif; ?>
                <?php endforeach; ?>
</table>

但这在一个列中给了我所有的输出。我不确定如何按照我想要的方式将它们分成 4 列。有人可以帮我吗?

4

1 回答 1

1

continue 将停止循环并继续下一次迭代。

您有 4 列标题和 8 列数据。

<th> 用于标题单元格http://www.w3schools.com/tags/tag_th.asp

所以我希望以下内容更适合您的解决方案。

$attributes = $_product->getAttributes();
<table>
<tr>
<td colspan="2">Sight</td>
<td colspan="2">Nose</td>
<td colspan="2">Palate</td>
<td colspan="2">Finish</td>
</tr>

<?php foreach($attributes as $attribute):
  if($attribute->getIsVisibleOnFront() && $attribute->getIsUserDefined()):?>
      <tr>
          <?php if(stripos($attribute->getAttributeCode(), "_sight")!=0) { ?>
              <td class="label"><?php echo $attribute->getFrontend()->getLabel();          ?></td>
              <td class="data"><?php  echo $attribute->getFrontend()->getValue($_product); ?></td>
          <?php } else { ?>
              <td class="label"></td>
              <td class="data"></td>
          <?php } ?>

          <?php if(stripos($attribute->getAttributeCode(), "_nose")!=0) { ?>
              <td class="label"><?php echo $attribute->getFrontend()->getLabel();          ?></td>
              <td class="data"><?php  echo $attribute->getFrontend()->getValue($_product); ?></td>
          <?php } else { ?>
              <td class="label"></td>
              <td class="data"></td>
          <?php } ?>

          <?php if(stripos($attribute->getAttributeCode(), "_palate")!=0) { ?>
              <td class="label"><?php echo $attribute->getFrontend()->getLabel();          ?></td>
              <td class="data"><?php  echo $attribute->getFrontend()->getValue($_product); ?></td>
          <?php } else { ?>
              <td class="label"></td>
              <td class="data"></td>
          <?php } ?>

          <?php if(stripos($attribute->getAttributeCode(), "_finish")!=0) { ?>
              <td class="label"><?php echo $attribute->getFrontend()->getLabel();         ?></td>
              <td class="data"><?php  echo $attribute->getFrontend()->getValue($_product);?></td>
          <?php } else { ?>
              <td class="label"></td>
              <td class="data"></td>
          <?php } ?>
      </tr>
  <?php endif; ?>
<?php endforeach; ?>
</table>
于 2012-10-10T13:29:31.470 回答