首页 > 解决方案 > Magento 1 - 按名称获取产品

问题描述

我目前检查 post 参数是否具有特定值并使用我在后端手动查找并输入脚本的 pid 初始化变量。

if (strpos($this->gleit, "Alu Gleitabschluss - Design") !== false) { $this->gleit_pid  = 2322; }
else if (strpos($this->gleit, "Kunststoff-Gleitabschluss") !== false) { $this->gleit_pid  = 2954; }
else if (strpos($this->gleit, "Alu Gleitabschluss") !== false) { $this->gleit_pid  = 2950; }
else if (strpos($this->gleit, "Alu-Endstück Putz") !== false) { $this->gleit_pid  = 2936; }
else if (strpos($this->gleit, "Alu-Endstück Klinker") !== false) { $this->gleit_pid  = 3227; }

这不是一个好的解决方案,如果有新产品,那么我必须添加更多代码。

有没有办法按产品名称加载产品?我可以开发一个在 for 循环中加载所有产品模型并检查名称的方法,但这会占用太多资源,并且加载时间会非常长,并且服务器会不满意。

例如

public function findProductByName($name, $start, $end)
{
    for($pid = $start; $pid < $end; $pid++ ) {
        $tmpModel = Mage::getModel('catalog/product')->load($pid);
        $tmpName = $tmpModel->getName();

        $a = get_object_vars($tmpModel);
        $b = get_class_methods($tmpModel);

        if ($tmpName == $name) {
            return tmpModel;
        }
    }
}

怎么做才对。

标签: phpmagento-1.9

解决方案


您可以使用以下方法:

$_product= Mage::getModel('catalog/product')->loadByAttribute('name','Product Name');

echo  $_product->getId();

推荐阅读