2013-09-20 4 views
0

Я пробовал простейшие примеры использования hook_menu(), размещенного здесь, и на других форматах Drupal и, похоже, работает. Мой код в: /sites/themes/mytheme/mymodule.module, выглядит следующим образом:Drupal hook_menu() не работает

<?php 
function helloworld_menu() { 
    $items = array(); 
    $items['hello'] = array(
     'title' => 'Hello world!', 
     'type' => MENU_CALLBACK, 
     'page callback' => 'helloworld_page', 
     'access callback' => TRUE, 
    ); 
    return $items; 
} 

function helloworld_page() { 
    return 'Hello world !'; 
} 

Когда я перейти к www.mydomain.com/hello я получаю 404 ошибку. Я попытался включить и отключить модуль вместе с очисткой кеша много раз без везения. Вот некоторая дополнительная информация о моей среде:

  • Запуск Drupal Commerce версии 7,22
  • Я включил чистые URLS и модуль Pathauto

Конечной целью я пытаюсь достичь добавляющие продукты в корзину со ссылкой. У меня уже есть эта часть, чтобы я мог передать идентификаторы продуктов в функцию и добавить их в корзину. Я бы заменил helloworld_page() моей функцией, а затем сменил $ items ['hello'] на $ items ['cart/add /% /%'], имея две подстановочные знаки (идентификатор продукта и количество).

ответ

2

Для описания крючков, как hook_menu, имя функции должно быть как <your_module_name_here>_menu

Это где вы собираетесь не так.

Ваше имя модуля mymodule.module так что ваш hook_menu следует назвать, mymodule_menu

<?php 
/** 
* Implements hook_menu(). 
*/ 
function mymodule_menu() { 
    $items = array(); 
    $items['hello'] = array(
     'title' => 'Hello world!', 
     'type' => MENU_CALLBACK, 
     'page callback' => 'helloworld_page', 
     'access callback' => TRUE, 
    ); 
    return $items; 
} 

function helloworld_page() { 
    return 'Hello world !'; 
} 

Исправьте имя функции и очистить кэш и повторите попытку.

Также я заметил, что вы поставили модуль в нетрадиционном месте.

Переместите его в папку /sites/all/modules/custom/mymodule (оба mymodule.info и mymodule.module файлов).

+0

Вау, я не думал, что имя функции (кроме «_menu») имеет значение или местоположение модуля. Кроме того, я использовал только фиктивные данные, но он все еще работал, спасибо тонну! – phpete

Смежные вопросы