Здравствуйте, необходимо темизировать страницу добавления материала. Я начал делать это вот так:
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 раза. Есть ли более простой и удобный способ?
Комментарии
непонятно, зачем вы обернули функцию phptemplate_node_form в условие if, да еще и с проверкой аргументов урла. Логичнее было бы поместить if в саму функцию... Да и узнать какой тип материала мы сможем из передаваемой переменной $form.
За пятый друпал не скажу стопроцентно, нет у меня его под рукой, но в 6 такой вот код вполне нормально работает:
if ($form['#node']->type=='content-type') {
//сдесь делаем с формой то, что нам требуется
}
}
Во всяком случае, если что-то неясно - попробуйте вызвать внутри функции var_dump($form);
Подскажите плиз, а для 6 версии как это организовать?
Да, как заставить работать в 6 ничего не получается, добавил в файл template.php
<?php
function phptemplate_node_form($form) {
$output = '<br>HELLO<br>';
return $output;
}
?>
и ничего не происходит, ноль внимания, что не так?