php - 从 modx 将渲染的 html 文件导出为 zip
问题描述
首先,我的目标是为 modx 编写一个 Extras,以将网站内容导出为 epub 文件。我已经搜索过是否存在类似的东西,但我没有找到任何东西。有没有人知道这样的附加功能?或者任何人都可以建议我在 modx 中做到这一点的最佳方法吗?
我的想法是收集所有呈现的 html 文件和资源,然后使用基于 php 的 epub 库生成 epub 文件。但是我没有找到从 modx 获取渲染的 html 文件的方法。我可以获取模板,也可以获取 html 片段代码,但我需要整个 html 文件。
MODX信息:
MODX-版本:MODX Revolution 2.7.3-pl(传统)
版本-代号:Revolution
解决方案
有多种方法可以解决这个问题。
您可以编写一个独立的 PHP 应用程序,从 XML 站点地图或链接数组调用您站点上的所有 URL,然后使用该file_get_contents()
函数下载呈现的 HTML(请参阅此处的文档)。与此类似的东西(以下代码未经测试):
// [filename] => [URL]
$pages = array(
'index.html' => 'https://example.com/',
'contact.html' => 'https://example.com/contact.html',
);
foreach($pages as $filename => $link){
$filePath = $_SERVER['DOCUMENT_ROOT'].'/'.$filename;
$html= file_get_contents($link);
$handle = fopen($filePath,"w");
fwrite($handle,$html);
fclose($handle);
}
或者,您可以在 MODX 中编写一个片段并直接使用xPDO获取资源 URL 。以下代码将获取所有资源的链接和文件名,并排除进程中的网络链接、符号链接和静态资源。如果您计划在您的包中实现以下代码,则需要稍微调整它。
$resources = $modx->getIterator('modResource', array(
'class_key' => 'modDocument',
));
$pages = array();
foreach($resources as $resource){
$pages[$resource->get('alias').'.html'] = $modx->makeUrl($resource->get('id'), '', '', 'full');
}
上述代码中数组的输出$pages
如下:
Array
(
[index.html] => https://example.com/
[test.html] => https://example.com/test.html
)
推荐阅读
- scala - 未来取决于另一个未来
- ruby-on-rails - 运行 rake asset:precompile 是否总是返回相同的文件名?
- python - 在 Python 中执行推特流时无法处理连接重置异常
- sql - 如何在 Oracle 中确定模式表的精确大小
- javascript - 将多个 cookie 值作为变量从 background.js 传递到 contentscript.js
- ruby-on-rails - 如何在生产中使用 Rails 低级缓存?
- java - 如何从迷宫中创建图形
- python - 从 Opencv 保存视频
- apache-kafka - 在 aws ec2 中设置 kafka
- java - 使用 Apache PdfBox 缩放 pdf 内容的正确方法是什么?