XCart 之前发送邮件时的清理网址

  • 本文关键字:XCart x-cart
  • 更新时间 :
  • 英文 :


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

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

现在在数据库中:命名内容,例如:eml_someone_ask_question_at

"我的邮件"内容值,如下所示:

我有人在{{STOREFRONT}}/product.php?productid={{productid}}问了一个关于{{product_name}}的问题

在我的邮件模板页面中,例如
{$lng.eml_some_ask_question_at|substitute:"STOREFRONT":$current_location:"productid":$productid:"product_name":$product}

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

例如。

Linkpassedlike

在上面的网址中,干净的网址传递了这样的,

上面的链接需要像

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

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", "rn", $mail_message);

并更改eml_someone_ask_question_at语言变量。

相关内容

  • 没有找到相关文章

最新更新