问题描述
我正在尝试将尺寸选择放入产品轮播模块中,但我还是无法摆脱。有人可以帮我吗?我得到的错误是:
“通知':未定义的索引:/web/htdocs/www.mysite.it/home/var/cache/prod/smarty/compile / .....中的id_attribute_group”。
我知道要查看这些变量,我必须在模块中对其进行声明,我已经尝试了各种方法,但我做不到。多亏有人帮我。
我相信这是加载产品特征的功能
public function getProductsInfos($items,$id_lang,$id_shop,$settings)
{
$ids = array();
foreach ($items as $i) {
$ids[] = $i['id_product'];
}
if (!$ids) {
return array();
}
$show_cat = $settings['product_cat'];
$show_man = $settings['product_man'];
$products_infos = array();
$imploded_ids = implode(',',$ids);
$products_data = $this->db->executeS('
SELECT p.*,product_shop.*,pl.*,image.id_image,il.legend,pas.id_product_attribute,pas.minimal_quantity AS pa_minimal_quantity,'.($show_cat ? 'cl.name AS cat_name,cl.link_rewrite as cat_link_rewrite,' : '').'
'.($show_man ? 'm.name AS man_name,' : '').'
'.$this->prepareIsNewQuery().' AS new
FROM '._DB_PREFIX_.'product p
'.Shop::addsqlAssociation('product','p').'
INNER JOIN '._DB_PREFIX_.'product_lang pl
ON (pl.id_product = p.id_product
AND pl.id_shop = '.(int)$id_shop.' AND pl.id_lang = '.(int)$id_lang.')
LEFT JOIN '._DB_PREFIX_.'product_attribute_shop pas
ON pas.id_product_attribute = product_shop.cache_default_attribute
AND pas.id_shop = product_shop.id_shop
'.($show_cat ? '
LEFT JOIN '._DB_PREFIX_.'category_lang cl
ON (cl.id_category = product_shop.id_category_default
AND cl.id_shop = '.(int)$id_shop.' AND cl.id_lang = '.(int)$id_lang.')
' : '').'
'.($show_man ? '
LEFT JOIN '._DB_PREFIX_.'manufacturer m
ON m.id_manufacturer = p.id_manufacturer AND m.active = 1
' : '').'
LEFT JOIN '._DB_PREFIX_.'image image
ON (image.id_product = p.id_product AND image.cover = 1)
LEFT JOIN '._DB_PREFIX_.'image_lang il
ON (il.id_image = image.id_image AND il.id_lang = '.(int)$id_lang.')
WHERE p.id_product IN ('.psql($imploded_ids).')
');
$second_images = array();
if (!empty($settings['second_image'])) {
$second_images_data = $this->db->executeS('
SELECT i.id_product,i.id_image
FROM '._DB_PREFIX_.'image i
'.Shop::addsqlAssociation('image','i').'
WHERE i.id_product IN ('.psql($imploded_ids).')
AND i.cover IS NULL
GROUP BY i.id_product
');
foreach ($second_images_data as $d) {
$second_images[$d['id_product']] = $d['id_image'];
}
}
$positions = array_flip($ids);
foreach ($products_data as $pd) {
$id = $pd['id_product'];
if (!empty($pd['pa_minimal_quantity'])) {
$pd['minimal_quantity'] = $pd['pa_minimal_quantity'];
}
// out_of_stock is required to avoid extra queries in getProductProperties
$pd['out_of_stock'] = StockAvailable::outOfStock($id,$id_shop);
$pd = Product::getProductProperties($id_lang,$pd);
$image_type = $settings['image_type'] != 'original' ? $settings['image_type'] : null;
$link_rewrite = $pd['link_rewrite'];
if ($this->is_17) {
$pd = $this->presentProduct($pd);
if (!$image_type) {
$original_img_src = $this->context->link->getimageLink(
$pd['link_rewrite'],$pd['cover']['id_image']
);
$pd['cover']['bySize']['original']['url'] = $original_img_src;
}
} else {
$pd['img_src'] = $this->context->link->getimageLink($link_rewrite,$pd['id_image'],$image_type);
if ($settings['stock'] && $pd['available_for_order'] && !Configuration::get('PS_CATALOG_MODE') &&
Configuration::get('PS_STOCK_MANAGEMENT')) {
$pd = $this->addStockStatus($pd);
}
}
if (!empty($second_images[$id])) {
$src = $this->context->link->getimageLink($link_rewrite,$second_images[$id],$image_type);
$pd['second_img_src'] = $src;
}
if ($show_man && !empty($pd['id_manufacturer'])) {
$alias = Tools::str2url($pd['man_name']);
$pd['man_url'] = $this->getItemUrl('manufacturer',$pd['id_manufacturer'],$alias);
if ($show_man != 1) {
$pd['man_img_src'] = $this->getimageUrl('manufacturer',$show_man);
}
}
if ($show_cat && !empty($pd['id_category_default'])) {
$pd['cat_url'] = $this->getItemUrl('category',$pd['id_category_default'],$pd['cat_link_rewrite']);
}
$products_infos[$positions[$id]] = $pd;
}
ksort($products_infos);
return $products_infos;
}
这是我在tpl中用于查看相对于尺寸的选择的代码
<div class="product-variants">{*important refresh*}
{foreach from=$groups key=id_attribute_group item=group}
{if !empty($group.attributes)}
<div class="clearfix product-variants-item">
<span class="control-label">{$group.name}</span>
{if $group.group_type == 'select'}
<select
class="form-control form-control-select "
id="group_{$id_attribute_group}"
data-product-attribute="{$id_attribute_group}"
name="group[{$id_attribute_group}]">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<option value="{$id_attribute}" title="{$group_attribute.name}"{if $group_attribute.selected} selected="selected"{/if} >{$group_attribute.name}</option>
{/foreach}
</select>
{elseif $group.group_type == 'color'}
<ul id="group_{$id_attribute_group}" class="clearfix li_fl">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="input-container {if !$group.attributes_quantity[$id_attribute]} st_unavailable_combination {/if}" title="{$group_attribute.name}">
<input class="input-color" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}/>
<span class="color {if $group_attribute.texture}texture{/if}"
{if $group_attribute.html_color_code} style="background-color: {$group_attribute.html_color_code}" {/if}
{if $group_attribute.texture} style="background-image: url({$group_attribute.texture})" {/if}<span class="sr-only">{$group_attribute.name}</span></span>
<span class="st-input-loading"><i class="fto-spin5 animate-spin"></i></span>
</li>
{/foreach}
</ul>
{elseif $group.group_type == 'radio'}
<ul id="group_{$id_attribute_group}" class="clearfix li_fl">
{foreach from=$group.attributes key=id_attribute item=group_attribute}
<li class="input-container {if !$group.attributes_quantity[$id_attribute]} st_unavailable_combination {/if}" title="{$group_attribute.name}">
<input class="input-radio" type="radio" data-product-attribute="{$id_attribute_group}" name="group[{$id_attribute_group}]" value="{$id_attribute}"{if $group_attribute.selected} checked="checked"{/if}/>
<span class="radio-label">{$group_attribute.name}</span>
<span class="st-input-loading"><i class="fto-spin5 animate-spin"></i></span>
</li>
{/foreach}
</ul>
{/if}
</div>
{/if}
{/ foreach}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)