如何在 prestashop 中获取产品名称?

how to get the name of a product in prestashop?

我正在尝试修改 prestashop 中的 homeslider 模块,以便它可以显示最新产品。

我创建了这个方法,其中 return 一组最新的新产品:

protected function getNewProducts($nbr){

        $newProducts = false;
        if (Configuration::get('PS_NB_DAYS_NEW_PRODUCT'))
            $newProducts = Product::getNewProducts((int) $this->context->language->id, 0, $nbr);

        if (!$newProducts)
            return;
        return $newProducts;
    }

我想从这一系列产品中提取我需要的信息,例如它的名称、描述等

所以我更改了 installSamples 方法:

protected function installSamples()
    {
        $languages = Language::getLanguages(false);
        for ($i = 1; $i <= 3; ++$i)
        {
            $slide = new HomeSlide();
            $slide->position = $i;
            $slide->active = 1;
             $product_set = $this->getNewProducts(3); // get the list of the last 3 products

            foreach ($languages as $language)
            {
            $tmp=array_values($product_set);

                $slide->title[$language['id_lang']] = $tmp[0].name; 
                $slide->description[$language['id_lang']] = '<h2>LOLILOL</h2>
                <p>Test1</p>
                <p><button class="btn btn-default" type="button">Shop now !</button></p>';
                $slide->legend[$language['id_lang']] = 'sample-'.$i;
                $slide->url[$language['id_lang']] = 'http://www.prestashop.com/?utm_source=back-office&utm_medium=v16_homeslider'
                    .'&utm_campaign=back-office-'.Tools::strtoupper($this->context->language->iso_code)
                    .'&utm_content='.(defined('_PS_HOST_MODE_') ? 'ondemand' : 'download');
                $slide->image[$language['id_lang']] = 'sample-'.$i.'.jpg';
            }
            $slide->add();
        }
    }

我尝试更改幻灯片标题,但我没有获取产品名称,而是:ArrayName

同样的描述,我得到的不是产品描述,而是:ArrayDescription

谢谢!

prestashop根据语言id保存文本信息,因此名称和描述字段return为数组。

您可以通过在数组中传递语言id来获取产品名称,您将获得名称和描述。

您将通过以下代码获取语言ID: $lang_id = $this->context->language->id;

要获取产品的所有字段,请使用:

$product = new Product($id_product);

var_dump ($product->name);

/*
 Resulut is an array with available languages:
 ["name"]=>
   array(3) {
     [1]=> string(23) "PHP book"
     [2]=> string(23) "PHP Buch"
     [3]=> string(23) "PHP livre"
 }
*/

这提供了所有语言的所有信息。 在这种情况下,name,description,... 是一个数组。

要获取特定语言,您需要语言 ID:

$langID = $this->context->language->id;

$product = new Product($id_product, false, $langID);

var_dump ($product->name);

/* 
 Now the output is a string with the product name by the current language. 
 ["name"]=> string(23) "PHP book"
*/