1

stackoverflow.com がモジュール pathauto を使用していることは知っています。drupal で pathauto を使用して、pathauto uris を作成したいと考えています。しかし、これを行う方法がわかりません。

例: pathauto を使用した後にdomain.com/node/1、次にdomain.com/article/1/title-nodeを使用

次に、 domain.com/article/1/???にアクセスします。それでも、show page not found の代わりにノード 1 が表示されます。

4

4 に答える 4

4

編集 - 私はより良いアイデアを得ました

元の回答を以下に残しますが、より良いアイデアを得たと思います...ページリクエストからハイフン部分を取り除くためhook_init()に、カスタムモジュールまたはcustom_url_rewrite_inbound()settings.phpに実装できます。常に/article/1/my-title変更されます。/article/1node/XXX から article/XXX へのエイリアスは、依然として pathauto によって行われます。

私の元の答えは:

すでにそれを行うモジュールがあるかどうかはわかりませんが、必要なことを実現するのは非常に簡単です。hook_menu()"article" で始まる URL (たとえば、"article/1/title-node") によってトリガーされる関数を定義する独自のバージョンを実装する必要があります。

hook_menu の場合、スラッシュで区切られた各ビットは、コールバックに渡すことができる引数であるため、(コールバックが適切なノードをロードするように) 番号をコールバックに渡し、それ以外はすべて破棄します。

Drupal 6 を使用していると仮定すると、メニュー項目の定義は次のようになります。

$item['article'] = array(
  'title' => 'My URL article redirect',
  'page callback' => 'name_of_my_callback_function',
  'page arguments' => array(1), //this passess the second bit of the URL
  'type' => MENU_CALLBACK,
);

お役に立てれば!

于 2009-11-24T09:16:21.063 に答える
2

URL のエイリアスを作成するだけなので、pathauto でそれを行うことはできません。したがって、生成されたとおりにhttp://example.com/article/1/titleのような URL を使用する必要があります。

スタック オーバーフローは、URL に含まれる質問のタイトルを単純に無視するという点で、少し異なります。URLパーサーがまったく異なるため、彼らはそれを行うことができます. Drupal の場合は、別のモジュールを探すか、独自のモジュールを作成することをお勧めします。Pathauto は、通常の URL エイリアスを利用して自動生成するだけです。それ以上でもそれ以下でもありません。

drupal.orgで URL を処理するモジュールを検索すると、かなりの数の一致が得られます。それらのいくつかは、あなたが望むことをするかもしれません。

于 2009-11-24T06:42:05.040 に答える
1

あなたがやりたいことはhttp://example.com/article/ID/title、そのtitle部分がほとんど無視されるようなURL構造を持っていることであり、http://example.com/article/ID何を入力してもtitle. あなたができることは、おそらくnidによって、個々の記事を指定するために使用される引数として受け入れるパスを持つビューを設定することです。その後に続くものはすべて無視する必要があります。http://example.com/articleID

于 2009-11-24T12:06:02.450 に答える
0

エイリアスパスのみが表示されるようにするグローバルリダイレクトを試しましたか? http://drupal.org/project/globalredirect とサブパスエイリアスはどうですか? エイリアスをサブパスとして使用することもできます。たとえば、 node/1 エイリアスが blog/johndoe/my-first-post だとすると、 blog/johndoe/my-first-post/edit http://drupal.org/project/subpath_aliasを使用して編集できます

これらのモジュールで作業できると思います。

于 2009-12-06T14:04:58.083 に答える