【问题标题】:Multimerch 8 not sending order notification to seller with third party checkoutMultimerch 8 未通过第三方结账向卖家发送订单通知
【发布时间】:2020-09-04 09:10:03
【问题描述】:

我在 opencart 2.3.0.2 上使用 multitmerch 8 和 journal 2 用于我的多供应商商店。我最近安装了 xtension.in 的 ajax 最佳结帐扩展。结帐时一切似乎都很好,但我观察到卖家不再像以前那样通过电子邮件收到关于他们的产品订单的通知。

我相信扩展程序对结帐文件进行了一些更改。我不是 Opencart 的专家。我需要有关如何恢复卖家通知的帮助。

我在日志中看到以下错误:

Undefined index: seller_text in /home/public_html/vqmod/vqcache/vq2-system_storage_modification_catalog_view_theme_journal2_template_mail_order.tpl on line 93

谢谢

下面是 \catalog\controller\extension\module\xtensions\checkout\checkout.php 中的 xtension 控制器代码

<?php
class ControllerExtensionModuleXtensionsCheckoutCheckout extends Controller {
    public function country() {
        $json = array();

        $this->load->model('localisation/country');

        $country_info = $this->model_localisation_country->getCountry($this->request->get['country_id']);

        if ($country_info) {
            $this->load->model('localisation/zone');

            $json = array(
                'country_id'        => $country_info['country_id'],
                'name'              => $country_info['name'],
                'iso_code_2'        => $country_info['iso_code_2'],
                'iso_code_3'        => $country_info['iso_code_3'],
                'address_format'    => $country_info['address_format'],
                'postcode_required' => $country_info['postcode_required'],
                'zone'              => $this->model_localisation_zone->getZonesByCountryId($this->request->get['country_id']),
                'status'            => $country_info['status']      
            );
        }
        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
    public function customfield() {
        $json = array();

        // Customer Group
        if (isset($this->request->get['customer_group_id']) && is_array($this->config->get('config_customer_group_display')) && in_array($this->request->get['customer_group_id'], $this->config->get('config_customer_group_display'))) {
            $customer_group_id = $this->request->get['customer_group_id'];
        } else {
            $customer_group_id = $this->config->get('config_customer_group_id');
        }

        $custom_fields = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_model_path'))->getCustomFields($customer_group_id);

        foreach ($custom_fields as $custom_field) {
            $json[] = array(
                'custom_field_id' => $custom_field['custom_field_id'],
                'required'        => $custom_field['required']
            );
        }

        $this->response->addHeader('Content-Type: application/json');
        $this->response->setOutput(json_encode($json));
    }
}
?>

两个 multimerch vqmods 文件(我不确定哪个适用于此) multimerch_core.xml

<?xml version="1.0" ?>
<!DOCTYPE modification [
]>
<modification>
    <id>MultiMerch Digital Multivendor Marketplace Core</id>
    <author>http://multimerch.com/</author>

    <file name="system/engine/loader.php">
        <operation error="skip">
            <search position="after">
                $this->registry = $registry;
            </search>
            <add>
                $this->registry->set('MsLoader', \MsLoader::getInstance()->setRegistry($registry));
                $this->registry->set('ms_events', new \MultiMerch\Event\EventCollection());
                $this->registry->set('ms_event_manager', new \MultiMerch\Event\EventManager());
                $this->registry->set('MsHooks', new \MultiMerch\Core\Hook());
                $this->registry->set('MsEventManager', new \MultiMerch\Core\Event\EventManager());
                $this->registry->set('ms_logger', new \MultiMerch\Logger\Logger());
            </add>
        </operation>
    </file>

    <!-- For OpenCart 2.2 and 2.3 -->
    <file name="system/framework.php">
        <operation>
            <search position="after"><![CDATA[
                if ($config->has('action_pre_action')) {
            ]]></search>
            <add><![CDATA[
                $res = $registry->get('db')->query("SELECT `value` FROM " . DB_PREFIX . "setting WHERE store_id = '0' AND `key`='msconf_config_seo_url_enable'");
                $pre_actions = $config->get('action_pre_action');
                foreach ($pre_actions as $key => $pre_action) {
                    if($pre_action == 'startup/seo_url' && $res->num_rows && $res->row['value'])
                        $pre_actions[$key] = 'startup/multimerch_seo_url';
                }
                $config->set('action_pre_action', $pre_actions);
            ]]></add>
        </operation>

        <operation>
            <search position="before"><![CDATA[
                // Front Controller
            ]]></search>
            <add><![CDATA[
                $registry->get('MsEventManager')->setRegistry($registry);
                $registry->get('MsHooks')->setRegistry($registry);
                $registry->get('MsHooks')->registerDefaultHooks();
            ]]></add>
        </operation>
    </file>

    <file name="system/library/template/php.php">
        <operation>
            <search position="after"><![CDATA[
                final class PHP {
            ]]></search>
            <add><![CDATA[
                public function __get($key) {
                    return \MsLoader::getInstance()->getRegistry()->get($key);
                }

                public function __set($key, $value) {
                    \MsLoader::getInstance()->getRegistry()->set($key, $value);
                }
            ]]></add>
        </operation>
    </file>

    <file name="system/library/cart/currency.php">
        <operation>
            <search position="replace"><![CDATA[public function format($number, $currency, $value = '', $format = true) {]]></search>
            <add><![CDATA[public function format($number, $currency = '', $value = '', $format = true) {]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[public function format]]></search>
            <add><![CDATA[
                if (!$currency)
                    $currency = \MsLoader::getInstance()->getRegistry()->get('config')->get('config_currency');
            ]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[public function has]]></search>
            <add><![CDATA[
                if (!$currency)
                    $currency = \MsLoader::getInstance()->getRegistry()->get('config')->get('config_currency');
            ]]></add>
        </operation>

        <operation>
            <search position="replace"><![CDATA[($currency)]]></search>
            <add><![CDATA[($currency = '')]]></add>
        </operation>

        <operation>
            <search position="before"><![CDATA[if (isset($this->currencies[$currency])) {]]></search>
            <add><![CDATA[
                if (!$currency)
                    $currency = \MsLoader::getInstance()->getRegistry()->get('config')->get('config_currency');
            ]]></add>
        </operation>
    </file>

    <!-- Enable "-" in routes -->
    <file name="system/engine/action.php,system/engine/loader.php,admin/controller/startup/router.php,catalog/controller/startup/router.php">
        <operation error="log">
            <search position="replace"><![CDATA[preg_replace('/[^a-zA-Z0-9_\/]/', '', (string)$route)]]></search>
            <add><![CDATA[preg_replace('/[^a-zA-Z0-9\-_\/]/', '', (string)$route)]]></add>
        </operation>
    </file>

    <!-- IE console fix -->
    <file name="catalog/view/theme/*/template/common/header.tpl">
        <operation>
            <search position="before"><![CDATA[
                <?php foreach ($scripts as $script) { ?>
            ]]></search>
            <add><![CDATA[
            <?php if(MsLoader::getInstance()->MsHelper->isInstalled()) { ?>
                <script type="text/javascript"> if (!window.console) console = {log: function() {}}; var msconf_account_pagination_limit = '<?php echo $this->config->get('msconf_account_pagination_limit'); ?>'; var config_language = <?php echo $dt_language; ?>; var msLanguageDefaults = { ms_account_product_shipping_elsewhere: "<?php echo $this->language->get('ms_account_product_shipping_elsewhere'); ?>"} </script>
            <?php } ?>
            ]]></add>
        </operation>
    </file>

    <!-- load common multimerch files -->
    <file name="catalog/controller/common/header.php">
        <operation error="log">
            <search position="after"><![CDATA[
                public function index() {
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $data = array_merge(MsLoader::getInstance()->getRegistry()->get('load')->language('multiseller/multiseller'), isset($data) ? $data : array());

                MsLoader::getInstance()->MsHelper->addStyle('multiseller');

                // note: renamed catalog
                $lang = "view/javascript/multimerch/datatables/lang/" . $this->config->get('config_language') . ".lng";
                $data['dt_language'] = file_exists(DIR_APPLICATION . $lang) ? "'catalog/$lang'" : "undefined";

                // Add complemented common.js
                $this->document->addScript('catalog/view/javascript/ms-common.js');

                $data['ms_seller_created'] = MsLoader::getInstance()->MsSeller->isCustomerSeller($this->customer->getId());
            }
            ]]></add>
        </operation>
    </file>

    <!-- Get order status id from database -->
    <file name="catalog/model/account/order.php">
        <operation>
            <search position="replace"><![CDATA[
                $query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname, os.name as status, o.date_added, o.total, o.currency_code, o.currency_value FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit);
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname, os.name as status, os.order_status_id, o.date_added, o.total, o.currency_code, o.currency_value FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit);
            } else {
                $query = $this->db->query("SELECT o.order_id, o.firstname, o.lastname, os.name as status, o.date_added, o.total, o.currency_code, o.currency_value FROM `" . DB_PREFIX . "order` o LEFT JOIN " . DB_PREFIX . "order_status os ON (o.order_status_id = os.order_status_id) WHERE o.customer_id = '" . (int)$this->customer->getId() . "' AND o.order_status_id > '0' AND o.store_id = '" . (int)$this->config->get('config_store_id') . "' AND os.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY o.order_id DESC LIMIT " . (int)$start . "," . (int)$limit);
            }
            ]]></add>
        </operation>
        <operation>
            <search position="replace"><![CDATA[
                public function getOrder($order_id) {
            ]]></search>
            <add><![CDATA[
                public function getOrder($order_id, $type = NULL) {
            ]]></add>
        </operation>
        <operation>
            <search position="replace"><![CDATA[
                $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND order_status_id > '0'");
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                if (empty($type)) {
                    $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND order_status_id > '0'");
                } elseif($type == 'seller') {
                    $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` AS o, `" . DB_PREFIX . "ms_order_product_data` AS m WHERE o.order_id = m.order_id AND o.order_id = " . (int)$order_id . " AND m.seller_id = " . (int)$this->customer->getId() . " AND o.order_status_id > '0'");
                }
            } else {
                $order_query = $this->db->query("SELECT * FROM `" . DB_PREFIX . "order` WHERE order_id = '" . (int)$order_id . "' AND customer_id = '" . (int)$this->customer->getId() . "' AND order_status_id > '0'");
            }
            ]]></add>
        </operation>
        <operation>
            <search position="replace"><![CDATA[
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $query = $this->db->query("SELECT op.*, opd.* FROM " . DB_PREFIX . "order_product op LEFT JOIN " . DB_PREFIX . "ms_order_product_data opd ON (op.order_id = opd.order_id AND op.product_id = opd.product_id AND op.order_product_id = opd.order_product_id) WHERE op.order_id = '" . (int)$order_id . "'");
                if(empty($query->rows)) {
                    $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
                }
            } else {
                $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_product WHERE order_id = '" . (int)$order_id . "'");
            }
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/account/order.php">
        <operation>
            <search position="after"><![CDATA[
                foreach ($products as $product) {
            ]]></search>
            <add><![CDATA[
                $ms_order_product_data = FALSE;
                if (MsLoader::getInstance()->MsHelper->isInstalled()) {
                    $ms_order_product_data = $this->MsLoader->MsOrderData->getOrderData(array(
                        'product_id' => $product['product_id'],
                        'order_id' => $product['order_id'],
                        'order_product_id' => $product['order_product_id'],
                        'single' => 1
                    ));
                    $this->load->language('multiseller/multiseller');
                }
            ]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[
                'reorder'  => $reorder,
            ]]></search>
            <add><![CDATA[
                'shipping_method' => !empty($ms_order_product_data['shipping_method']) ? " <i>(" . sprintf($this->language->get('mm_account_order_shipping_via'), $ms_order_product_data['shipping_method']) . ")</i>" : '',
            ]]></add>
        </operation>
    </file>

    <file name="catalog/view/theme/*/template/account/order_info.tpl">
        <operation error="log">
            <search position="replace"><![CDATA[
                <?php echo $product['name']; ?>
            ]]></search>
            <add><![CDATA[
                <?php echo $product['name'] . " " . $product['shipping_method']; ?>
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/common/footer.php">
        <operation>
            <search position="after"><![CDATA[
                public function index() {
            ]]></search>
            <add><![CDATA[
                $data = array_merge(MsLoader::getInstance()->getRegistry()->get('load')->language('multiseller/multiseller'), isset($data) ? $data : array());
            ]]></add>
        </operation>
    </file>

    <file name="catalog/view/theme/*/template/common/footer.tpl">
        <operation error="skip">
            <search position="replace"><![CDATA[
            <div id="powered"><?php echo $powered; ?></div>
            ]]></search>
            <add><![CDATA[
            <div id="powered"><?php echo $powered; ?><?php echo $ms_footer; ?></div>
            ]]></add>
        </operation>
    </file>

    <!-- Disable the product if quantity is 0 -->
    <file name="catalog/model/checkout/order.php">
        <operation>
            <search position="after"><![CDATA[
                $this->db->query("UPDATE " . DB_PREFIX . "product SET quantity = (quantity - " . (int)$order_product['quantity'] . ") WHERE product_id = '" . (int)$order_product['product_id'] . "' AND subtract = '1'");
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                if ($this->config->get('msconf_disable_product_after_quantity_depleted')) {
                    $res = $this->db->query("SELECT quantity FROM " . DB_PREFIX . "product WHERE product_id = '" . (int)$order_product['product_id'] . "'");
                    if ((int)$res->row['quantity'] <= 0) {
                        MsLoader::getInstance()->MsProduct->changeStatus((int)$order_product['product_id'], MsProduct::STATUS_DISABLED);
                        MsLoader::getInstance()->MsProduct->disapprove((int)$order_product['product_id']);
                    }
                }
            }
            ]]></add>
        </operation>

        <operation>
            <search position="before"><![CDATA[
                // Admin Alert Mail
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $this->MsLoader->MsMail->sendOrderMails($order_id);
            }
            ]]></add>
        </operation>
    </file>

    <!-- Create product return instance for seller -->
    <!--<file name="catalog/controller/account/return.php">
        <operation>
            <search position="after" offset="1"><![CDATA[
            $this->model_account_activity->addActivity('return_guest', $activity_data);
        ]]></search>
            <add><![CDATA[
        $data = $this->request->post;
        $data['return_status_id'] = (int)$this->config->get('config_return_status_id');
        $data['seller_id'] = MsLoader::getInstance()->MsProduct->getSellerId($data['product_id']);

        $seller_return_id = MsLoader::getInstance()->MsReturn->createReturn($data);
        ]]></add>
        </operation>
    </file>-->

    <!-- Hide shipping calculations from cart if MM Vendor Shipping enabled. -->
    <file name="catalog/controller/extension/total/shipping.php">
        <operation>
            <search position="replace"><![CDATA[
                if ($this->config->get('shipping_status') && $this->config->get('shipping_estimator') && $this->cart->hasShipping()) {
            ]]></search>
            <add><![CDATA[
                if ($this->config->get('shipping_status') && $this->config->get('shipping_estimator') && $this->cart->hasShipping() && (MsLoader::getInstance()->MsHelper->isInstalled() ? (int)$this->config->get('msconf_shipping_type') !== 2 : true)) {
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/checkout/confirm.php">
        <operation>
            <search position="replace"><![CDATA[
                if (!isset($this->session->data['shipping_method'])) {
            ]]></search>
            <add><![CDATA[
                if(MsLoader::getInstance()->MsHelper->isInstalled() && (int)$this->config->get('msconf_shipping_type') == 2) {
                    foreach($this->cart->getProducts() as $product) {
                        if (!isset($this->session->data['ms_cart_product_shipping']['fixed'][$product['product_id']]) && !isset($this->session->data['ms_cart_product_shipping']['combined'][$product['product_id']]) && !isset($this->session->data['ms_cart_product_shipping']['free'][$product['product_id']])) {
                            $redirect = $this->url->link('checkout/checkout', '', true);
                        }
                    }
                } else if (!isset($this->session->data['shipping_method'])) {
            ]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[
                unset($this->session->data['shipping_methods']);
            ]]></search>
            <add><![CDATA[
            if(isset($this->session->data['ms_cart_product_shipping']))
                unset($this->session->data['ms_cart_product_shipping']);

            if(isset($this->session->data['ms_coupons']))
                unset($this->session->data['ms_coupons']);
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/checkout/success.php">
        <operation>
            <search position="after"><![CDATA[
                unset($this->session->data['totals']);
            ]]></search>
            <add><![CDATA[
            if(isset($this->session->data['ms_cart_product_shipping']))
                unset($this->session->data['ms_cart_product_shipping']);

            if(isset($this->session->data['ms_coupons']))
                unset($this->session->data['ms_coupons']);
            ]]></add>
        </operation>
    </file>

    <!-- add mm mail to customer before $this->response->redirect($this->url->link('account/return/success', '', true)); -->
    <file name="catalog/controller/account/return.php">
        <operation>
            <search position="after"><![CDATA[
                public function add() {
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                if(isset($this->request->get['product_id'])) {
                    $this->session->data['return_product_id'] = $this->request->get['product_id'];
                }
            }
            ]]></add>
        </operation>
        <operation>
            <search position="before"><![CDATA[
                $this->response->redirect($this->url->link('account/return/success', '', true));
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                // get product seller's email
                if(isset($this->session->data['return_product_id'])) {
                    $seller_id = MsLoader::getInstance()->MsProduct->getSellerId($this->session->data['return_product_id']);
                    unset($this->session->data['return_product_id']);

                    if($seller_id) {
                        $seller_email = MsLoader::getInstance()->MsSeller->getSellerEmail($seller_id);
                        if($seller_email) {
                            $this->load->language('multiseller/multiseller');
                            $serviceLocator = MsLoader::getInstance()->load('\MultiMerch\Module\MultiMerch')->getServiceLocator();
                            $mailTransport = $serviceLocator->get('MailTransport');
                            $mails = new \MultiMerch\Mail\Message\MessageCollection();

                            $MailProductReturned = $serviceLocator->get('MailProductReturned', false)
                                ->setTo($seller_email)
                                ->setData(array(
                                    'product_name' => $this->request->post['product'],
                                    'store_name' => $this->config->get('config_name')
                                ));

                            $mails->add($MailProductReturned);
                            $mailTransport->sendMails($mails);
                        }
                    }
                }
            }
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/account/register.php">
        <operation>
            <search position="before"><![CDATA[
                // Add to activity log
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $this->ms_events->add(new \MultiMerch\Event\Event(array(
                    'customer_id' => $this->customer->getId(),
                    'event_type' => \MultiMerch\Event\Event::CUSTOMER_CREATED,
                    'data' => array()
                )));

                if($this->ms_events->count()) {
                    $this->ms_event_manager->create($this->ms_events);
                }
            }
            ]]></add>
        </operation>
    </file>

    <!--<file name="admin/controller/setting/setting.php">
        <operation>
            <search position="before"><![CDATA[
                $this->session->data['success'] = $this->language->get('text_success');
            ]]></search>
            <add><![CDATA[
                if($this->request->post['config_language'] && $this->session->data['language'] !== $this->request->post['config_language']) {
                    $this->session->data['language'] = $this->request->post['config_language'];
                }
            ]]></add>

        </operation>
    </file>-->

    <file name="catalog/controller/checkout/cart.php">
        <operation error="log">
            <search position="before" index="1"><![CDATA[
                if ($this->config->get($result['code'] . '_status')) {
            ]]></search>
            <add><![CDATA[
                if ($result['code'] === 'mm_shipping_total')
                    continue;
            ]]></add>
        </operation>
    </file>
</modification>

和其他 vqmod 文件 multimerch_core_transactions.xml

<?xml version="1.0" ?>
<!DOCTYPE modification [
]>
<modification>
    <id>MultiMerch Core Transactions</id>
    <author>http://multimerch.com/</author>

    <!-- transactions for order -->
    <file name="catalog/model/checkout/order.php">
        <operation>
            <search position="before"><![CDATA[return $order_id;]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled())
                $this->MsLoader->MsTransaction->createMsOrderDataEntries($order_id);
            ]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[
                $this->db->query("UPDATE `" . DB_PREFIX . "order` SET order_status_id = '" . (int)$order_status_id . "', date_modified = NOW() WHERE order_id = '" . (int)$order_id . "'");
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled())
                $this->MsLoader->MsTransaction->createMsOrderBalanceEntries($order_id, $order_status_id);
            ]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[
                if (!in_array($order_info['order_status_id'], array_merge($this->config->get('config_processing_status')
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $event_exists = $this->ms_event_manager->getEvents(array(
                    'event_type' => \MultiMerch\Event\Event::ORDER_CREATED,
                    'data' => json_encode(array('order_id' => (int)$order_id)),
                    'single' => 1
                ));

                if(empty($event_exists)) {
                    $this->ms_events->add(new \MultiMerch\Event\Event(array(
                        'customer_id' => $this->customer->getId(),
                        'event_type' => \MultiMerch\Event\Event::ORDER_CREATED,
                        'data' => array('order_id' => (int)$order_id)
                    )));
                }

                if($this->ms_events->count()) {
                    $this->ms_event_manager->create($this->ms_events);
                }
            }
            ]]></add>
        </operation>
    </file>

    <!-- Fix admin order edit -->
    <file name="catalog/controller/api/order.php">
        <operation>
            <search position="after"><![CDATA[
                $this->model_checkout_order->editOrder($order_id, $order_data);
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled())
                $this->MsLoader->MsTransaction->adminUpdateMsOrderDataEntries($order_id);
            ]]></add>
        </operation>

        <operation>
            <search position="after"><![CDATA[
                $this->model_checkout_order->addOrderHistory($order_id,
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                $transactions = $this->MsLoader->MsTransaction->createMsOrderBalanceEntries($order_id, $this->request->post['order_status_id']);

                $transaction_ids = [];
                foreach($transactions as $transaction_id) {
                    if($transaction_id) $transaction_ids[] = $transaction_id;
                }

                $suborders = $this->MsLoader->MsSuborder->getSuborders(array(
                    'order_id' => $order_id
                ));

                $sellers_suborders_info = array();
                foreach($suborders as $suborder) {
                    $sellers_suborders_info[] = $suborder['seller'] . ' (#' . $order_id . '-' . $suborder['suborder_id']. ')';
                }

                $this->load->language('multiseller/multiseller');
                $json['success'] = sprintf($this->language->get('ms_order_success_suborders_modified'), $order_id, implode(', ', $sellers_suborders_info));

                if(!empty($transaction_ids)) {
                    $json['success'] .= ' ' . sprintf($this->language->get('ms_order_success_transactions_created'), implode(', ', $transaction_ids));
                }
            }
            ]]></add>
        </operation>

        <operation>
            <search position="replace" index="5"><![CDATA[
                $json['success'] = $this->language->get('text_success');
            ]]></search>
            <add><![CDATA[
            if(!MsLoader::getInstance()->MsHelper->isInstalled()) {
                $json['success'] = $this->language->get('text_success');
            }
            ]]></add>
        </operation>
    </file>

    <file name="admin/view/template/marketing/coupon_form.tpl">
        <operation>
            <search position="before"><![CDATA[
                <div class="panel panel-default">
            ]]></search>
            <add><![CDATA[
            <?php if(MsLoader::getInstance()->MsHelper->isInstalled()) { ?>
                <div class="alert alert-warning" role="alert">
                    <?php echo MsLoader::getInstance()->getRegistry()->get('language')->get('ms_fixed_coupon_warning'); ?>
                </div>
            <?php } ?>
            ]]></add>
        </operation>
    </file>

    <file name="admin/view/template/sale/voucher_form.tpl">
        <operation>
            <search position="before"><![CDATA[
                <div class="panel panel-default">
            ]]></search>
            <add><![CDATA[
            <?php if(MsLoader::getInstance()->MsHelper->isInstalled()) { ?>
                <div class="alert alert-warning" role="alert">
                    <?php echo MsLoader::getInstance()->getRegistry()->get('language')->get('ms_voucher_warning'); ?>
                </div>
            <?php } ?>
            ]]></add>
        </operation>
    </file>

    <file name="admin/view/template/sale/voucher_list.tpl">
        <operation>
            <search position="before"><![CDATA[
                <div class="panel panel-default">
            ]]></search>
            <add><![CDATA[
            <?php if(MsLoader::getInstance()->MsHelper->isInstalled()) { ?>
                <div class="alert alert-warning" role="alert">
                    <?php echo MsLoader::getInstance()->getRegistry()->get('language')->get('ms_voucher_warning'); ?>
                </div>
            <?php } ?>
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/extension/total/coupon.php">
        <operation>
            <search position="before"><![CDATA[
                $this->response->addHeader
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                if(isset($coupon_info["type"]) AND $coupon_info["type"] == "F"){
                    unset($json['redirect']);
                    unset($this->session->data['success']);
                    unset($this->session->data['coupon']);
                    $this->load->language('multiseller/multiseller');
                    $json['error'] = $this->language->get('ms_error_fixed_coupon_warning');
                }
            }
            ]]></add>
        </operation>
    </file>

    <file name="catalog/controller/extension/total/voucher.php">
        <operation>
            <search position="before"><![CDATA[
                $this->response->addHeader
            ]]></search>
            <add><![CDATA[
            if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                unset($json['redirect']);
                unset($this->session->data['success']);
                unset($this->session->data['voucher']);
                $this->load->language('multiseller/multiseller');
                $json['error'] = $this->language->get('ms_error_voucher_warning');
            }
            ]]></add>
        </operation>
    </file>

    <!-- MultiMerch Discount coupons -->
    <file name="catalog/controller/checkout/cart.php">
        <operation>
            <search position="replace"><![CDATA[$result = $this->load->controller('extension/total/' . basename($file, '.php'));]]></search>
            <add><![CDATA[
                $ms_controller_path = 'extension/total/' . basename($file, '.php');

                if(MsLoader::getInstance()->MsHelper->isInstalled() && $this->config->get('msconf_allow_seller_coupons') && (string)basename($file, '.php') === 'coupon') {
                    $ms_controller_path = 'multimerch/cart_coupon';
                }

                $result = $this->load->controller($ms_controller_path);
            ]]></add>
        </operation>
    </file>
</modification>

【问题讨论】:

    标签: opencart checkout opencart2.3


    【解决方案1】:

    multitmerch 8 和“xtension 的最佳结账扩展程序”之间似乎存在冲突。您应该在 xtension 控制器的代码中添加一些内容。这个“东西”应该在 vqmod 文件或 multitmerch 8 中(某些部分会添加对标准 opencart 结帐的更改)。应该为 xtension 控制器添加规则。

    不能告诉你更多。请向您添加 multitmerch 8 vqmod 和 xtension 控制器的代码。以及指向实时网站的链接。

    【讨论】:

    • 我已按要求添加代码,请查看
    【解决方案2】:

    multimerch_core.xml ...这部分代码必须用于电子邮件发送:

    <file name="catalog/model/checkout/order.php">
            <operation>
                <search position="before"><![CDATA[
                    // Admin Alert Mail
                ]]></search>
                <add><![CDATA[
                if(MsLoader::getInstance()->MsHelper->isInstalled()) {
                    $this->MsLoader->MsMail->sendOrderMails($order_id);
                }
                ]]></add>
            </operation>
        </file>
    

    仔细检查vqmod缓存文件:/home/public_html/vqmod/vqcache/vq2-catalog_model_checkout_order.php 修改安装在这个文件中...

    此错误是其他 vqmod 修改的结果...在您显示的 vqmod mofications 中没有此代码

    Undefined index: seller_text in /home/public_html/vqmod/vqcache/vq2-system_storage_modification_catalog_view_theme_journal2_template_mail_order.tpl on line 93
    

    【讨论】:

    • 我检查了 /home/public_html/vqmod/vqcache/vq2-catalog_model_checkout_order.php 您突出显示的代码区域通常会提醒管理员。我正在寻找触发卖家通知的位置以及在 xtension 模块中包含的位置
    【解决方案3】:

    以下是 xtension 模块的 install.xml 中的代码:

    <?xml version="1.0" encoding="utf-8"?>
    <modification>
        <name>Xtensions-Best Checkout and Customer FrameWork</name>
        <version>Module_Version_5.0_OC_V_2.3.x.x</version>
        <code>xtensions_best_checkout</code>
        <file path="admin/controller/customer/custom_field.php">
            <operation>
                <search><![CDATA['sort_order'      => $result['sort_order'],]]></search>
                <add position="after"><![CDATA[
                    'edit_custom'     => $this->url->link($this->config->get('xtensions_custom_fields_path').'/edit', 'token=' . $this->session->data['token'] . '&custom_field_id=' . $result['custom_field_id'] . $url, 'SSL'),
                ]]></add>
            </operation>
            <operation>
                <search><![CDATA[$data['button_edit'] = $this->language->get('button_edit');]]></search>
                <add position="after"><![CDATA[
                    $data['button_edit_custom'] = $this->language->get('button_edit_custom');
                    $data['button_add_custom'] = $this->language->get('button_add_custom');
                    $data['add_custom'] = $this->url->link($this->config->get('xtensions_custom_fields_path').'/add', 'token=' . $this->session->data['token'] . $url, 'SSL');
            ]]></add>
            </operation>
        </file>
        <file path="admin/language/*/customer/custom_field.php">
            <operation>
                <search><![CDATA[<?php]]></search>
                <add position="after"><![CDATA[
                    $_['button_edit_custom']                = 'Edit using Xtensions Custom Fields';
                    $_['button_add_custom']                 = 'Add New using Xtensions Custom Fields';
                ]]></add>
            </operation>
        </file>
        <file path="admin/view/template/customer/custom_field_list.tpl">
            <operation>
                <search><![CDATA[<td class="text-right"><a href="<?php echo $custom_field['edit']; ?>" data-toggle="tooltip" title="<?php echo $button_edit; ?>" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>]]></search>
                <add position="replace"><![CDATA[
                    <td class="text-right"><a href="<?php echo $custom_field['edit_custom']; ?>" data-toggle="tooltip" title="<?php echo $button_edit_custom; ?>" class="btn btn-primary"><i class="fa fa-pencil"></i> <?php echo $button_edit_custom; ?></a><a href="<?php echo $custom_field['edit']; ?>" data-toggle="tooltip" title="<?php echo $button_edit; ?>" class="btn btn-primary"><i class="fa fa-pencil"></i></a></td>
                ]]></add>
            </operation>
            <operation>
                <search><![CDATA[<div class="pull-right"><a href="<?php echo $add; ?>" data-toggle="tooltip" title="<?php echo $button_add; ?>" class="btn btn-primary"><i class="fa fa-plus"></i></a>]]></search>
                <add position="replace"><![CDATA[
                    <div class="pull-right"><a href="<?php echo $add_custom; ?>" data-toggle="tooltip" title="<?php echo $button_add_custom; ?>" class="btn btn-primary"><i class="fa fa-plus"></i> <?php echo $button_add_custom; ?></a><a href="<?php echo $add; ?>" data-toggle="tooltip" title="<?php echo $button_add; ?>" class="btn btn-primary"><i class="fa fa-plus"></i></a>
                ]]></add>
            </operation>
        </file>
        <file path="admin/view/template/sale/order_invoice.tpl">
            <operation error="skip">
                <search><![CDATA[<?php echo $order['payment_address']; ?>]]></search>
                <add position="after"><![CDATA[
                <?php if($order['customer_fields']){ echo '<br/>'; ?>
                    <?php foreach ($order['customer_fields'] as $field){?>
                        <?php echo $field?'<br/>'.$field:''; ?>
                    <?php } ?>
                <?php } ?>
                ]]></add>
            </operation>
        </file>
        <file path="admin/view/template/sale/order_shipping.tpl">
            <operation error="skip">
                <search><![CDATA[<?php echo $order['telephone']; ?>]]></search>
                <add position="after"><![CDATA[
                    <?php foreach ($order['customer_fields'] as $field){?>
                        <?php echo $field?'<br/>'.$field:''; ?>
                    <?php } ?>
                ]]></add>
            </operation>
        </file>
        <file path="admin/controller/sale/order.php">
            <operation error="skip">
                <search><![CDATA[$data['products'] = array();]]></search>
                <add position="before"><![CDATA[
            //xtensions- Custom Fields
                if($this->xtensions_checkout->isActive('xtensions_best_checkout',$order_info['store_id'])){
                    $formatted_address = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_path'))->getFormattedAddressForOrder($order_info);
                    $data['payment_address'] = $formatted_address['payment_address_formatted'];
                    $data['shipping_address'] = $formatted_address['shipping_address_formatted'];
                }
                //xtensions- Custom Fields
                ]]></add>
            </operation>
            <operation error="skip">
                <search><![CDATA[$product_data = array();]]></search>
                <add position="before"><![CDATA[
            //xtensions- Custom Fields
                    $customer_fields =array();
                    if($this->xtensions_checkout->isActive('xtensions_best_checkout',$order_info['store_id'])){
                        $customer_fields =array();
                        $fieldData = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_path'))->getCustomFieldByIdentifier($order_info['custom_field'],'account');
                        foreach($this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_path'))->getCustomFieldsAll($order_info['customer_group_id']) as $field){
                            if($field['location']=='account' && $field['invoice']){
                                if(isset($fieldData[$field['identifier']])){
                                    $customer_fields[] = $fieldData[$field['identifier']];
                                }
                            }
                        }
                        $formatted_address = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_path'))->getFormattedAddressForOrder($order_info);
                        $payment_address = $formatted_address['payment_address_formatted'];
                        $shipping_address = $formatted_address['shipping_address_formatted'];
                    }
                    //xtensions- Custom Fields
                ]]></add>
            </operation>
            <operation error="skip">
                <search><![CDATA['order_id'        => $order_id,]]></search>
                <add position="before"><![CDATA[
            //xtensions- Custom Fields
            'customer_fields'    => $customer_fields,
            //xtensions- Custom Fields
                ]]></add>
            </operation>
        </file>
        <file path="admin/controller/startup/startup.php">
            <operation>
                <search><![CDATA[$this->registry->set('cart', new Cart\Cart($this->registry));]]></search>
                <add position="after"><![CDATA[
            $xtensions_checkout = new XtensionsCheckout($this->registry);
                $this->registry->set('xtensions_checkout', $xtensions_checkout);
                    ]]></add>
            </operation>
        </file>
        <file path="catalog/controller/startup/startup.php">
            <operation>
                <search><![CDATA[$this->registry->set('cart', new Cart\Cart($this->registry));]]></search>
                <add position="after"><![CDATA[
            $xtensions_checkout = new XtensionsCheckout($this->registry);
                $this->registry->set('xtensions_checkout', $xtensions_checkout);
                    ]]></add>
            </operation>
        </file>
        <file path="catalog/model/account/customer.php">
            <operation>
                <search><![CDATA[$address_id = $this->db->getLastId();]]></search>
                <add position="after"><![CDATA[
            if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id')) && isset($data['noaddress']) && $data['noaddress']){
                    $this->db->query("DELETE FROM " . DB_PREFIX . "address WHERE customer_id = '" . (int)$customer_id . "' AND address_id ='".$address_id. "'");
                    $address_id = 0;
                }
            ]]></add>
            </operation>
        </file>
        <file path="catalog/controller/account/address.php">
            <operation>
                <search><![CDATA[public function add() {]]></search>
                <add position="after"><![CDATA[
            if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                    $this->response->setOutput($this->load->controller($this->config->get('xtensions_account_controller_path').'address/add', '', 'SSL'));
                    return '';
                }
          ]]></add>
            </operation>
        <operation>
                <search><![CDATA[public function edit() {]]></search>
                <add position="after"><![CDATA[
            if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                    $this->response->setOutput($this->load->controller($this->config->get('xtensions_account_controller_path').'address/edit', '', 'SSL'));
                    return '';
                }
          ]]></add>
        </operation>
        <operation>
                <search><![CDATA[$data['add'] = $this->url->link('account/address/add', '', true);]]></search>
                <add position="before"><![CDATA[
            if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                $data['addresses'] = $this->load->controller($this->config->get('xtensions_account_controller_path').'address/addresses');
            }
          ]]></add>
            </operation>  
        </file>
        <file path="catalog/controller/checkout/checkout.php">
            <operation>
                <search><![CDATA[$this->response->setOutput($this->load->view('checkout/checkout', $data));]]></search>
                <add position="replace"><![CDATA[
            // Xtensions Best Checkout
                if ($this->xtensions_checkout->isActive('xtensions_best_checkout', $this->config->get('config_store_id'))) {
                    $data += $this->load->language($this->config->get('xtensions_language_path'));
                    $data['xtensions_controller_path'] = $this->config->get('xtensions_controller_path');
                    $data['xheader'] = $this->load->controller($data['xtensions_controller_path'].'xheader');
                    $data['xfooter'] = $this->load->controller($data['xtensions_controller_path'].'xfooter');
                    $data['xcvc'] = $this->load->controller($data['xtensions_controller_path'].'xcvc');
    
                    $modData = $this->xtensions_checkout->getXtensionsData($this->config->get('config_store_id'), 'xtensions_best_checkout');
                    $data['custom_js'] = isset($modData['xconfig']['design']['js']) ? html_entity_decode($modData['xconfig']['design']['js'], ENT_QUOTES, 'UTF-8') : '';
                    $this->response->setOutput($this->load->view($this->config->get('xtensions_view_path').'xcheckout.tpl', $data));
                    // Xtensions Best Checkout
                } else {
                    $this->response->setOutput($this->load->view('checkout/checkout', $data));
                }
                ]]></add>
            </operation>
            <operation error="skip">
                <search><![CDATA[$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js');]]></search>
                <add position="replace"><![CDATA[
            if ($this->xtensions_checkout->isActive('xtensions_best_checkout', $this->config->get('config_store_id'))) {
                // $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js'); - Included by Xtensions
            } else {
                 $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js');
            }
            ]]></add>
            </operation>
        <operation error="skip">
                <search><![CDATA[$this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');]]></search>
                <add position="replace"><![CDATA[
            if ($this->xtensions_checkout->isActive('xtensions_best_checkout', $this->config->get('config_store_id'))) {
                    // $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); - Included by Xtensions
                } else {
                    $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js');
                }
            ]]></add>
            </operation>
        <operation error="skip">
                <search><![CDATA[$this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');]]></search>
                <add position="replace"><![CDATA[
            if ($this->xtensions_checkout->isActive('xtensions_best_checkout', $this->config->get('config_store_id'))) {
                    // $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); - Included by Xtensions
                } else {
                    $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css');
                }
            ]]></add>
            </operation>
        </file>
        <file path="catalog/controller/checkout/confirm.php">
            <operation>
                <search><![CDATA[$this->response->setOutput($this->load->view('checkout/confirm', $data));]]></search>
                <add position="replace"><![CDATA[
            // Xtensions Best Checkout
            $xconfig = $this->xtensions_checkout->getXtensionsData($this->config->get('config_store_id'), 'xtensions_best_checkout');
            $misc_options = $xconfig['xconfig']['options'];
            if(isset($misc_options['payment']['content'][$this->session->data['payment_method']['code']][$this->config->get('config_language_id')])){
                $data['before_content'] = html_entity_decode($misc_options['payment']['content'][$this->session->data['payment_method']['code']][$this->config->get('config_language_id')], ENT_QUOTES, 'UTF-8');
            }else{
                $data['before_content'] = '';
            }
            if ($this->xtensions_checkout->isActive('xtensions_best_checkout', $this->config->get('config_store_id'))) {
                $this->response->setOutput($this->load->view($this->config->get('xtensions_view_path').'xconfirm.tpl', $data));
            } else {
                $this->response->setOutput($this->load->view('checkout/confirm', $data));
            }
            // Xtensions Best Checkout
            ]]></add>
            </operation>
        <operation>
                <search><![CDATA[$this->session->data['order_id'] = $this->model_checkout_order->addOrder($order_data);]]></search>
                <add position="replace"><![CDATA[
            // Xtensions Best Checkout
                $data['isBestActive'] = $this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'));
                if(!isset($this->session->data['order_id']) || !$this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                    $this->session->data['order_id'] = $this->model_checkout_order->addOrder($order_data);
                }else{
                    $this->model_checkout_order->editOrder($this->session->data['order_id'],$order_data);
                    $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_model_path'))->editOrderXtensions($this->session->data['order_id'],$order_data);
                }
                // Xtensions Best Checkout
            ]]></add>
            </operation>
        </file>
        <file path="catalog/model/checkout/order.php">
            <operation error="skip">
                <search><![CDATA['order_id'                => $order_query->row['order_id'],]]></search>
                <add position="after"><![CDATA[
            // Xtensions Best Checkout
                        'customer_group_id'       => $order_query->row['customer_group_id'],
            // Xtensions Best Checkout
            ]]></add>
            </operation>
            <operation error="skip">
                <search><![CDATA[$data['ip'] = $order_info['ip'];]]></search>
                <add position="after"><![CDATA[
            // Xtensions Best Checkout
                    $data['customer_fields'] = array();
                    if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
    
                        $fieldData = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_model_path'))->getCustomFieldByIdentifier($order_info['custom_field'],'account');
                        foreach($this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_model_path'))->getCustomFields($order_info['customer_group_id']) as $field){
                            if($field['location']=='account' && $field['email_display']){
                                if(isset($fieldData[$field['identifier']])){
                                    $data['customer_fields'][] = array('name'=>$field['name'],'value'=>$fieldData[$field['identifier']]);
                                }
                            }
                        }
                    }
                    // Xtensions Best Checkout
          ]]></add>
            </operation>
            <operation error="skip">
                <search><![CDATA[$data['products'] = array();]]></search>
                <add position="before"><![CDATA[
            // Xtensions Best Checkout
                    if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                        $formatted_address = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_model_path'))->getFormattedAddressForOrder($order_info);
                        $data['payment_address'] = $formatted_address['payment_address_formatted'];
                        $data['shipping_address'] = $formatted_address['shipping_address_formatted'];
                    }
                    // Xtensions Best Checkout
                ]]></add>
            </operation>
        </file>
        <file path="catalog/view/theme/*/template/mail/order.tpl">
            <operation>
                <search><![CDATA[<b><?php echo $text_ip; ?></b> <?php echo $ip; ?><br />]]></search>
                <add position="before"><![CDATA[
            <?php foreach ($customer_fields as $field){?>
                <?php if($field['value']){ ?>
                        <b><?php echo $field['name']; ?></b> <?php echo $field['value']; ?><br />
                    <?php } ?>
                    <?php } ?>
          ]]></add>
            </operation>
        </file>
        <file path="catalog/controller/account/order.php">
            <operation error="skip">
                <search><![CDATA[$data['shipping_method'] = $order_info['shipping_method'];]]></search>
                <add position="before"><![CDATA[
            //xtensions- Custom Fields
                if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                    $formatted_address = $this->xtensions_checkout->getXtensionsModel($this->config->get('xtensions_custom_fields_model_path'))->getFormattedAddressForOrder($order_info);
                    $data['payment_address'] = $formatted_address['payment_address_formatted'];
                    $data['shipping_address'] = $formatted_address['shipping_address_formatted'];
                }
                //xtensions- Custom Fields
                ]]></add>
            </operation>
        </file>
        <file path="catalog/controller/account/edit.php">
            <operation>
                <search><![CDATA[public function index() {]]></search>
                <add position="after"><![CDATA[
            if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                    $this->response->setOutput($this->load->controller($this->config->get('xtensions_account_controller_path').'edit', '', 'SSL'));
                    return '';
                }
            ]]></add>
            </operation>
        </file>
        <file path="catalog/controller/account/register.php">
            <operation>
                <search><![CDATA[public function index() {]]></search>
                <add position="after"><![CDATA[
            if($this->xtensions_checkout->isActive('xtensions_best_checkout',$this->config->get('config_store_id'))){
                    $this->response->setOutput($this->load->controller($this->config->get('xtensions_account_controller_path').'register', '', 'SSL'));
                    return;
                }
            ]]></add>
            </operation>
        </file>
    </modification>
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 2021-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多