【问题标题】:Magento - Display Category information in Sales Orders viewMagento - 在销售订单视图中显示类别信息
【发布时间】:2012-12-03 02:23:29
【问题描述】:

编辑:所以this thread 的一个人说如下: “Magento 中的所有订单数据都是特定于产品的。它不存储有关产品所属类别的任何信息。因此,正如您所发现的,Magento 中没有关于此类事情的报告。” 这是真的?我正在努力做的事情是失败的吗?

我正在尝试在 Magento 的后端销售 > 订单 > 特定订单视图 > 信息 > 已订购商品网格中显示产品类别。这不是您在导航到“销售”>“订单”时看到的主要“订单网格”。我想更改您在单击第一个网格中的特定订单后看到的更详细的内容。

根据this thread 的建议,我创建了一个新专栏并为其指定了正确的标题(类别)。

然后,为了尝试填充该列,我将 this thread 上的 Joost de Valk 解决方案中的代码添加到 app/design/adminhtml/default/default/template/sales/order/view/items/renderer/default.phtml

我觉得我应该接近(或不接近),但目前该代码只是返回单词“Array”。有什么想法吗?

我当前的代码如下。有问题的列是第二个 td - 与 $cats 相呼应的那个:

<?php $_item = $this->getItem() ?>
// Here is the snippet I pasted in to define variables.
<?php $product = Mage::getModel('catalog/product')->load($productId);

$cats = $product->getCategoryIds();
foreach ($cats as $category_id) {
    $_cat = Mage::getModel('catalog/category')->load($category_id) ;
    echo $_cat->getName();
}  ?>
<?php $this->setPriceDataObject($_item) ?>
<tr<?php if (!$this->canDisplayGiftmessage()): ?> class="border"<?php endif; ?>>
    <td>
        <?php if ($this->canDisplayContainer()): ?>
        <div id="<?php echo $this->getHtmlId() ?>" class="item-container">
        <?php endif; ?>
        <div class="item-text">
            <?php echo $this->getColumnHtml($_item, 'name') ?>
        </div>
        <?php if ($this->canDisplayContainer()): ?>
        </div>
        <?php endif ?>
    </td>
// Here is the column in question.
    <td class="a-center"><?php echo $cats ?></td>
    <td class="a-center"><?php echo $_item->getStatus() ?></td>
    <td class="a-right"><?php echo $this->displayPriceAttribute('original_price') ?></td>

etc, etc, etc ...

【问题讨论】:

  • &lt;td class="a-center"&gt;&lt;?php echo $cats ?&gt;&lt;/td&gt; -> $cats 是一个数组。你到底想从中得到什么?
  • 感谢您的回复。好吧,我最终想要产品类别。但我对 php 很陌生,所以我什至不确定我定义的变量 ($cats = $product->getCategoryIds() 等) 是否包含我需要的信息......我猜 Magento 中没有标准调用产品类别?

标签: php magento


【解决方案1】:

$_cat 是一个对象

$_cat = Mage::getModel('catalog/category')->load($category_id) ;

<td class="a-center"><?php echo $cats ?></td>

您需要知道要显示哪个属性

echo $_cat->getXyz();

例如。

echo $_cat->getName();

要查看其中一些属性的列表,请尝试

print_r($_cat->getData());

【讨论】:

  • 感谢您的回复。这很有帮助。我应该在哪里输入 print_r 命令来查看属性列表?
  • echo $_cat-&gt;getName(); 之后的 foreach 循环中应该这样做。它会为每个类别调用 print_r 但这并不重要,因为您现在只是在探索
  • 您想显示您所属类别的哪些信息?
  • 是的,我一定会的。我正在尝试显示类别名称。对我完全缺乏 PHP 和 print_r 命令的知识表示歉意,但是我需要以某种方式调用 print_r 吗?如果我只是在 Ossie7 的 foreach 循环中输入它,然后刷新页面,则没有任何变化。
  • 好吧,想通了……我输入了 Ossie7 提到的 print_r 行,然后在列部分用&lt;?php echo'&lt;pre&gt;'; print_r($cats); echo '&lt;/pre&gt;'; ?&gt; 调用它。现在该列返回“Array()”这是否意味着该变量没有属性?
【解决方案2】:

因此,类别似乎真的很复杂,而且肯定超出了我的能力范围。我想出了一个变通办法,不管多么丑陋。由于我没有使用制造商字段并且只有 4 个相关类别,因此我正在为这 4 个类别中的每一个创建“制造商”,将它们分配给所有产品,然后在相关文件中调用制造商。厂商代码如下:

 <?php 
$manufacturer = Mage::getModel('catalog/product')->load($_item['product_id'])->getAttributeText('manufacturer'); 
echo $manufacturer;
?> 

感谢 this post 的 sn-p 并感谢其他所有人的帮助。

【讨论】:

    猜你喜欢
    • 2017-04-17
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    • 1970-01-01
    • 1970-01-01
    • 2016-09-26
    • 2019-04-01
    相关资源
    最近更新 更多