it-swarm-ja.com

2つのレンダー配列要素をdivでラップするにはどうすればよいですか?

このレンダリング可能な配列を考えると:

$output = array(
    'Twitter-icon' => array(
      '#type' => 'markup',
      '#markup' => '<div class="Twitter-icon"></div>'
    ),
    'Twitter-link' => array(
      '#type' => 'markup',
      '#markup' => l('follow us on Twitter', 'https://Twitter.com/#!/zujava'),
    ), 
  );

これらの要素の両方を1つのDIVでラップするにはどうすればよいですか?

12
Justin

#containerフォーム要素と次のようなコードを使用することもできます。

$wrapper = array(
  '#type' => 'container',
  '#attributes' => array(
    'class' => array('class-name'),
  ),
);

$wrapper['Twitter-icon'] => array(
  '#type' => 'markup',
  '#markup' => '<div class="Twitter-icon"></div>'
);

$wrapper['Twitter-link'] => array(
  '#type' => 'markup',
  '#markup' => l(t('follow us on Twitter'), 'https://Twitter.com/#!/zujava'),
); 

#container 要素は、子要素を<div>タグでラップします。そのCSSクラスは、#attributesプロパティで渡されるものです。

"Twitter-icon"要素のコンテナを使用することもできますが、次のコードのように要素を追加できる場合を除いて、プロには役立ちません。

$wrapper = array(
  '#type' => 'container',
  '#attributes' => array(
    'class' => array('class-name'),
  ),
);

$wrapper['Twitter-icon'] => array(
  '#type' => 'container',
  '#attributes' => array(
    'class' => array('Twitter-icon'),
  ),
);

if ($condition) {
  $wrapper['Twitter-icon']['Twitter-icon-text'] => array(
    '#type' => 'markup',
    '#markup' => t('Icon text'),
  );
}

$wrapper['Twitter-link'] => array(
  '#type' => 'markup',
  '#markup' => l(t('follow us on Twitter'), 'https://Twitter.com/#!/zujava'),
); 
29
kiamlaluno

これはあなたが探しているものですか?

$output = array(
    'Twitter-icon' => array(
      '#type' => 'markup',
      '#markup' => '<div class="Twitter-icon"></div>'
      '#prefix' => '<div class="test">',
    ),
    'Twitter-link' => array(
      '#type' => 'markup',
      '#markup' => l('follow us on Twitter', 'https://Twitter.com/#!/fdgf'),
      '#suffix' => '</div>',
    ), 
);

お役に立てば幸いです。

6
ninjascorner

このためのテーマを作成することもできます。

$form['Twitter']['#theme'] = 'my_Twitter_theme';

$form['Twitter']['icon'] = array(
'Twitter-icon' => array(
  '#type' => 'markup',
  '#markup' => '<div class="Twitter-icon"></div>'
);

$form['Twitter']['link'] = array(
  '#type' => 'markup',
  '#markup' => l('follow us on Twitter', 'https://Twitter.com/#!/zujava'),
);

そしてあなたのテーマフックで:

function my_hook_theme(){
  return array(
    'my_Twitter_theme' => array('form' => NULL)
  );
} 

そしてテーマ機能では:

function theme_my_Twitter_theme($form){
  $output = "";

  $output .= "<div class=\"Twitter\">";
  $output .= drupal_render($form['icon']);
  $output .= drupal_render($form['link']);
  $output .= "</div>";    

  $output .= drupal_render($form);
  return $output;
}

私はこれをDrupal 6で使用します。D7でも機能するかどうかはわかりませんが、期待しています

2
Gnuget