Opencart:如何仅在特定页面上呈现模板?
在我的Opencart:如何仅在特定页面上呈现模板?,opencart,Opencart,在我的目录/controller/mycontroller.php中,我有这样一个脚本: $this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table foreach ($this->data['settings'] as $data) { if ($data['pageurl'] == 'http://'.$_SERVER['H
目录/controller/mycontroller.php
中,我有这样一个脚本:
$this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table
foreach ($this->data['settings'] as $data) {
if ($data['pageurl'] == 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']) {
$this->render();
}
}
Page URL Layout Position
================================================
http://...?product_id=10 Product Content Top
http://...?product_id=20 Product Content Top
http://... Home Content Top
$this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table
$render = false;
foreach ($this->data['settings'] as $data) {
if ($data['pageurl'] == HTTP_SERVER . $_SERVER['REQUEST_URI']) { // use defined constant HTTP_SERVER
$render = true;
}
}
if($render) {
$this->render();
}
在Extensions>Modules
中,我安装了我的扩展,我可以将不同的页面URL设置为不同的布局
和位置
,如下所示:
$this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table
foreach ($this->data['settings'] as $data) {
if ($data['pageurl'] == 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']) {
$this->render();
}
}
Page URL Layout Position
================================================
http://...?product_id=10 Product Content Top
http://...?product_id=20 Product Content Top
http://... Home Content Top
$this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table
$render = false;
foreach ($this->data['settings'] as $data) {
if ($data['pageurl'] == HTTP_SERVER . $_SERVER['REQUEST_URI']) { // use defined constant HTTP_SERVER
$render = true;
}
}
if($render) {
$this->render();
}
我的问题是-我只想在满足上述脚本条件的特定页面上呈现一次模板。当前发生的情况是,$this->render()
根据扩展>模块中的位置和布局多次显示模板。例如,当我访问http://...?product_id=10
page,它会显示模板两次,而它只应该显示一次,因为它只满足控制器中product\u id=10
的条件。我怎样才能做到这一点?首先,请执行以下操作:
var_dump('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
我猜您可能还缺少$\u服务器['QUERY\u STRING']
部分
要查看,您正在构建什么URL以与您在后端中设置的URL进行比较
下一步,请不要在循环中调用$this->render()
,无论该条件为什么会成功更多次,请执行以下操作:
$this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table
foreach ($this->data['settings'] as $data) {
if ($data['pageurl'] == 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']) {
$this->render();
}
}
Page URL Layout Position
================================================
http://...?product_id=10 Product Content Top
http://...?product_id=20 Product Content Top
http://... Home Content Top
$this->data['settings'] = $this->config->get('my_module'); // retrieves data from "setting" table
$render = false;
foreach ($this->data['settings'] as $data) {
if ($data['pageurl'] == HTTP_SERVER . $_SERVER['REQUEST_URI']) { // use defined constant HTTP_SERVER
$render = true;
}
}
if($render) {
$this->render();
}
我尝试了你的建议,但似乎没有任何效果。所以发生的事情是它经过了两次catalog\controller\common\content\u top.php
,因为产品
布局被分配给content top
两次。