以前发送邮件时的XCart Clean Url

时间:2018-04-06 13:37:32

标签: x-cart

我在XCart 4.4版本框架中工作,

请帮助我如何在Xcart中发送邮件时发送干净的网址。

现在在数据库中: 名称内容如: eml_someone_ask_question_at

我的邮件内容值如:

我有人在{{STOREFRONT}} / product.php上询问了{{product_name}}的问题?productid = {{productid}}

在我的邮件模板页面中
{$ lng.eml_someone_ask_question_at |替代: “店面”:$ CURRENT_LOCATION: “的productid”:$产品编号: “PRODUCT_NAME”:$产物}

现在我需要在邮件发送前更改干净的网址,

例如。

Linkpassedlike

在上面的url clean url中传递了,

above link need to changed like

我需要在发送电子邮件之前更改此网址,请任何人帮助我。

1 个答案:

答案 0 :(得分:0)

1)调用链看起来像

func_send_mail->func_display('your_mail_template')->func_clean_url_filter_output->func_clean_url_product_callback->func_clean_url_get

像这样添加一个额外的参数

func_send_mail->func_display('your_mail_template',...,$new_url)->func_clean_url_filter_output(,...,$new_url)->func_clean_url_product_callback(,...,$new_url)->func_clean_url_get(,...,$new_url)

并使用func_clean_url_get中的$ new_url网址而不是原始网址。

可以从func_send_mail函数调用函数func_display 电话看起来像

$mail_message = func_display($body_template,$mail_smarty,false);

2)另一个解决方案就是在xcart_clean_urls表中更改它。

3)另一种解决方案

应用补丁

diff -ru include/func/func.core.php include/func/func.core.php
--- include/func/func.core.php  2012-01-13 11:44:16.000000000 +0400
+++ include/func/func.core.php  2018-04-09 12:29:32.293262983 +0400
@@ -833,7 +833,7 @@
 /**
  * Smarty->display wrapper
  */
-function func_display($tpl, &$templater, $to_display = true, $is_intermediate = false)
+function func_display($tpl, &$templater, $to_display = true, $is_intermediate = false, $skip_output_filter = false)
 {
     global $config;
     global $predefined_lng_variables, $override_lng_code, $shop_language, $user_agent, $__smarty_time, $__smarty_size;
@@ -1006,7 +1006,7 @@
         $templater->register_outputfilter('func_postprocess_output');

     if (func_constant('AREA_TYPE') == 'C') {
-        if ($config['SEO']['clean_urls_enabled'] == 'Y')
+        if ($config['SEO']['clean_urls_enabled'] == 'Y' && !$skip_output_filter)
             $templater->register_outputfilter('func_clean_url_filter_output');

         if ($config['General']['use_cached_templates'] != 'Y')
diff -ru include/func/func.mail.php include/func/func.mail.php
--- include/func/func.mail.php  2012-01-10 16:27:54.000000000 +0400
+++ include/func/func.mail.php  2018-04-09 12:30:30.042523154 +0400
@@ -270,7 +270,8 @@
     if ($config['Email']['html_mail'] != 'Y')
         $mail_smarty->assign('plain_text_message', 1);

-    $mail_message = func_display($body_template,$mail_smarty,false);
+    $_skip_output_filter = strpos($body_template, 'ask_question.tpl') !== false;
+    $mail_message = func_display($body_template,$mail_smarty,false, false, $_skip_output_filter);

     if (X_DEF_OS_WINDOWS) {
         $mail_message = preg_replace("/(?<!\r)\n/S", "\r\n", $mail_message);

并更改eml_someone_ask_question_at语言变量。