ビューのフィールドのレンダリングを変更するにはどうすればよいですか?
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
}
}
}
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>');
またはそれに相当するものを投入して、それをのぞいてみると、あらゆる種類の魔法を働かせることができるはずです。
これがニーズに合わない場合でも、その行またはフィールド自体のビューテンプレートから任意の方法でフィールドをレンダリングできます。
また、'#markup'
ではなく配列キー'#markupe'
を使用していることを確認する必要があります。