Хитринки pt. 2
След онагледените в това писание ръчни манипулации на template.php за носталгичния вече Drupal 5, ъпгрейдването на един отдавна влачещ се проект наложи да разбера как да ги постигна в по-модерния контекст на шестицата.
Някой ентусиаст тук оптимистично е предложил решение, което се изразява в следния код:
function phptemplate_preprocess_page(&$variables) { if ($node = menu_get_object()) { $variables['node'] = $node; $suggestions = array(); $template_filename = 'page'; $template_filename = $template_filename . '-' . $variables['node']->type; $suggestions[] = $template_filename; $variables['template_files'] = $suggestions; } }
И колкото този себеотрицателен алтруизъм да ме изпълни с благодарност, чувствата бяха краткотрайни, тъй като се оказа, че инжектирайки въпросния код, автоматично се секват вградените template suggestions на Drupal 6, а именно спира да работи page-front.tpl.php, който за въпросния ми проект е от решаваща важност.
По-надолу в коментарите на въпросната друпалска дискусия има няколко алтернативни предложения, но не знам дали поради лична некадърност или поради световна фекална конспирация, но нито едно от тях не успя да потегли в моя случай.
Затова се наложи да издрискам един бърз и неелегантен workaround, изразяващ се в дефиниране на нов node type на име front и създаване на един единствен node за него, който да се показва като начална страница на drupal инсталацията.
Но за да е пълна цветността на кафявия спектър, се оказа, че internationalization плъгина за Drupal 6 изпитва трудности да показва единичен node за начална страница, когато превключваш от език на език.
Закърпих казуса още по-диарично неелегантно чрез едно view, което показва единствения node от съответния node type за начална страница, защото поради неизвестни за мен причини i8n модулът няма проблеми с превеждането на node-та в дадено view.
Резултат - началната страница на инсталацията е view, показващо един node от един node type, на който пък се прилага page template.
Ситуация, известна още като "операция на сливиците през гъза".
Ако все пак някой има идея как в template.php за Drupal 6 да се постигнат template suggestions за node type без да се изтриват вградените такива, бих бил безкрайно благодарен да ги сподели.
И в тоя ред на мисли, ако се намери подобен снипет и относно suggestions за определен node по пореден номер, също бих приел с отворени виртуални обятия.