web-dev-qa-db-ja.com

すべてのリンクを強制的に絶対にする

ノードのコンテンツとビューをメールで送信するカスタムモジュールを用意しました。モジュールは最初にノード/ビューをレンダリングし、共通のテンプレートに結果をラップします。

しかし、私のビューとノードのコンテンツが構築されると、それらには相対的なリンクが含まれます。私はこれらのリンクを絶対的に(つまり、ドメインとプロトコルを使用して)強制する方法を探しています。

Url()およびl()関数を使用して絶対リンクを出力できますが、すべてのリンクでこの動作を強制する方法がわかりません。コンテンツを処理する予定ですすべてのリンクを抽出し、必要に応じてURLを完成させるHTML文字列として。ただし、これはあまり効率的ではないようです。

絶対URLを保証する別の方法はありますか?

以下は、ノードとビューのコンテンツをレンダリングするために使用されるコードです。

//For nodes
$node = node_build_content($node, FALSE, FALSE);
$node->body = drupal_render($node->content);
unset($node->teaser);
node_invoke_nodeapi($node, 'alter', FALSE, FALSE);
$content = $node->body;

//For views
$content = $view->preview($display_id, $arguments);
3
Pierre Buyle

このモジュールを見てください: Pathologic

Pathologicは、Drupalコンテンツのリンクと画像のパスを修正することができる入力フィルターです。たとえば、サイトのURLが変更された場合など、「破損」する可能性があります。コンテンツは別のサーバーに移動されました。Pathologicは、サイトのRSSフィードでの画像の欠落やリンク切れの問題を解決することもできます ドキュメントのサンプルユースケースを参照

3
Berdir

BASEタグをpage.tpl.phpに追加してみませんか。

<base href="http://www.yourooturlhere.com/" />

参照: http://www.w3schools.com/tags/tag_base.asp

0
Camsoft