有多种方法可以解决这个问题。
您可以编写一个独立的 PHP 应用程序,该应用程序从 XML 站点地图或链接数组调用您网站上的所有 URL,然后使用 file_get_contents() 函数下载呈现的 HTML(请参阅文档 here)。
类似这样的东西(以下代码未经测试):
// [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 中编写 snippet 并直接使用 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
)