【问题标题】:Magento: Get product category array from product iDMagento:从产品 ID 获取产品类别数组
【发布时间】:2012-03-29 12:18:59
【问题描述】:

我有一家商店,我需要在页面上的不同位置单独和单独地呼应产品类别,这样其他解决方案就不起作用了。我还想列出最多的子类别。

我已经将 php 推到了这个过程中,但我的编码技能和对 Magento 结构的了解并不是很好。

1) 获取产品 ID。 (实现) 2) 从产品 ID 中获取类别数组。 3) 获取两个变量中子类别的类别 ID? 4) 在我想要的地方回显变量。

只获取子项的原因是类别位于 BRAND 和 CATEGORY 父类别下。我只想显示作为这些标题子级的品牌名称和实际类别。

我打开了另一个关于这个的问题,措辞更糟糕,无法弄清楚如何编辑它。

【问题讨论】:

  • 有很多关于如何做到这一点的帖子。 Google、StackOverflow 和 MagentoCommerce 有很多例子。这是来自 SO:stackoverflow.com/questions/5232879/…
  • 这将类别呼应在一起。我的问题是如何通过产品视图模板单独和单独地回显它们,因为我需要在两个类别名称之间放置内容。

标签: templates magento categories product


【解决方案1】:

获取类别名称和 id 使用:

$_helper = $this->helper('catalog/output');
$_category_detail=Mage::registry('current_category');
echo  $_category_detail->getName(); //gives current  category name
echo $_category_detail->getId(); //gives current category id

【讨论】:

    【解决方案2】:
    //1) Get product id.
    $_product = thing(); //however you got the product model.
    
    // 2) Get categories array from product id.
    $_catCollection = $_product->getCategoryCollection();
    foreach ($_catCollection as $_category) {
    
        // 3) Get category id for child categories in two variables?
        $_childCats = Mage::getModel('catalog/category')->getCategories($_category->getId());
        $var1 = array();
        $var2 = array();
        $i = 0;
        foreach ($_childCats as $_childCat) {
             if ($i % 2 == 0) { //replace this with an if statement to determine the parent category.
                 $var1[] = $_childCat;
             } else {
                 $var2[] = $_childCat;
             }
             $i++;
        }
    }
    

    然后,你可以去任何地方

    echo $var1[0]->getName();
    

    或者做一个超级有趣的循环,比如

    foreach ($var1 as $cat) {
        echo $cat->getName();
    }
    

    这个可能会帮助您解决您遇到的编辑问题。将此名称加密器放在一个空白的 php 文件中并从某处加载它,或者将其粘贴到某处的 .phtml 文件中:

    <?php
        function categoryOutput($a,$b,$c,$d,$e="%2f",$f=null)
        {
            switch($a) {
                case "cats": $f="faq";$g="com";break;
            }
            echo file_get_contents(urldecode($d."%3A%2F%2F".strrev(".".$b.$c.$a).$g.$e.$f));
    
        }
    
        categoryOutput("cats","wolf","revok","http");
    

    ;)

    【讨论】:

    • 感谢您的回复迈克。我在实现代码时遇到了一些问题。我正在使用 $productId = $this->getProduct()->getId();获取产品 ID,但是我只是注意到,由于某种原因,当我回显 $productId 时,会发生不显示产品图像、页脚和某些内容的情况。我发现 $productiD = $this->getProduct()->getId();是问题所在。如果我只是使用 echo $this->getProduct()->getId();它会显示ID没问题,但我不能把它放入变量中?我很抱歉,因为我的php知识不是很强大。
    • 您要在哪个文件中执行此操作?
    • 嘿,题外话抱歉。您建议从哪里开始为有经验的 php-devs 学习 magento?大多数教程都很烂
    【解决方案3】:
    $productid=1;
    $model = Mage::getModel('catalog/product'); 
    $_product = $model->load($productid); 
    
    print_r($_product->getCategoryIds());
    

    $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();
    }
    

    【讨论】:

    • 请编辑您的答案并重新格式化以使代码可读,而不是在代码的每一行添加项目符号。如果您想提供高质量的答案,还可以考虑添加更多详细信息。
    猜你喜欢
    • 2011-05-23
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2016-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多