所以我一直致力于将 OpenCart 集成到 UserFrosting(http://www.userfrosting.com/)中。基本上,我通过.load
将页面注入到div
我自己的 html 页面中,使所有管理仪表板页面加载到 UserFrosting 仪表板中。我快完成了,但还有最后一块工作没有留在 UF 仪表板中。
我将使用目录/类别页面作为示例来展示我在做什么:
这是我的类别 html 文件,它被称为cata-categories.html
<!DOCTYPE html>
<html lang="en">
{% include 'components/head.html' %}
<script src="https://code.jquery.com/jquery-1.10.2.js"></script>
<body>
<div id="wrapper">
{% include 'components/nav-account.html' %}
<div id="page-wrapper">
{% include 'components/alerts.html' %}
<ol id="categories"></ol>
<script>
$( "#categories" ).load( "../solutions/admin/index.php?route=catalog/category" );
</script>
<br>
{% include 'components/footer.html' %}
</div>
</div></div>
</body>
</html>
这是通过 UserFrosting 的侧边栏访问的,在sidebar.html中使用以下代码:
{% if checkAccess('uri_manage_groups') %}
<li>
<a href="{{site.uri.public}}/cata-categories/"><i class="fa fa-tags fa-fw"></i>Categories</a>
</li>
{% endif %}
该页面通过以下代码在public/index.php中为 UserFrosting 呈现:
$app->get('/cata-categories/?', function () use ($app) {
$app->render('cata-categories.html', [
'page' => [
'author' => $app->site->author,
'title' => "Catagories",
'description' => "Catalogue Catagories.",
'alerts' => $app->alerts->getAndClearMessages()
]
]);
});
为了让所有链接都点击 OpenCart 页面,我将以下脚本放在每个主页面的底部.tpl
(例如category_list.tpl
):
<script>
$("#categories").on("click", "a", function (e) {
$("#categories").load($(this).attr("href"));
e.preventDefault();
});
</script>
然后为了在提交表单时将内容保持在同一页面上,我将控制器中的重定向(例如category.php)更改为以下内容:
$this->response->redirect('../../portal/cata-categories');
一切都很好,现在唯一的问题是表单提交或过滤结果中的错误。例如,如果有人尝试添加新类别但未填写任何信息并单击保存,它会重定向到/admin/index.php?route=catalog/category/add
但不在 UserFrosting 仪表板内。
我希望它保留在我的仪表板中,并且需要朝着正确的方向轻推控制器内的修改内容以使其执行此操作,我假设某种 AJAX 强制它不重新加载页面并仅显示错误。与过滤器按钮相同,它显然需要向 URL 添加过滤器,因此不会在仪表板中加载 - 需要一种无需刷新即可过滤的方法。
非常感谢有修改 OpenCart 经验的人提供的任何帮助,如果您需要有关我正在做什么的更多信息,请随时询问。