ビューで定義されたパスに「アクセスコールバック」関数を追加する方法


7

Drupal 7、Views 3、および hook_menu_alter

function MYMODULE_menu_alter(&$items){
  $items['client/place/%'] = array(
    'access callback' => 'custom_function',
  );   
}

ビューの可視性(アクセス)をオーバーライドし、キャッシュもフラッシュしますが、これは機能しないようです。これを解決する方法について誰かにいくつかの光を与えることができます。これは、ビューによって定義されたパスをオーバーライドする正しい方法ですか?

前もって感謝します


1
そこにタイプミスがあるのではないかと思います。あなたの質問は「アクセスコールバック」と言っていますが、サンプルコードは「ページコールバック」を設定しています。
marcvangend 2013年

あなたが正しいです。更新しました
mauricio 2013年

回答:


9

注意:ビューモジュールでは、ビューUIからのアクセスを設定できます

独自のロジックを作成したい場合; コードは次のようになります。

function MYMODULE_menu_alter(&$items){
  $items['client/place/%']['access callback'] = 'MYMODULE_custom_callback'; 
}

function MYMODULE_custom_callback(){ 
  $isValid = false;

  /* your logic */

  return $isValid;
}

Viewsモジュールの後にモジュールが呼び出されていることを確認してください。通常、Viewsモジュールの幅は10です。したがって、モジュールの幅は11以上でなければなりません。

また、キャッシュをクリアすることを忘れないでください。


1
こんにちは、ありがとう。できます。(ビューUIを介してなど)役割ごとまたは権限ごとのフィルターが必要です。私はウェイトモジュールがどれであるかを知る方法を探して検索しました、ここにいくつかのメソッドがありますhttp://drupal.org/node/110238
mauricio

どういたしまして、うまくいきました。
Aboodred1 2013年

5
を使用hook_module_implements_alterしてhook_menu_alter実装をビューの後に移動し、ビューが追加したメニュー項目を確認することもできます。モジュールの明示的な重みを設定する必要がないことを除いて、モジュールの重みの設定とほぼ同じように機能します。
サードパーティ、2014年

私が機能するためには、%ではなく%views_argを使用する必要がありました。このように:$items['user/%views_arg/posts']['access callback'] = 'MYMODULE_custom_access_callback';
jphelan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.