Создание модуля drupal 6 с вкладками - PullRequest
3 голосов
/ 02 ноября 2010

Я создаю модуль, который позволяет вашим пользователям добавлять каналы.Поэтому я хочу, чтобы мой код предоставлял вкладки, которые могут быть перезаписаны на слое темы.

Я думал, что это можно сделать с помощью hook_menu:

$items['tab_add_feed'] = array(
  'title' => 'Add Feed',
  'page callback' => 'xml_parser_add_feed',
  'access callback' => 'user_access',
  'access arguments' => array('manage own feeds'),
  'type' => MENU_LOCAL_TASK,
);

примерно так, как описано вышеНо я использую его на лицевой стороне сайта.

Как я могу добавить вкладки или ссылки в верхней части моей страницы по-друпски?

// edit

В данный момент нет вкладок, может быть, мне нужно сделать их видимыми?

исправили это, добавив <a href="xml_parser/add_feed">add feed</a> к функции обратного вызова главной страницы, но это уродливо, жестко запрограммировано и не доступно для темы.жду лучшего решения.

// edit

Это код, который я сейчас использую

function xml_parser_menu() {
    $items = array();

    $items['xml_parser'] = array(
            'path' => 'xml_parser',
            'title' => t('Feed'),
            'description' => t('Add/edit feeds'),
            'page callback' => 'xml_parser_manage_overview', 
            'access callback' => 'user_access', // get user access
            'access arguments' => array('manage own feeds'), // check user if premission is set
            'type' => MENU_NORMAL_ITEM,
            'menu_name' => 'primary-links', // add to primary menu
    );

    $items['xml_parser/add_feed'] = array(
            'path' => 'xml_parser/add_feed',
            'title' => 'Add Feed',
            'page callback' => 'xml_parser_add_feed',
            'access callback' => 'user_access',
            'access arguments' => array('manage own feeds'),
            //'access' => user_access('maintain own subscriptions'),
            'type' => MENU_LOCAL_TASK,
    );
    return $items;
}

Ответы [ 2 ]

2 голосов
/ 02 ноября 2010

Я думаю, что имя элемента будет что-то вроде 'user /% / add_feed', с аргументом% будет идентификатор пользователя. Кроме того, обратный вызов доступа написан неправильно, должно быть user_access. Это должно создать вкладку для пользователя на странице профиля пользователя. Вы также можете сделать узел /% / add_feed, чтобы добавить вкладку к узлу.

При разработке этого модуля может оказаться полезным использовать это:

function mymodule_init() {
   cache_clear_all();
   menu_router_build();
}

Пока вы не получите меню прямо.

Если вы хотите просто добавить произвольную вкладку на страницу, чтобы добавить канал, это, вероятно, будет автономное меню или тематическая ссылка. Мне нужно было бы больше узнать о контексте каналов, которые вы пытаетесь предоставить, и о том, как пользователи подписываются.

0 голосов
/ 04 ноября 2010

Вы должны иметь возможность добавить вкладку на первую страницу. Помните, что титульная страница вашего сайта на самом деле не "/", а "/ node" по умолчанию (если вы ее не изменили).

Я просто догадываюсь, потому что я не пробовал этого, но ваш код должен работать, если вы измените ключ для вашей вкладки в $ items на node/tab_add_feed.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...