Темизация страницы node/add/content_type

Аватар пользователя Обухов Никита Обухов Никита 28 февраля 2009 в 17:25

Здравствуйте, необходимо темизировать страницу добавления материала. Я начал делать это вот так:

//Это в template.php
if ((arg(0) == 'node') && (arg(1) == 'add') && (arg(2) == 'content-type')){
function phptemplate_node_form($form) {
...
return _phptemplate_callback('content-type_edit', array('user' => $user, 'form' => $form));
}
}

if ((arg(0) == 'node') && (arg(2) == 'edit')){
    $node = node_load(array('nid' => arg(1)));
if ($node->type == 'content-type') {
function phptemplate_node_form($form) {
...
return _phptemplate_callback('content-type_edit', array('user' => $user, 'form' => $form));
}
}
}

Выходит, что приходится проделывать все операции по 2 раза. Есть ли более простой и удобный способ?

Комментарии

Аватар пользователя kosilko kosilko 28 февраля 2009 в 19:08

непонятно, зачем вы обернули функцию phptemplate_node_form в условие if, да еще и с проверкой аргументов урла. Логичнее было бы поместить if в саму функцию... Да и узнать какой тип материала мы сможем из передаваемой переменной $form.
За пятый друпал не скажу стопроцентно, нет у меня его под рукой, но в 6 такой вот код вполне нормально работает:

function phptemplate_node_form ($form) {
        if ($form['#node']->type=='content-type') {
                //сдесь делаем с формой то, что нам требуется
        }
}

Во всяком случае, если что-то неясно - попробуйте вызвать внутри функции var_dump($form);

Аватар пользователя Stein Stein 3 июня 2009 в 16:20

Да, как заставить работать в 6 ничего не получается, добавил в файл template.php

<?php
function phptemplate_node_form($form) {
    
$output '<br>HELLO<br>';
    return 
$output;
}
?>

и ничего не происходит, ноль внимания, что не так?