Stack Overflow上还有另一篇文章,其中包含以下用于根据产品ID提供多个产品模板的代码
//42 is the id of the product
if ($this->request->get['product_id'] == 42) {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/customproduct.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/customproduct.tpl';
} else {
$this->template = 'default/template/product/customproduct.tpl';
}
} else {
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/product.tpl')) {
$this->template = $this->config->get('config_template') . '/template/product/product.tpl';
} else {
$this->template = 'default/template/product/customproduct.tpl';
}
}
我想检查一下我不会使用的替代产品字段值而不是ID,因此可以从管理面板进行管理。
例如,一条声明如下:#34;如果产品位置=附件,则获取product / accessory.tpl"
在我使用if语句请求之前,我是否必须在产品控制器中加载该字段?
语法是什么样的?
答案 0 :(得分:0)
您应该能够使用管理面板中的产品数据中的任何字段,例如您已引用的位置。
product
数据集中应包含所请求行的$product_info
表格中的所有内容。
尝试这样的事情:
$template = ($product_info['location'] == 'accessory') ? 'accessory.tpl' : 'product.tpl';
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/' . $template)) {
$this->template = $this->config->get('config_template') . '/template/product/' . $template;
} else {
$this->template = 'default/template/product/' . $template;
}
如果您预计不同位置会有许多不同的模板,那么使用开关控制会更有效。
switch ($product_info['location']):
case 'accessory':
$template = 'accessory.tpl';
break;
case 'tool':
$template = 'tool.tpl';
break;
default:
$template = 'product.tpl';
break;
endswitch;
if (file_exists(DIR_TEMPLATE . $this->config->get('config_template') . '/template/product/' . $template)) {
$this->template = $this->config->get('config_template') . '/template/product/' . $template;
} else {
$this->template = 'default/template/product/' . $template;
}
希望有所帮助。