【问题标题】:Simple modification to OpenCart theme对 OpenCart 主题的简单修改
【发布时间】:2012-11-15 16:29:01
【问题描述】:

我在 OpenCart 中使用 Shoppica 主题。我想对分类页面进行修改。它提供了描述(我在后端输入),然后是产品列表。

在 category.tpl 中它说:

<?php if ($description) echo $description; ?>

但是我想要一个额外的描述,我们称之为 description2。这应该在产品列表之后。 在 PhpMyAdmin 中,我在 *oc_category_description* 中添加了另一行并将其命名为 description2 手动(所以在 PhpMyAdmin 中)我用文本填充了这个。

现在我将以下内容放在 category.tpl 文件中:

<?php if ($description2) echo $description2; ?>

但现在我收到一个错误:

未定义变量:description2 in /home/.../public_html/catalog/view/theme/shoppica2/template/product/category.tpl 在第 187 行

任何想法,我做错了什么。我是否需要在其他地方声明它(在另一个文件中?在哪里?)

【问题讨论】:

    标签: php phpmyadmin opencart


    【解决方案1】:

    需要了解OpenCart内置的MVC模式。

    简单地说——你有一个与数据库交互的模型类,一个在上面操作并调用模型方法(数据检索、数据更新、数据插入)的控制器类,并在视图处理输出时将输出传递给浏览器(应该是另一个类,但 OpenCart 只有像 MC - 带有模板文件的模型控制器部分)。

    所以对于您的问题:您必须修改 catalog/model/catalog/category.php 并查找名为 getCategory 的方法来检索具体类别数据。这里的选择查询应该是select * from ... - 如果是这样,一切都很好,但如果它像select category_id, category_description, ... from ... 那么你也必须在这里添加你的新字段(对不起,我不记得来自 OpenCart 的 SQL 查询)。

    另外编辑catalog/controller/product/category.php并查找控制类别数据的部分(调用类别模型)或查找以$this-&gt;data['description'] = ...;开头的行并在此处添加您的新字段,例如$this-&gt;data['description2'] = ...;

    希望这会有所帮助。

    【讨论】:

    • 很好解释。这是最好的方法,因为在代码中进行快速修复 SQL 调用是错误的方法。加 1
    • 没有特别需要了解 MVC 模式,只是软件不会神奇地将每一列转换为变量(这确实是 user1409956 怀疑的)。 OpenCart 完全有可能,即使它实际上使用了 MVC 模式,也可以让每个数据列作为模板的变量。无论如何 +1。
    • @PaulGregory 说得好,确实。无论如何,尽管我对 OpenCart 处理资源的方式以及完成某件事需要做多少工作不太满意,但我仍然喜欢 OpenCart 并将其视为开发人员(和客户)最好的开源电子商务平台:-) )。
    • 效果很好。谢谢!唯一的事情:如果我将后端中的任何内容更改为任何其他字段(如描述或元标记),description2 字段也会更改(被覆盖),description2 字段再次变为空白。有什么快速的方法来解决这个问题,还是我应该在 category_form.tpl(在 Admin/View/../catalog/ 中)添加$entry_description2
    • 是的,您需要对管理文件执行非常相似的操作。编辑控制器和模型,但请记住模型中将有一个用于写入表的函数和另一个用于检索数据的函数。不要忘记将您的条目也添加到语言文件中!
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2013-11-17
    • 1970-01-01
    • 2011-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多