如何在 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"
*/
我正在尝试修改 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"
*/