代码之家  ›  专栏  ›  技术社区  ›  Black

Magento 1-按名称获取产品

  •  0
  • Black  · 技术社区  · 6 年前

    我现在检查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;
            }
        }
    }
    

    怎么做才对。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Balasaheb Bhise    6 年前

    您可以使用以下方法:

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