我在左栏设置了2个模块,其中一个模块有类别&一个与制造商, 两者都有自己的布局:产品/类别&产品/制造商,
这样可以正常工作:浏览类别时,左栏中仅显示类别模块,而浏览制造商时,左栏中仅显示制造商模块。
但是在检查产品详情时,它只会显示分配给布局“产品”的模块, 而这里是我无法理解该怎么做的地方。 如果将“产品”布局添加到类别和&制造商模块,然后(当然)显示两个模块,如何根据路线添加模块?
浏览分类示例:
1)只有类别模块显示在左栏(这里都很好)
index.php?route=product/category&path=33
2)输入产品:
index.php?route=product/product&path=33&product_id=31
现在显示分配给布局“产品”的所有模块,我只想要模块 在浏览要显示的类别(步骤1)时显示
示例浏览制造商:
1)左栏中只显示制造商模块(此处一切都很好)
index.php?route=product/manufacturer
2)输入与类别示例相同的产品:
index.php?route=product/product&manufacturer_id=9&product_id=31
现在显示分配给布局“产品”的所有模块,我只想要模块 在浏览制造商(步骤1)时显示
因此,它是同一产品的两条不同路线:
index.php?route=product/product&path=33&product_id=31
index.php?route=product/product&manufacturer_id=9&product_id=31
但适用的布局是带有路线产品/产品的“产品”
那么有没有办法将这两个不同的路由添加到两个不同的布局,所以模块可以正确显示或我想错了方法?
对此的任何输入都会很棒
OpenCart 1.5.6
答案 0 :(得分:1)
你有一些选择。您可以查看$_SERVER['HTTP_REFERER']
标题,这可能不会被发送(因此不是100%可靠),或者您可以使用会话来存储您来自哪里的密钥...例如,何时列出类别,在category
控制器中执行类似:
$this->session->data['user_is_listing'] = 'category';
如果用户跳转到manufacturer
控制器中的制造商列表,请设置相同的密钥,不同的值:
$this->session->data['user_is_listing'] = 'manufacturer';
然后,在column_left
控制器中添加对这两个模块的新检查(必须将制造商和类别模块分配到产品详细信息页面)并检查存储的值是什么密钥user_is_listing
下的会话...然后,是否允许模块渲染...
编辑:好的,我们假设您自己的模块名称为category1
和manufacturer1
(如果您使用的是默认模块,则名称将不带数字{ {1}})。现在,在左侧列中找到1
循环,我们将以这种方式修改它:
foreach ($extensions as $extension) {
现在,存储在会话中的名称必须与该模块的名称相同。