我在这个新项目中处于一个奇怪的地方:我有一个工作Javascript应用程序的客户端,他们想用CMS管理文本元素。本机JS环境将领先。
理想情况下,EE会管理内容,然后呈现内容目录中的静态文件。我不是一个PHP人,我对EE内容的体验一直是动态的,使用它的标签。现在我需要将内容预呈现到模板目录之外的文件或URL ...所以我可以使用一些指导。
这样的工作:
{exp:channel:entries
channel="content"
disable="categories|category_fields|member_data|pagination|trackbacks"
status="Open"
dynamic="no"
limit="1"
}
<?php
$File = "./articles/YourFile.html";
$Handle = fopen($File, 'w');
$Data = "<h1>{title}</h1>\n<hr /><p>{base_body}</p>\n";
fwrite($Handle, $Data);
print "Data Written";
fclose($Handle);
?>
{/exp:channel:entries}
但实际上我必须手动查看页面来呈现内容......有没有办法解决这个问题?我可以使用EE作为服务吗?关于如何呈现上述内容的示例将会很有帮助。我今天也在考虑服务......
答案 0 :(得分:0)
关于EE的事情是系统内的内容不会转换为页面或网址。频道数据是动态的,并且经常与来自其他来源的数据混合在一起(全局变量,多个频道,低变量,列表继续)。
这样做的最好方法(我能想到)就是编写一个扩展名,在保存条目时触发文件写入系统。你已经在你的模板中运行了php的方式。
如果您选择这条路线,请检查entry_submission_end挂钩以便在分机中使用。诀窍是弄清楚你输出的是什么。由于频道数据不一定与模板相关,因此您需要选择模板来渲染频道数据,或使用页面模块允许用户在EE中选择模板。
这不是100%解决您问题的方法,但它应该指向您需要的方向。
答案 1 :(得分:0)
这是我之前为获取EE模板的静态文件而设置的。
我正常设置我的EE模板。然后设置一个PHP脚本,该脚本使用CURL调用模板URL并将内容写入静态文件。我设置了一个cron来按我需要的时间间隔运行文件。
PHP脚本文件和输出PHP或TXT文件(或任何您需要它命名的文件)位于同一目录中。确保输出文件具有777权限。
这就是你要放在php脚本文件中的内容。只需将$ site和$ filename变量更改为您要使用的内容:
set_time_limit(3450);
#GRAB DATA
$site = "http://www.domain.com/template-group/template";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$site);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
$result=curl_exec ($ch);
curl_close ($ch);
#WRITE DATA TO FILE
$filename = 'static-file-name.php';
if (is_writable($filename)) {
if (!$handle = fopen($filename, 'w')) {
echo "Cannot open file ($filename)";
exit;
}
if (fwrite($handle, $result) === FALSE) {
echo "Cannot write to file ($filename)";
exit;
}
echo "Success, updated the accordion file";
fclose($handle);
} else echo "The file $filename is not writable";
您的EE模板如下所示:
{exp:channel:entries channel="content" disable="categories|category_fields|member_data|pagination|trackbacks" status="Open" dynamic="no" limit="1" }
<h1>{title}</h1>
<hr />
<p>{base_body}</p>
{/exp:channel:entries}