1

検索 API を介して検索結果を返すビューがあります。このユースケースを適切に実行し、満足しています。成果物を完成させるために、フォームのタイトル オーバーライドを追加する必要がありますShowing search results for '%1'。最初は十分に簡単に見えますが、完全に計画どおりに機能しているとは言えません。

mysite.com/search/all?search=wombatブロック内の公開されたフォームから検索値が収集されるURL =の場合、次のいずれかを取得しています。

「「すべて」で検索」の検索結果を表示しています

または、%1URL に表示されない件名のタイトル オーバーライドを入力すると、次のようになります。

「%1 の検索結果を表示しています」。私の目標は、「「ウォンバット」の検索結果を表示しています」を取得することです

タイトルのオーバーライドは、Search for ...部分を削除するという点で機能しますが、置換は、クエリ文字列の値を取得できる必要がある例外値 (または例外値として設定したもの) として「すべて」を取得します。 (検索 = ウォンバット)。

誰かがここで光を当てることができますか?

4

2 に答える 2

1

問題は、タイトルをオーバーライドするために使用できる '%1' と '%2' がパスの最初と 2 番目の引数 (Drupal 用語で) を参照し、それが 'search' と 'all?search=wombat' になることです。あなたの場合...

代わりに必要なのは、パス コンポーネントとしての「wombat」自体です。

おそらく、あなたが話しているケース、つまり「URLに表示されない件名のタイトルオーバーライド」のケースに取り組むことでそれを達成できます。コンテキスト フィルター セクションには、デフォルト値が存在しない場合にデフォルト値を提供するためのオプションがあります (ここで作業していると思います) 。おそらく、そこで「 PHP コード」オプションを使用し、「wombat」文字列を分離して、それをデフォルトのコンテキスト フィルターとして返すことができます。その後、「%1」経由で取得できます。

URL のその部分を取得するための php コードは、次のようになります。

return htmlentities($_GET['search']);

$_GET() は、その変数の値を URL に返します。htmlentities() は、XSS に対して脆弱な URL の一部を使用しているため、安全に保つためのものです。

そのコンボ (1) 存在しない場合にデフォルトの引数を設定し、2) タイトルの出力で新しく設定された引数を使用する) が機能するかどうかを確認してください!

于 2012-04-20T20:11:14.800 に答える
0

この問題を修正しました。次の 2 つのフックを使用して、フィルタのデフォルト値をプログラムで変更できます。

<?php
/**
* hook_views_pre_view
* @param type $view
* @param type $display_id
* @param type $args
*/
function MODULE_NAME_views_pre_view(&$view, &$display_id, &$args) {
  if ($view->name == 'VIEW_NAME') {
    $filters = $view->display_handler->get_option('filters');   
    $view->display_handler->override_option('filters', $filters);
  }
}



/**
* hook__views_pre_build
* @param type $view
* @return type
*/
function MODULE_NAME_views_pre_build($view) {
  if ($view->name=='VIEW_NAME') {   
    $view->display['page']->handler->handlers['filter']['filter_field']->value['value'] = 8;
    return $view;
  }    
}
?>

このコードは私のために働いた。drupal7を使用しています。

于 2013-08-05T11:14:16.547 に答える