Хитринки 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 по пореден номер, също бих приел с отворени виртуални обятия.