0

まず私の目標は、modx のエクストラを作成して、Web サイトのコンテンツを epub ファイルとしてエクスポートすることです。そのようなものが存在するかどうかはすでに検索しましたが、何も見つかりませんでした。そんなエクストラ知ってる人いますか?または、誰かが modx でそれを行うための最良の方法を提案できますか?

私の考えは、レンダリングされたすべての html ファイルとリソースを収集し、php ベースの epub ライブラリを使用して epub ファイルを生成することです。しかし、modx からレンダリングされた html ファイルを取得する方法が見つかりませんでした。テンプレートを取得でき、html スニペット コードも取得できますが、html ファイル全体が必要です。

MODX 情報:

  • MODX-Version: MODX Revolution 2.7.3-pl (トラディショナル)

  • バージョン-コードネーム: レボリューション

4

1 に答える 1

1

これには複数の方法があります。

XML サイトマップまたはリンクの配列からサイト上のすべての URL を呼び出し、関数を使用してレンダリングされた HTML をダウンロードするスタンドアロンの PHP アプリケーションを作成できます(こちらfile_get_contents()のドキュメントを参照)。これに沿ったもの(次のコードはテストされていません):

// [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 を直接取得することもできます。次のコードは、すべてのリソースのリンクとファイル名を取得し、その過程で Web リンク、シンボリック リンク、および静的リソースを除外します。パッケージ内に次のコードを実装する予定がある場合は、少し調整する必要があります。

$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
)
于 2020-07-24T22:04:11.833 に答える