it-swarm.com.de

Wie verpacke ich zwei Render-Array-Elemente in ein Div?

Angesichts dieses renderbaren Arrays:

$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'),
    ), 
  );

Wie verpacke ich diese beiden Elemente in einem einzigen DIV?

12
Justin

Sie können auch das #container Formularelement und Code ähnlich dem folgenden:

$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'),
); 

Das Element # container umschließt seine untergeordneten Elemente mit einem <div> Tag, dessen CSS-Klasse diejenige ist, die im #attributes Eigentum.

Sie könnten sogar einen Container für das "Twitter-Symbol" -Element verwenden, aber das gibt Ihnen keinen Vorteil, außer in dem Fall, dass Sie möglicherweise ein Element hinzufügen könnten, wie mit dem folgenden Code:

$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

Ist es das, wonach du suchst?

$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>',
    ), 
);

Ich hoffe, das hilft!

6
ninjascorner

Sie können auch ein Thema dafür erstellen.

$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'),
);

Und in Ihrem Themenhaken:

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

Und in der Themenfunktion:

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;
}

Ich benutze dies in Drupal 6, ich bin nicht sicher, ob es auch in D7 funktioniert, aber ich hoffe es

2
Gnuget