我在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语言变量。