我在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”:$产物}
现在我需要在邮件发送前更改干净的网址,
例如。
在上面的url clean url中传递了,
above link need to changed like
我需要在发送电子邮件之前更改此网址,请任何人帮助我。
答案 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语言变量。