尝试向 OpenCart 中的订单页面添加 "preview" 功能
Trying to add a "preview" feature to the Orders page in OpenCart
免责声明:第一次使用 OpenCart,也是第一次使用 MVC 环境。
我正在尝试修改主订单屏幕,以便在查看订单列表时,我可以单击任何订单上的 "Preview" 按钮并查看该订单的详细信息订单(送货地址、订购的商品、送货方式、订单总成本等)出现在浮动在订单列表右侧的 div 中。基本上,为了省去必须进入每个订单然后返回主屏幕的麻烦。
在以前的环境 (osCommerce) 中,我能够通过让预览按钮执行一个 Javascript 函数来实现这一点,该函数获取给定的订单 ID 并通过 POST 将其发送到单独的PHP脚本根据该订单ID查询数据库,并在HTML块中返回相关订单信息,然后替换主订单上订单预览div之前的内容列表页。使用此功能,我能够快速点击挂单并查看订单内容、订单去向等,而不会丢失我在列表中的位置。
到目前为止(使用 vQMod 对核心文件进行所有更改),我已经在每个订单的 "View" 和 [=28= 旁边添加了 "Preview" button/link ] 纽扣。 link 本质上是 "onclick=getorderinfo('XXX')",其中 getorderinfo 是我在该部分中定义的 javascript 函数,XXX 是列表该行中订单的订单 ID。我还修改了布局并在订单列表右侧创建了一个空的 div,我可以单击我的预览按钮并获取 div 以显示发送到 order_check.php 通过 POST。但除此之外,我完全不知道如何从数据库中检索订单详细信息并将其显示在那里。
我希望这只是调用正确的函数或 class 使用给定的订单 ID 并返回一组信息的问题,但它似乎比这更复杂。
有许多 OpenCart mod 被称为 "Order Preview,",但其中 none 可以做我上面描述的任何事情。
任何对 OpenCart 有丰富经验的人,我所描述的听起来是不是真的可行?
您可以使用 ajax
来实现。
我用了jquery
的load
和bootstrap
的modal
,你可以自定义modal的位置和大小。
这是 vqmod
文件:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<id>Admin quick view orders</id>
<version>1.0.0</version>
<vqmver>2.4.0</vqmver>
<author>digitcart.ir</author>
<file name="admin/view/template/sale/order_list.tpl">
<operation>
<search position="iafter"><![CDATA[title="<?php echo $button_edit; ?>" class="btn btn-primary"><i class="fa fa-pencil"></i></a>]]></search>
<add><![CDATA[
<a href="<?php echo $order['view']; ?>" class="btn btn-info quick-view">quick view</a>
]]></add>
</operation>
<operation>
<search position="before"><![CDATA[<?php echo $footer; ?>]]></search>
<add><![CDATA[
<script>
$(document).delegate('.quick-view', 'click', function(e) {
e.preventDefault();
$('#modal-quick-view').remove();
var element = this;
var url = $(element).attr('href') + ' #content',
html = '<div id="modal-quick-view" class="modal">';
html += ' <div class="modal-dialog modal-lg">';
html += ' <div class="modal-content">';
html += ' <div class="modal-header">';
html += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>';
html += ' <h4 class="modal-title">' + $(element).text() + '</h4>';
html += ' </div>';
html += ' <div class="modal-body"><?php echo $text_loading; ?></div>';
html += ' </div';
html += ' </div>';
html += '</div>';
$('body').append(html);
$('#modal-quick-view .modal-body').load(url);
$('#modal-quick-view').modal('show');
$('.modal-backdrop').remove();
});
</script>
]]></add>
</operation>
</file>
</modification>
已在 opencart 2.3.0.2 上测试
免责声明:第一次使用 OpenCart,也是第一次使用 MVC 环境。
我正在尝试修改主订单屏幕,以便在查看订单列表时,我可以单击任何订单上的 "Preview" 按钮并查看该订单的详细信息订单(送货地址、订购的商品、送货方式、订单总成本等)出现在浮动在订单列表右侧的 div 中。基本上,为了省去必须进入每个订单然后返回主屏幕的麻烦。
在以前的环境 (osCommerce) 中,我能够通过让预览按钮执行一个 Javascript 函数来实现这一点,该函数获取给定的订单 ID 并通过 POST 将其发送到单独的PHP脚本根据该订单ID查询数据库,并在HTML块中返回相关订单信息,然后替换主订单上订单预览div之前的内容列表页。使用此功能,我能够快速点击挂单并查看订单内容、订单去向等,而不会丢失我在列表中的位置。
到目前为止(使用 vQMod 对核心文件进行所有更改),我已经在每个订单的 "View" 和 [=28= 旁边添加了 "Preview" button/link ] 纽扣。 link 本质上是 "onclick=getorderinfo('XXX')",其中 getorderinfo 是我在该部分中定义的 javascript 函数,XXX 是列表该行中订单的订单 ID。我还修改了布局并在订单列表右侧创建了一个空的 div,我可以单击我的预览按钮并获取 div 以显示发送到 order_check.php 通过 POST。但除此之外,我完全不知道如何从数据库中检索订单详细信息并将其显示在那里。
我希望这只是调用正确的函数或 class 使用给定的订单 ID 并返回一组信息的问题,但它似乎比这更复杂。
有许多 OpenCart mod 被称为 "Order Preview,",但其中 none 可以做我上面描述的任何事情。
任何对 OpenCart 有丰富经验的人,我所描述的听起来是不是真的可行?
您可以使用 ajax
来实现。
我用了jquery
的load
和bootstrap
的modal
,你可以自定义modal的位置和大小。
这是 vqmod
文件:
<?xml version="1.0" encoding="UTF-8"?>
<modification>
<id>Admin quick view orders</id>
<version>1.0.0</version>
<vqmver>2.4.0</vqmver>
<author>digitcart.ir</author>
<file name="admin/view/template/sale/order_list.tpl">
<operation>
<search position="iafter"><![CDATA[title="<?php echo $button_edit; ?>" class="btn btn-primary"><i class="fa fa-pencil"></i></a>]]></search>
<add><![CDATA[
<a href="<?php echo $order['view']; ?>" class="btn btn-info quick-view">quick view</a>
]]></add>
</operation>
<operation>
<search position="before"><![CDATA[<?php echo $footer; ?>]]></search>
<add><![CDATA[
<script>
$(document).delegate('.quick-view', 'click', function(e) {
e.preventDefault();
$('#modal-quick-view').remove();
var element = this;
var url = $(element).attr('href') + ' #content',
html = '<div id="modal-quick-view" class="modal">';
html += ' <div class="modal-dialog modal-lg">';
html += ' <div class="modal-content">';
html += ' <div class="modal-header">';
html += ' <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>';
html += ' <h4 class="modal-title">' + $(element).text() + '</h4>';
html += ' </div>';
html += ' <div class="modal-body"><?php echo $text_loading; ?></div>';
html += ' </div';
html += ' </div>';
html += '</div>';
$('body').append(html);
$('#modal-quick-view .modal-body').load(url);
$('#modal-quick-view').modal('show');
$('.modal-backdrop').remove();
});
</script>
]]></add>
</operation>
</file>
</modification>
已在 opencart 2.3.0.2 上测试