2009-06-03 3 views
0

は、PathAutoモジュールを使用せずに出力パスをDrupalノードにプログラムで変更できるようにしたいと考えています。現在、バックエンドに追加される大量のコンテンツ(1日に数千件の記事)を処理しています。パスエイリアスを生成するためにPathAutoを使用するのではなく、Drupalにデフォルトのリンクを出力したいが、より良いSEOのために部分的なタイトルを追加したい。Drupalノードリンク(PathAutoなし)のカスタムパスをプログラムで出力するにはどうすればよいですか?

この例は次のようになります。

/ノード/ 123

は(

/ノード/ 123 /この-IS--記事タイトルに変更されます

テーマ/ビューテンプレートを変更することで、テーマベースでこれを行う方法を理解していますが、私はそれを実行したいと思いますytimeノードへのリンクはどこにでも表示され、タイトルプラグが追加されます。

さらに、特定のコンテンツタイプ(「記事」など)に限定したいと考えています。私はのDrupal 5.xのを使用していますが、私は私が探しています自動エイリアス設定モジュール(私は必要でない場合は、パスの別名の数十万人を保存する必要はありません)

を使用しないでしょう

PathAutoを使用しないソリューション

答えて

5

Drupalには、「/ node/1234 /」から「/ blogs/look-at-what-my-cat-just-did」にマッピングするための内部メカニズムがあります。それはコアシステムの一部であり、ご要望がなくてもほとんどの場所で、リクエストごとに使用されています。それは起こっていることに気づくことはほとんどありません。ドローパールには他にも多くのものがあります。

URLがフロントエンドでどのように表示されているか心配している場合は、ルックアップを他の方法で処理するためにurl()関数(およびノー​​ドコンテンツと同じフィルタを使用するフィルタ)を使用する必要があります。

Pathautoは、コンテンツを作成または編集すると、作成したpathautoルールに基づいて、Drupalのurl_aliasテーブルに多数のエントリを生成します。これは1回限りのコストです。あなたが天文学的な率でコンテンツを生成している場合を除き、これに関連する費用はごくわずかです。

すでにDrupalを使用してURLエイリアスを検索する費用は、すでに支払っています。コアをハッキングせずに、あなたは本当にそれを避けることはできません。データベースに「数十万のパスエイリアス」を格納することはそれほど大きな問題ではありません。実際のストレージ要件にそれを打ち破れば、ほんの一握りのメガバイトしか見ていません。テーブルのインデックスが整っているので、ルックアップは事実上瞬時になります。これはコア機能です&はあなたのシステムでさえPathautoに関係なく起こります。

あなたのノードをマップしたいURLの種類が非常に奇妙な場合を除いて、Pathautoの既存の機能のサブセットを再作成するだけです(新しいバグがたくさん挿入される可能性があります)。

+0

Sean - ありがとう - これは最高のアドバイスかもしれません。私が質問をまとめると、私はPathautoをもっとよく見る必要があるかもしれないことに気がついた。 – jonstjohn

+0

実際、PathAutoには多くの利点があることはわかっていますが、ノードのリンクを生成するdrupalメソッドにフックする方法をよりよく理解することに興味があります。また、このサイトを最適化しようとしているため、追加のクエリや結合がパフォーマンスに影響を与えます(特にリスティングページでは)。 – jonstjohn

0

おそらくPathautoが最適な選択ですが、hook_menu関数を使用してURLをメソッドにマウントできます。このメソッドは、URLに基​​づいて、プログラムで目的のノードを見つけることができます。あなたはこれらの2つの関数を使用して試みることができる

+0

しかし、私はまた別の方法を探しています...リストビューでリンクされたノードは、正しいリンクを表示する必要があります。基本的には、pathautoが何を行うのかを問わず、何もしないでください。 – jonstjohn

関連する問題