web-dev-qa-db-ja.com

ビューのフィールドのレンダリング(配列)を変更しますか?

ビューのフィールドのレンダリングを変更するにはどうすればよいですか?
htmlが出力用に生成される前に、render配列にどこからアクセスできますか?

たとえば、ビューに画像フィールドが含まれている場合、画像が theme_image ?を使用してレンダリングされる前に、画像の属性にどこに追加できますか?フィールドが最終的にはtheme_imageを使用して引き続きレンダリングされると仮定します。

Viewsがマークアップに挿入する周囲のdivsではなく、属性をイメージタグに追加したいと思います。

Jimajammaの回答に基づく編集:

提案されているように$view->resultを編集すると、ビューがクラッシュします。ページが正しく正しくレンダリングされなくなった:

function MYMODULE_views_pre_render(&$view) {  
   if ($view->name=='viewyouarelookingfor') {
      foreach($view->result as $row) {
         $row['field_body'][0]['rendered']['#markupe'] = '<p>Test!</p>'; // causes View to crash
      }
   }   
 }
4
nmc

views_pre_render(&$view);フックを見てみましょう。そこで、あなたのモジュールでは、次のようなことができます:

_ function MYMODULE_views_pre_render(&$view) {

   if ($view->name=='viewyouarelookingfor') {

      // do whatever you want

   }

 }
_

そして、各行を構成するすべての生データの配列である$ view-> resultにアクセスできることを意味する、何でも行います。 drupal_set_message('<pre>' . print_r($view->result, true) . '</pre>');またはそれに相当するものを投入して、それをのぞいてみると、あらゆる種類の魔法を働かせることができるはずです。

これがニーズに合わない場合でも、その行またはフィールド自体のビューテンプレートから任意の方法でフィールドをレンダリングできます。

9
Jimajamma

また、'#markup'ではなく配列キー'#markupe'を使用していることを確認する必要があります。

2
asiby