1

結果にいくつかのタグを含める必要があるコンテンツ全体でインデックス付き検索を実行する必要があります。タグはランダムに選択する必要があります。プラットフォームはDrupal7.12です

を介してSOLR検索の結果を管理するビューを作成しましたsearch_api。ビューは必要なコンテンツを返し、意図したとおりに機能しているようです。Global:タグエントリのプレースホルダーとして、いくつかのカスタムテキストフィールドを含めました。

私は現在、タグ値をランダム化するための要件を管理するためのソリューションを探しています。ランダム化は問題ではありません。問題は、ランダム値をビューの結果に含める方法です。

私の現在のアプローチは、フィールド(および)views_pre_renderとして表示されるプレースホルダーをインターセプトするフックを作成することです。テストコードは次のようになります[nothing][nothing_1]

function MODULE_views_pre_render( &$view )
{
    $view_display = $view->display['default'];
    $display_option = $view_display->display_options;
    $fields = $display_option['fields'];
    foreach( $view->result as $result )
    {
        $fields['nothing']['alter']['text'] = sprintf("test %d", rand(1,9));
    }
}

現在、ビューがレンダリングされたときにプレースホルダーに変更はありません。

アプローチへのポインタ、代替ソリューションなどは、現時点で多くの希少な時間を消費しているため、ありがたいことに受け取られます。フック内から呼び出すprint_r( $view )と、2つのアイテムの結果セットのログファイルに46M以上がダンプされます。

4

2 に答える 2

2

あなたのタスクには2つの解決策があります。

最初のアプローチは、テンプレート レベルですべてを行うことです。ランダム化するビュー フィールドのテンプレートを定義します。ディスプレイの詳細設定で、テーマ: 情報に移動します。適切なテーマが選択されていることを確認し、フィールドのテンプレートの提案を見つけてください。それらは、最も一般的なものから最も具体的なものまでリストされており、自分に合ったものを選択できます. あなたのフィールドに対する最も具体的なテンプレートの提案は、views-view-field--[YOR VIEW NAME]--[YOUR DISPLAY NAME]--nothing.tpl.php のようなものになると思います。その名前のファイルをテーマ テンプレート ディレクトリに作成し、このテンプレートで必要なものをレンダリングできます。

デフォルトでは、このテンプレートには 1 行しかありません。

  print $output;

これを次のように変更できます。

  print sprintf("test %d", rand(1,9));

または他の何かに、何でも:)

2 番目のアプローチは、Views PHPモジュールを使用することです。このモジュールを使用すると、何でもできるカスタム PHP フィールドを追加できます。このモジュールはまだリリースされていませんが、ほとんどのタスクで非常にうまく機能しているように見えます。数値のランダム化などの単純なタスクでは、確実に機能します。

于 2012-03-02T22:31:10.303 に答える