Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Templates 从管理员发送电子邮件时,要将电子邮件模板放在哪个文件夹中?_Templates_Admin_Silverstripe - Fatal编程技术网

Templates 从管理员发送电子邮件时,要将电子邮件模板放在哪个文件夹中?

Templates 从管理员发送电子邮件时,要将电子邮件模板放在哪个文件夹中?,templates,admin,silverstripe,Templates,Admin,Silverstripe,我继承了一些不起作用的代码,其中在特定dataobject的管理页面中存在一个按钮(带有自定义函数),并触发发送电子邮件。代码当前试图使用模板文件填充电子邮件正文,该模板文件当前位于站点的主题文件夹中 但是,电子邮件正文为空,因为找不到模板。我的理解是,网站的管理部分不会在主题文件夹中查找模板。我可以把模板(以及它包含的其他模板)放在哪里,从站点管理部分的代码中可以找到它们 $email = new Email($sender_email, $recipient_email, "Your ord

我继承了一些不起作用的代码,其中在特定dataobject的管理页面中存在一个按钮(带有自定义函数),并触发发送电子邮件。代码当前试图使用模板文件填充电子邮件正文,该模板文件当前位于站点的主题文件夹中

但是,电子邮件正文为空,因为找不到模板。我的理解是,网站的管理部分不会在主题文件夹中查找模板。我可以把模板(以及它包含的其他模板)放在哪里,从站点管理部分的代码中可以找到它们

$email = new Email($sender_email, $recipient_email, "Your order has been shipped!");
$email->setTemplate("OrderShipped");
$email->populateTemplate(array("Order" => $order));
$email->send();
输出到错误日志的错误如下:

[17-Nov-2014 14:34:01] Warning at framework/view/SSViewer.php line 780: None
of these templates can be found in theme 'mytheme': OrderShipped.ss 
(http://mytestsite.co.nz/admin/orders/MyOrder/EditForm/field/MyOrder)

由于在CMS后端时未设置主题,因此模板不应位于主题文件夹中。您可以尝试将文件移动到主电子邮件模板的mysite/templates/Email中。任何包含都可以存储在mysite/templates/includes中

正如jfbarrois所写,CMS中没有设置主题。所以我使用了这个小技巧,它开始起作用:

Config::inst()->update('SSViewer', 'theme_enabled', true);
Config::inst()->update('SSViewer', 'theme', 'mysite');

 // change 'mysite' with the name of your theme
您可以将模板保存在“mysite/templates/Email”中。
也许还有其他选择,但我还没有找到

谢谢,;我试过了,但似乎还是找不到。错误日志仍然显示错误(我已将其附加到问题中)。是的,我确实记得刷新,文件权限看起来很好!我不认为您可以告诉我在哪里添加一些调试来确定在哪些目录中查找模板?请确保使用flush=all,而不是flush=1。看起来你已经设置了主题“mytheme”。您是否尝试将模板文件放在/themes/mytheme/templates(而不是其子文件夹)下。如果这仍然不起作用,您可以查看SS#U TemplateLoader#findTemplates()中发生的情况并从中进行调试是的,我使用了flush=all。主题/神话元素/模板没有运气。我想我必须开始跟踪框架代码…当添加或更改模板文件时,您还应该(在我的服务器上,这是必需的)删除/tmp文件夹中的缓存文件。每个silverstripe站点在/tmp中都有一个特殊的文件夹,它以/tmp/silverstripe-。。。