Drupal 7 – Přistupujeme k field pomocí Field data extraction
Každý kdo někdy přišel do styku s Drupal 7 Field API ví, že přístup k zobrazení field není úplně ideální. Je to vymyšleno univerzálně a univerzální znamená většinou i komplikované. Dnes pro vás mám tip, jak si tuto práci alespoň trochu zjednodušit.
Nejlepší bude, když si vše ukážeme na jednoduchém příkladu. Představme si, že chceme u uživatele mít jméno a příjmení. Vzniknou nám tedy 2 vlastní field. Pokud k nim chceme přistupovat a zobrazit jméno a příjmení místo přezdívky postupujeme obvykle nějak takto:
<?php
function THEME_preprocess_username(&$variables) {
$user = user_load($variables['uid']);
if(isset($user->field_name[LANGUAGE_NONE]) {
$name = $user->field_name[LANGUAGE_NONE]['0']['safe_value'];
}
if(isset($user->field_surname[LANGUAGE_NONE]) {
$surname = $user->field_surname[LANGUAGE_NONE]['0']['safe_value'];
}
// tuto hodnotu pak muzeme vyuzit v THEME_username($variables)
$variables['fullname'] = trim($name . ' ' . $surname);
}
?>
Pomocí modulu Field data extraction
Nyní si ten stejný příklad přepíšeme tak, aby využil výhody modulu Field data extraction.
<?php
function THEME_preprocess_username(&$variables) {
$user = user_load($variables['uid']);
$name = field_extract_value('user', $user, 'field_name');
$surname = field_extract_value('user', $user, 'field_surname');
// tuto hodnotu pak muzeme vyuzit v THEME_username($variables)
$variables['fullname'] = trim($name . ' ' . $surname);
}
?>
Výše uvedený kód jsem netestoval, ale věřím že z toho pochopíte, čím nám tento modul zjednoduší práci s Field API a začnete ho také používat zejména při tvorbě vlastních témat. Pokud chcete programovat moduly, bude lepší využít modulu Entity API, který poskytuje nejen čtení, ale i zápis hodnot (více v mém článku ).
Další příklady a modul ke stažení – http://drupal.org/project/1158878
Přidej vlastní názor
Ty