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

时间:2016-01-22 14:10:47

标签: module prestashop

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

我创建了这个方法,它返回了最新产品的数组:

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

谢谢!

2 个答案:

答案 0 :(得分:0)

prestashop在语言ID的基础上保存文本信息,因此名称和描述字段以数组形式返回。

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

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

答案 1 :(得分:0)

要从产品使用中获取所有字段:

$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"
*/