web-dev-qa-db-ja.com

フィールドを変更するhtmlの場合は、hook_preprocess_node()またはhook_node_view()

画像フィールドのhtmlを変更する最良の方法は何ですか?私はimagefieldを持っていて、それを最初からhtmlに書き換えたいです。

1
Alexander Kim

hook_preprocess_HOOK は仕事をします、

独自のtheme_image_formatter()の記述もご覧ください。

Node_view()では機能しますが、FIELDのHTMLを変更します。node_viewでは、フィールドの順序を変更し、新しいコンテンツを非表示/表示しますが、外観を制御するわけではありません。絶対に行うことはできますが、実際は最高の/ Drupalの方法。

Drupalは機能(node_view())と外観(テーマ)を分割します

Hook_preprocess_node()では、フィールドの変数ではなく、ノードテンプレートの変数を変更します。ノードラッパーにクラスを追加したり、ノードテンプレートを変更したりするには、この変数が必要になります...このテーマのテーマに深く入り込む必要があります。 。

例:

// ALL IMAGES get rounded class.
function YOURTHEME_preprocess_image(&$variables) {
  $variables['attributes']['class'] = array('rounded');
}

そしてフィールドのために

// If field_images in FULL view mode of a node, add/edit variables and choose template
function YOURTHEME_preprocess_field(&$variables) {
  if ($element['#field_name'] == 'field_images' && $element['#bundle'] == 'YOUR_NODE_TYPE' && $element['#view_mode'] == 'full') {
 $variables['theme_hook_suggestions'][] = 'field__field_images_YOUR-file-name';
  // Add more variables available in template...
  $variables['toggle'] = 'Read the story';
  $variables['some_text'] = 'Some text';

}
3
Pan Chrono