OpenCart - 根据任意产品字段查看备用产品模板

时间:2013-08-12 13:30:57

标签: php templates opencart

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语句请求之前,我是否必须在产品控制器中加载该字段?

语法是什么样的?

1 个答案:

答案 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;
}

希望有所帮助。