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



Komentáře

Zatím nikdo nepřidal komentář, můžete být první.



O autorovi

Pari

Vítejte na mém blogu, rád bych se v krátkosti představil. Je mi 26 let. Momentálně nejvíce času věnuji projektu Lepime.cz - obchod se samolepkami na zeď a tvorbě webů postavených na redakčním systému Drupal pod značkou MEPA.CZ.