Странная проблема с hook_view drupal - PullRequest
0 голосов
/ 11 сентября 2010

У меня странная проблема с hook_view. Проблема в том, что hook_view не вызывается, если hook_load не возвращает недопустимое значение, например пустую переменную Я не знаю, что вызывает это, и я нахожусь в конце своего ума. Я очень ценю вашу помощь. Для чего у меня установлен модуль прикрепления изображения.

Drupal 6.x

UPDATE

function mymodule_node_info(){
return array(
      'nodetype1' => array(
         'name' => t('nodetype1'),
         'module' => 'mymodule_nodetype1',
         'description' => t('....'),
         'has_title' => TRUE,
         'title_label' => t('Title'),
         'has_body' => TRUE,
         'body_label' => t('Body'),
     ),
     'nodetype2' => array(
         ......
         'module' => 'mymodule_nodetype2',
         ......
     ),
     'nodetype3' => array(
         ......
         'module' => 'mymodule_nodetype3',
         ......
     ),
     'nodetype4' => array(
         ......
         'module' => 'mymodule_nodetype4',
         .......
     ),
 );

 }

function mymodule_nodetype1_load($node){
   $query = 'SELECT f1,f2,...,f10 FROM {tb1} INNER JOIN {tb2} ON {tb1}.vid = {tb2}.vid WHERE {tb1}.vid = %d';

   $result = db_query($query,$node->vid);

   return db_fetch_object($result);
}

function mymodule_nodetype1_view($node, $teaser = FALSE, $page = FALSE){
    $node = node_prepare($node, $teaser); // get it ready for display

    $f1 = check_markup($node->f1);
     ..............
    $f10 = check_markup($node->f10);

    // Add theme stuff here
    $node->content['mycontent'] = array(
       '#value' => theme('defaultskin', $f1,...,$f10),
       '#weight' => 1,
    ); 

    return $node;
}

function mymodule_theme(){
    return array(
        'defaultskin' => array(
            'template' => 'node-defaultskin',
            'arguments' => array(               
                'f1' => NULL,
                ......
                'f10' => NULL,
            ),
        ),
    );
}

Ответы [ 2 ]

1 голос
/ 13 сентября 2010

Я нашел виновника. Просто на случай, если кто-нибудь столкнется с той же проблемой, что и я, вот почему - я назвал одно поле как «TYPE», и, когда я получил набор записей внутри hook_load с помощью drupal_fetch_object, я считаю, что имя члена полученного объекта «тип» могло вызвать конфликт имен с основным членом друпала. В результате это заставляет это не вызывать hook_view. После того, как я переименовал свое поле во что-то другое, оно работает как шарм. Поэтому никогда не называйте поле как «Тип». Вы, ребята, тоже могли это знать, но из-за моего намерения упростить чтение кода я переименовал эти поля в более простые (f1, ... f10). Извините за беспокойство. И спасибо всем за ваши усилия.

ура

0 голосов
/ 12 сентября 2010

Этот хук предназначен для использования в модуле узла (т.е. в модуле, который сам создает новый тип узла), я предполагаю, что вы используете его для узлов, определенных Drupal или CKK, или другого модуля, если так, используйте hook_nodeapi ( ) вместо этого с аргументом представления.

http://api.drupal.org/api/function/hook_nodeapi/6

...