簡體   English   中英

prestashop 1.7 ps_emailalerts和一個外部模塊

[英]prestashop 1.7 ps_emailalerts and an external module

首先:對不起,我的英語不好。 如果有些事情無法理解,請告訴我,我會盡力向您解釋!

晚上好,我在使用prestashop 1.7和外部模塊時遇到了一些問題。

我購買了一個模塊來增加貨到付款的費用,該模塊有一些電子郵件變量,例如{total_fee}或{total_fee_tax}。 它從數據庫,表ps_orders,值“ codfee”和“ codfeetax”中獲取此值。

在標准郵件(位於/ themes / themename / mails / it /中)中,變量可以正常工作,但在電子郵件警報模塊(/ modules / ps_emailalerts)中,變量根本不起作用。

我問開發人員是否可以幫助我,他給我發送了2個要包含在/modules/ps_emailalerts/ps_emailalerts.php中的函數

public static function getCodFeeByOrderID($id_order)
        {
        return Db::getInstance()->getRow('SELECT id_currency, codfee FROM ' . _DB_PREFIX_ . 'orders WHERE id_order = ' . $id_order);
        }

public static function getCodFeeTaxByOrderID($id_order)
        {
        return Db::getInstance()->getRow('SELECT id_currency, codfeetax FROM ' . _DB_PREFIX_ . 'orders WHERE id_order = ' . $id_order);
        }

和這兩個變量在同一文件中

        '{total_fee}' => $this->getCodFeeByOrderID((int)$params['order']->id),
        '{total_fee_tax}' => $this->getCodFeeTaxByOrderID((int)$params['order']->id),

但不幸的是,某些東西無法正常工作! 測試一下,我看到兩個變量給出的結果都是“ 1”,而不是{total_fee}的預期結果“€4”和{total_fee_tax}的預期結果為“€0.88”

怎么了? 我希望有人幫助我

首先,您應該考慮重寫ps_emailalerts模塊類以添加功能並保持干凈的本機模塊: http ://build.prestashop.com/howtos/module/how-to-override-modules/。

您的問題是getRow()函數返回一個數組,其中的鍵是獲取的字段(id_currency和codfee(tax)),而不是您期望的最終值。 您必須使用這些值來計算/轉換所需的最終金額,無論是在每個函數中還是在調用之后。 如果您的商店只有一種貨幣,則可以通過getValue()更改getRow()函數,並刪除id_currency字段檢索。 最好檢查該函數的返回值(如果查詢失敗,則返回false),並進行所有需要的驗證(訂單之一與您要顯示信息的訂單之間的貨幣匹配...)。

祝好運

您仍然可以使用模塊開發人員為您提供的功能:

  1. 將查詢結果分配給變量

     $codfee = $this->getCodFeeByOrderID((int)$params['id_order']); $codfeetax = $this->getCodFeeTaxByOrderID((int)$params['id_order']); 
  2. 獲取並將所需的值分配給智能變量:

     '{total_fee}' => $codfee['codfee'], '{total_fee_tax}' => $codfeetax['codfeetax'], 

我在codfee模塊中遇到了同樣的問題,並解決了以這種方式修改ps_emailalerts.php類的問題:

  1. 添加了getCodFeeByOrderID函數:
    public static function getCodFeeByOrderID($id_order)
        {
        return Db::getInstance()->getRow('SELECT id_currency, codfee FROM ' . _DB_PREFIX_ . 'orders WHERE id_order = ' . $id_order);        
        }
  1. 在hookActionValidateOrder函數中,添加到vars數組中:
    '{total_fee}' => Tools::displayPrice($order->codfee, $currency)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM