Оформление темой собственного типа узла

Главные вкладки

Аватар пользователя rust13 rust13 14 февраля 2010 в 23:34

Всем привет. Столкнулся с проблемой. Разрабатываю собственный тип узла. Мне нужно, чтобы форма для создания/редактирования узла обрабаьывалась моей функцией темизации. В hook_form написал $form['#theme'] = myfunc; Создал реализацию hook_theme, где объявил myfunc и создал функцию theme_myfunc. Но - не сработало( Может, кто подскажет, в чем я ошибся? Если непонятно, могу привести весть код.

Комментарии

Аватар пользователя likin likin 15 февраля 2010 в 1:17

Тоже недавно столкнулся с такой проблемой...

в template.php

<?php
// we register the form to the theme registry
function s5fix_theme(){
  return array(
    'imagegallery_node_form' => array(
      'arguments' => array('form' => NULL),
      'template' => 'imagegallery-node-form',
    ),
  );
 
}
// Theme the node add / edit forms for custom CCK types
function s5fix_imagegallery_node_form($form) {
  return drupal_render($form);
}
Аватар пользователя rust13 rust13 16 февраля 2010 в 0:17

likin, разъясни немного, я просто новичек в php. Насколько я понял, первая функция регистрирует обработчик для формы ноды imagegallery, т.е. файл шаблона - imagegallery_node_form.tpl.php, а вторая - themename_modulename_node_form - то же самое? Не хватит какой-нибудь одной?
Я вообще читал, что если установить $form['#theme'] = function, то для оформления формы будет запускаться эта функция, но относится ли это к формам нод?
Приведу код, вдруг я что-то недопонял:

<?phpfunction book_form($node) {
  $type = node_get_types('type', $node);
 
  $form['#theme'] = 'bookform';
  ...
}

function book_theme() {
  return array(
    'bookform' => array(
      'arguments' => array(
        'form' => NULL
      )
    )
  );
};

function theme_bookform($form) {
  echo "<pre>" . htmlspecialchars(print_r($form, true)) . "</pre>"; exit();
}?>

Объяни, пожалуйста, подробней, на будущее.