2010-08-13 3 views
1

Как добавить вкладку в свой личный профиль (/ users/my-name)? Я использовал эту функцию, но nothuing показывает вверх:Добавить вкладку в профиле

function tpzclassified_menu() { 
    $items['user/%user/kleinanzeigen'] = array(
    'title' => t('Meine Kleinanzeigen'), 
    'page arguments' => array(1), 
    'access callback' => TRUE, 
    'type' => MENU_LOCAL_TASK, 
); 

    return $items; 
} 

ответ

2

Вы упускаете page callback свойство:

function tpzclassified_menu() { 
    $items['user/%user/kleinanzeigen'] = array(
    'title' => t('Meine Kleinanzeigen'), 
    'page callback' => 'tpzclassified_kleinanzeigen', 
    'page arguments' => array(1), 
    'access callback' => 'user_view_access', 
    'access arguments' => array(1), 
    'type' => MENU_LOCAL_TASK, 
); 

    return $items; 
} 

function tpzclassified_kleinanzeigen($account) { 
    return 'This is the Meine Kleinanzeigen page'; 
} 

Заменить tpzclassified_kleinanzeigen с именем функции, который генерирует страницу.

Кроме того, никогда не используйте 'access callback' => TRUE: это огромная дыра в безопасности. Я изменил это, чтобы использовать user_view_access(), который проверяет, разрешено ли пользователю просматривать профиль %user. Вы можете использовать user_edit_access(), если вы хотите проверить, разрешено ли пользователю редактировать профиль %user.

+0

Для доступа достаточно использовать '' access arguments '=> array (' access user profiles ') 'и не определять'' callback'' доступа '; в этом случае 'user_access()' будет использоваться как обратный вызов доступа. О обратном вызове страницы [documentation]() описывает его как «Функция вызова для отображения веб-страницы при посещении пользователем пути. Если этот параметр опущен, вместо него будет использоваться обратный вызов элемента родительского меню».; родительское меню ('user /% user') использует' user_page() 'в качестве обратного вызова страницы, и именно по этой причине новое меню ничего не отображает. – kiamlaluno

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