2

パスを設定したパネルページがあり、node/%node/fooなどのリンクにアクセスするとすべて正常に機能しnode/6/fooます。しかし、私が訪問したとき、nodealias/fooそれはまったく機能しません。この方法でパネルをpathautoで動作させることは可能ですか?

フックhook_url_inbound_alterを実装して、自分でURLを変更する必要があるかもしれないと思っています。

また、ここのパネルモジュールにサポートリクエストを投稿しました:http://drupal.org/node/1219796

4

4 に答える 4

2

Alexeyの回答パネルはエイリアスを気にしないため、node /%nidのみが表示されます。これは、D7でも有効な適切な説明です。http: //drupal.org/node/211338 要約してD7を最新の状態にするには:作成したパネルのバリアントをエクスポートし、Drupalのデフォルトのノード表示をオーバーライドするパネルにインポートします。バリアントに基準を追加して、パネル/バリアントがこのバリアントで表示するコンテンツのタイプにのみ使用されるようにします。出来上がり:)(リンクで議論を読んでください、さもなければ要約は理解するのが難しいでしょう)

これがお役に立てば幸いです-私自身、グーグルでこれを理解しようと時間を費やしてきました。また、Viewsがエイリアスを気にしているという事実にも混乱していました...

于 2011-09-20T00:58:31.833 に答える
1

次のコードを使用してこれを修正しました。URLエイリアスのパターンに一致するようにパターンを変更し、モジュールの名前に一致するように関数名を変更する必要があります。

function brooklands_url_inbound_alter(&$path, $original_path, $path_language) {
    $pattern = '#^works\/[A-Za-z0-9]+(-[A-Za-z0-9]+)*\/images(\/\d+)?$#';
    if(preg_match($pattern, $original_path)) {
        $snip = substr($original_path, 0, strrpos($original_path, '/images'));
        $system_path = drupal_lookup_path('source', $snip);
        if($system_path) {
            $tail = substr($original_path, strrpos($original_path, '/images'));
            $path = $system_path . $tail;
        }
    }
}
于 2011-09-20T14:47:27.597 に答える
1

このモジュールSubpathautoを使用できます

次のようなサブパスで機能するようにエイリアスを自動的に作成します。nodealias/foo

于 2014-03-27T08:43:03.100 に答える
0

nodealiasは、nid=6のノードの完全なエイリアスです。3番目の引数(foo)は、hook_menu()を介してpanelsモジュールによって正確なエイリアス(node /%nid /%anythingelse)に追加され、エイリアスURLには適用されないため、nodealias /foourlを使用してパネルモジュールによって「フック」されていないという理由だけでパネル。URLを手動で変更するのは良い考えだと思います。

于 2011-07-17T15:41:37.050 に答える