Tutoriály: Display Suite for Drupal 7
Display suite mimo jiné umožňuje:
drush help ds-build
Instalace a nastavení:
Podobné moduly:
Další moduly:
Tipy:
Detekce vyplnění reference na slovník:
<?php //kpr($entity); // Search Krumo: $var->field_product_type[LANGUAGE_NONE][0]['tid']; if(!empty($entity->field_product_type[LANGUAGE_NONE][0]['tid'])): ?> [node:field_product_type] <?php else: ?> //... <?php endif ?>
Zobrazení požadovaného textu na základě hodnoty pole:
<?php
$count = reset(field_get_items('node', $entity, 'field_count'));
$count = $count['value'];
if ($count == 1) {
$t1 = t('Only one');
} elseif ($count > 1 && $count < 5) {
$t1 = t("$count > 1 and $count < 5");
} elseif ($count >= 5) {
$t1 = t("More than 4");
}
print $c;
?>Pokud je vyplněn odkaz v poli field_slide, stane se obrázek pole field_image odkazem:
<?php
if (empty($object->field_slide[0]['url'])) {
print [field_image];
}
else {
print l('[field_image]', url($object->field_slide[0]['url'], array('absolute' => TRUE)), array('html' => TRUE));
}
?>Odkaz číst dál
<?php if($object->readmore) { echo l(t("Read more"), "node/$object->nid"); } ?>Odkaz na soubor
<?php if(isset($object->field_file[0]['fid'])): ?>
<a href="/[field_file-filefield-filepath]"><?php echo t('Download') . " ("; ?> [field_file-filefield-filesize_formatted] <?php echo ") - "; ?>[field_file-filefield-filename]</a>
<?php endif; ?>Detekce Flag příznaku "logo" viz dokumentace The Flag 3.x API (PHP)
<?php
$flag = flag_get_flag('logo');
if ($flag && $flag->is_flagged($object->nid)) {
print "This node has flag Logo!";
}
?>Vložení hlavního menu:
<?php
$menu = menu_navigation_links('main-menu');
print theme('links__main-menu', array('links' => $menu));
?>Zobrazení termínů včetně aktivních odkazů:
<?php
//kpr($entity);
for ($i = 0; $i < count($entity->field_town[LANGUAGE_NONE]); $i++) {
$tid = $entity->field_town[LANGUAGE_NONE][$i]['taxonomy_term']->tid;
$term = taxonomy_term_load($tid); // load term object
$term_uri = taxonomy_term_uri($term); // get array with path
$term_title = taxonomy_term_title($term);
$term_path = $term_uri['path'];
$link = l($term_title,$term_path);
print '<div class="field-item">'. $link .'</div>';
}
?>Příklad zobrazení vlastního formátu data (z pole typu "Date"):
<?php
//kpr($entity);
$DateFrom = new DateTime($entity->field_date['und'][0]['value']);
if(isset($entity->field_date['und'][0]['value2'])) {
$DateTo = new DateTime($entity->field_date['und'][0]['value2']);
$DateTo = ' – '. $DateTo->format('j. n. Y');
} else {
$DateTo = '';
}
print ' <span>('. $DateFrom->format('j. n.') . $DateTo .')</span>';
?>Příklad zobrazení vlastního formátu data (z pole typu "Unix timestamp"):
<?php
//kpr($entity);
$day = date("D", $entity->field_program_date[LANGUAGE_NONE][0]['value']);
$date = date("j.n.", $entity->field_program_date[LANGUAGE_NONE][0]['value']);
$time = date("G:i", $entity->field_program_date[LANGUAGE_NONE][0]['value']);
print t($day) .' <span>'. $date .'</span> '. $time;
?>Kromě základních API funkcí je možné využívat i funkce dalších povolených modulů např. ořez titulku pomocí funkce "views_trim_text()" z modulu Views:
<?php
//kpr($entity);
$alter = array(
'max_length' => 15,
'word_boundary' => true,
'ellipsis' => true,
);
$value = $entity->title;
print views_trim_text($alter, $value);
?>Vložení obrázku požadované velikosti definované ve stylech obrázků (Get Image Style Path):
<?php //kpr($entity); $img_style = "thumbnail"; $img_url = $entity->field_image['und'][0]['uri']; $img_alt = $entity->field_image['und'][0]['alt']; if (!empty($img_style) && !empty($img_url)) { print '<img src="'. image_style_url($img_style, $img_url) .'" alt="'. $img_alt .'" />'; } ?>
Větší kontrolu nad poli Display Suite nabízí vlastní funkce umístěné do souboru template.php v aktivním tématu vzhledu případně do vlastního modulu.
Zobrazení pouze prvního obrázku v režimu "náhled":
/**
* Implements hook_field__expert__FIELD_ID().
*/
function mytheme_field__expert__field_images(&$variables) {
// Inspect the contents of $variables.
//krumo($variables);
// View mode detection
if ($variables['element']['#view_mode'] == 'teaser') {
// In teaser mode, only output the first image.
$item = $variables['items'][0];
$variables['items'] = array(0 => $item);
}
return theme_ds_field_expert($variables);
}...