0

Drupal 6を使用していて、カスタムphpページをプルしている独自のノードがあります。URLはdomain.com/blogsです。引数にクリーンURLを使用したい。たとえばdomain.com/blogs/1、最初のブログ投稿に関する情報をデータベースから取得します。

私はもう試した:

domain.com/blogs/1phpコードでは使用arg(0)しますが、DrupalでPage Not Foundエラーが発生するため、コードを実行することすらできません。

後の引数が許可されていることをDrupalに知らせ、引数を送信するdomain.com/blogsためにノードをロードする方法はありますか?/blogs

4

2 に答える 2

1

エイリアシングは、メニュールーター項目の残りの部分を制御できることを意味node/1234するblogsわけではありません。

たとえば、エイリアス化されていないノードパスが「node / 1234」の場合、残りの引数を「所有」します。つまり、次のようにPHP567からアクセスできます。node/1234/567

<?php print arg(2); ?>

/blogsURL部分を「所有」する場合は、 hook_menuを使用して定義する必要があります。すでにphpに触れているので、モジュールを作成するのが最善の方法だと思います。ただし、そのためにビューまたはパネルモジュールを使用できます。

<?php
function MYMODULE_menu() {
  $items = array();

  $items['blogs'] = array(
    'title' => 'Main Blogs page', 
    'page callback' => 'MYMODULE_page', 
    'access arguments' => array('access content'), 
    'type' => MENU_SUGGESTED_ITEM,
  );
  $items['blogs/%'] = array(
    'page callback' => 'MYMODULE_blog_view', 
    'page arguments' => array(1),
    'access arguments' => array('access content'), 
    'type' => MENU_CALLBACK,
  );

  return $items;
}
function MYMODULE_blog_view($blog_id){
// $node = node_load($blog_id);
// return print_r($node, TRUE);
}
?>

これで、MYMODULE_blog_view関数で、arg(1)からも引数を取得できます。両方のメニュールーター項目を組み合わせて単一ページのコールバックにすることもできますが、別々のルーター項目をお勧めします。

Update(8月8日):node_load($ blog_id)やその他のコメント付きのジャンクを使用した理由は、ノードからのパーツが必要であると想定しているためです(例:ノードID引数を使用してビューを表示するか、特定のものが必要な類似のものが必要です)ノードからのデータ)。ただし、node_load()からロードされたノードをユーザーに表示させないでください。これは、ユーザーが要求するものを神が与えるようなものだからです

ノードについては、ちょっとした仕掛けを説明しましょう。これをコールバック関数に入れます。

  $node = node_load($blog_id);
  if ($node && $node->type == 'blog'){
    $_GET['q'] = 'node/' . $node->nid;
    return menu_execute_active_handler('node/' . $node->nid, FALSE);
   }
   drupal_not_found(); // important!

これにより、ブログID(URLから)からノードIDが読み込まれ、「ブログ」タイプであるかどうかが確認され、メニューハンドラーが関連するノードIDパスに設定されます。これで、blog / 123にアクセスすると、ブログノードの場合はnode/123のコンテンツが表示されます。しかし、それはリダイレクトではありません。完全にエイリアス化されたURLとしては機能しませんが、役立つ場合があります。

または、ユーザーがnode_access()からノードにアクセスできるかどうかを確認できます。

于 2012-08-06T18:26:12.650 に答える
0

ここでは、ビュー引数の定義と送信について読むことができるいくつかのリンク drupal.org/1

drupal.org/2

于 2012-08-06T15:46:40.217 に答える