有多种方法可以解决这个问题。
您可以编写一个独立的 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
)