Вопрос по hook_menu

Прислано: Nomad-71

сб, 30/01/2010 - 16:12

Другие статьи по теме:

Пытаюсь написать простенький модуль для Друпала (вооружился книгой Pro Drupal Development John за авторством K.VanDyk and Matt Westagate), соответсвенно в самом начале есть небольшой пример создания меню который выглядит вот так:

<?phpfunction annotate_menu($may_cache) {
  
$items = array();
  if (
$may_cache) {
    
$items[] = array(
      
'path' => 'admin/settings/annotate',
      
'title' => t('Annotation settings'),
      
'description' => t('Change how annotations behave.'),
      
'callback' => 'drupal_get_form',
      
'callback arguments' => array('annotate_admin_settings'),
      
'access' => user_access('administer site configuration')
    );
  }
  return 
$items;
}
?>

И сказано, что должна появится ссылка, "annotate", но её нет, собственно вопрос почему? Чего я упустил?

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано PanDa777 в сб, 30/01/2010 - 16:30.

Может, вы не сбросили кеш? Поставьте devel. Он это умеет просто и быстро делать.


Опубликовано RxB в сб, 30/01/2010 - 16:50.

Гыгыгыгы, а hook_menu() то, пятёрошный...
А пропустили вы поиск, он справа сверху, тема кривых исходников Вандюка обсуждалась раз пицот, даже выкладывались правильные версии модулей


Опубликовано Nomad-71 в сб, 30/01/2010 - 17:45.

"RxB" написал(а):

Гыгыгыгы, а hook_menu() то, пятёрошный...
А пропустили вы поиск, он справа сверху, тема кривых исходников Вандюка обсуждалась раз пицот, даже выкладывались правильные версии модулей

К сожалению пропустил, да и сейчас что-то не нашел. Зато вооружился документацией (http://api.drupal.org/api/function/hook_menu/6)
И всё равно как-то не наблюдаю меню.


Опубликовано RxB в сб, 30/01/2010 - 17:48.

Ну, сорри, среди друпал-кодеров критически низок процент экстрасенсов, без исходника мало кто может чего сказать


Опубликовано Nomad-71 в сб, 30/01/2010 - 17:54.

"RxB" написал(а):

Ну, сорри, среди друпал-кодеров критически низок процент экстрасенсов, без исходника мало кто может чего сказать

Хмм, это я знаю. Именно поэтому линк дал, ну давайте попробуем так:
2 файла:
test.info

; $Id$
name = test
description = description
package = Example
core = 6.x

и второй:
test.module
<?php
function hook_menu() {
  
$items = array();

  
$items['blog'] = array(
    
'title' => 'blogs',
    
'description' => 'Listing of blogs.',
    
'page callback' => 'blog_page',
    
'access arguments' => array('access content'),
    
'type' => MENU_SUGGESTED_ITEM,
  );
  
$items['blog/feed'] = array(
    
'title' => 'RSS feed',
    
'page callback' => 'blog_feed',
    
'access arguments' => array('access content'),
    
'type' => MENU_CALLBACK,
  );

  return 
$items;
}
?>

Если я всё правильно понял, то в результате таки должна получится менюшка (пусть ни фига не делающая - это чуть позже). Если не правильно понял, то порекомендуйте чего почитать - на гордый статус веб программиста не претендую (и не собираюсь, просто, так случилось, нужно написать небольшой модуль).


Опубликовано Dan в сб, 30/01/2010 - 22:58.

1. сброс кэша
2. должна появиться не менюшка, а два пункта один пункт в меню. ищите в навигации
3. функции 'blog_page' и 'blog_feed' определены?


Опубликовано Обухов Никита в сб, 30/01/2010 - 22:02.

"Dan" написал(а):

2. должна появиться не менюшка, а два пункта в меню. ищите в навигации

Во втором у него MENU_CALLBACK - в меню навигации не появится


Опубликовано Dan в сб, 30/01/2010 - 22:58.

Да, ошибся, сорри.


Опубликовано RxB в вс, 31/01/2010 - 02:56.

"Dan" написал(а):

3. функции 'blog_page' и 'blog_feed' определены?

Даже если функция не определена, то просто будет 404, но пункт работать будет


Опубликовано Nomad-71 в вс, 31/01/2010 - 07:11.

"Dan" написал(а):

1. сброс кэша
2. должна появиться не менюшка, а два пункта один пункт в меню. ищите в навигации
3. функции 'blog_page' и 'blog_feed' определены?

1. Если про кеширование Drupal - то оно вообще сейчас в настройках отключено.
2. Нету
3. Нет не определены.


Опубликовано RxB в вс, 31/01/2010 - 07:13.

"Nomad-71" написал(а):

1. Если про кеширование Drupal - то оно вообще сейчас в настройках отключено.

Вы хорошо читали про hook_menu()? Кеш нужно сбросить, чтобы меню перестроилось


Опубликовано Nomad-71 в вс, 31/01/2010 - 07:26.

"RxB" написал(а):

Вы хорошо читали про hook_menu()? Кеш нужно сбросить, чтобы меню перестроилось

Да, и такое бывало.. admin/settings/performance -> "сбросить кеш данных", тем не менее admin/build/menu-customize/navigation ничего нового.


Опубликовано PanDa777 в вс, 31/01/2010 - 09:19.

Этот пункт сбрасывает только кэш страниц.

Почистите таблицу cache_menu или поставьте  Devel. Он позволяет чистить эту таблицу через Drupal. И вообще, он действительно полезен при разработке.


Опубликовано Dan в вс, 31/01/2010 - 09:19.

Отлично мы тут все вместе тупим. Хук должен называться test_menu, а не hook_menu.


Опубликовано RxB в вс, 31/01/2010 - 09:20.

"Dan" написал(а):

Отлично мы тут все вместе тупим. Хук должен называться test_menu, а не hook_menu.

ОМГ. Точно...


Опубликовано PanDa777 в вс, 31/01/2010 - 09:23.

Ну, изначально-то функция называлась правильно.

И всё равно кеш придётся сбросить ;)


Опубликовано Dan в вс, 31/01/2010 - 09:34.

"PanDa777" написал(а):

И всё равно кеш придётся сбросить ;)

Да, или переставить модуль.


Опубликовано Nomad-71 в вс, 31/01/2010 - 09:35.

PanDa777 написал(а):

Этот пункт сбрасывает только кэш страниц.

Почистите таблицу cache_menu или поставьте  Devel. Он позволяет чистить эту таблицу через Drupal. И вообще, он действительно полезен при разработке.

Почистил - без толку.


Опубликовано RxB в вс, 31/01/2010 - 09:37.

Тогда выкладывайте код модуля


Опубликовано Nomad-71 в вс, 31/01/2010 - 09:41.

RxB написал(а):

Тогда выкладывайте код модуля

Так уже выложил, всё что есть.


Опубликовано RxB в вс, 31/01/2010 - 09:44.

Вы пока только выложили код от пятёрки и то, что написано на api.drupal.ru


Опубликовано Nomad-71 в вс, 31/01/2010 - 09:50.

А больше ничего и нету - куда писать дальше, если изначально не работает?


Опубликовано Dan в вс, 31/01/2010 - 10:03.

Прикрепите два файла, info и module.


Опубликовано Nomad-71 в вс, 31/01/2010 - 10:15.

Вот, пожалуйста.


Опубликовано RxB в вс, 31/01/2010 - 10:22.

Прошу всё-таки уважать отвечающих и ознакомиться с хуковой структурой друпала

"Dan" написал(а):

Отлично мы тут все вместе тупим. Хук должен называться test_menu, а не hook_menu.

У вас модуль называется columns, следовательно, хук будет columns_menu()
Так же необходимо поправить info-файл


Опубликовано Nomad-71 в вс, 31/01/2010 - 10:27.

Спасибо.


Новое на сайте

Ссылки партнёров