Drupal 7 – Rychlé vytvoření navázaného node
Dnes jsem v Drupal 7 narazil na poměrně zajímavý
problém. Mám rodičovský node a k němu lze přes nodereference napojit X
různých dalších. Můžeme si to představit třeba jako jednoduchou
databázi aut (tady by bylo asi vhodnější řešení využít i taxonomy, ale
pro ilustraci vyhovuje).
Volvo (node značka)
- V40 (node modelová řada via nodereference na značku)
- S60
- XC60
- XC90
Se zobrazením takového uspořádání není problém, to jistě každý zvládne. Drobný problém ale nastává při přidávání nového obsahu, kdy standardně neexistuje možnost, jak si vytváření usnadnit a ze značky mít hned možnost přidávat nové modelové řady. Hodilo by se, kdyby existovalo tlačítko přidat model, které si posléze můžeme umístit kam potřebujeme (přímo do node či vlastního administračního view). Jak na to? Je to docela jednoduché, ale budeme k tomu potřebovat vlastní modul.
Technicky využívám konkrétně Node Reference(Autocomplete text field) u modelové řady navázané na značku.
function customize_form_alter(&$form, $form_state, $form_id) {
if($form_id == 'brand_model_node_form') {
$form['field_brand'][LANGUAGE_NONE]['0']['nid']['#default_value'] = arg(3);
// using for redirect
$form['actions']['submit']['#submit'][] = 'customize_brand_model_node_form_submit';
}
//drupal_set_message($form_id);
}
function customize_brand_model_node_form_submit($form, &$form_state) {
//redirect to parent node based on node reference
$lang = $form_state['values']['language'];
$form_state['redirect'] = 'node/' . $form_state['values']['field_brand'][$lang][0]['nid'];
}
Nyní stačí již kdekoliv potřebuji odkázat na node/add/brand-model/[brand] a budu mít v políčku značka automaticky předvybráno. Zároveň mě to po uložení automaticky přesměruje na značku vozidla, kde je i tabulkový výpis modelové řady.
Pokud znáte lepší řešení, budu rád, když mi ho popíšete v komentářích.
Přidej vlastní názor
Ty