TRaKTOR: Блог

Главные вкладки

Проблема с аргументами и hook_menu

23 июня 2011 в 19:48

Необходимо, чтобы при страница редактирования пользователя открывалась по адресу http://www.example.com/profile/settings. В ядре (модуль user) прописано, что эта страница открывается по адресу http://www.example.com/user/1/edit, где 1 - uid пользователя. Pathauto не прокатил, потому что есть аргументы. Решил попробовать решить эту проблему с помощью создания модуля. Создал модуль dev_ext, туда впихнул выдранный и видоизмененный кусок из user

$items['profile/settings'] = array(
'title' => 'Edit',
'page callback' => 'drupal_get_form',
'page arguments' => array('user_profile_form', $GLOBALS['user'], 'account'),
'access callback' => TRUE,
'type' => MENU_LOCAL_TASK,
'file' => 'user.pages.inc',
'file path' => drupal_get_path('module', 'user'),
);

На 'access callback' => TRUE не обращайте внимания, решил пока не замарачиваться с правами.
Проблема в следующем - он показывает мне страницу редактирования admin (user 1), а не моего пользователя. Решив проверить, совершил такую замену
'page arguments' => array('user_profile_form', $GLOBALS['user']->uid != 1 ? die(var_dump($GLOBALS['user'])) : user_load(33), 'account'),
и ничего. Помогите, пожалуйста, ткните в ошибку.

Изменение url страницы редактирования пользователя

8 мая 2011 в 21:27

По умолчанию url страницы редактирования пользователя user/%uid/edit . Нужно чтобы url было profile/settings. Если дублировать пункт меню в другой модуль и поменять url - не срабатывает, форму не выводит. Как можно решить?

Темизация Privatemsg (отдельно входящие и исходящие)

3 мая 2011 в 21:19

Нужно сделать 2 отдельные страницы - Входящие и Исходящие и затемизировать. Прочитал документацию, прошелся по модулю, понял, что темизируется форма (через template.php), а вот как отделить входящие от исходящих. Есть несколько мыслей по поводу: сделать в своем модуле свои запросы к базе через хитрую функцию privatemsg или в template.php строки, в которых юзер автор (для входящих), убирать и не показывать. Как-то по-индусски получается... Кто сталкивался, подскажите правильный путь пожалуйста.
Заранее спасибо.

CCK + Views + Node Reference = связь многие к одному

27 июля 2010 в 13:05

Столкнулся с проблемой "связь многие к одному".
Есть журнал. У журнала есть номер и год. В каждом номере есть статьи. В статьях есть название, текст.
По ссылке magazine/issues/ показываем все номера журналов, которые есть каждый с ссылкой на страницу номера.
(Пример)
44
45
46
По ссылке magazine/issue/% показываем все статьи номера.
(Пример)
magazine/issue/44

Статья 1
Статья 2

Как я пытался это реализовать:
1. Новый тип данных - issue (номер журнала). Есть поля title (обязательное поле), number(номер)(integer), year(год)(integer, хотя можно и date).
2. Новый тип данных - article (статья). Есть поля title (название), body (текст статьи), issue_number(номер журнала)(node reference, выбор типа данных - issue).
3. Новый вид - magazine/issues. отображает номера. тут все нормально, описывать не буду.
4. Новый вид - magazine/issue/%. фильтр - node: article, row style: node.

Вот тут и начинается. Пока я не добавляю в Arguments ничего, показывает все статьи, как только я добавляю туда поле issue_number, ничего не выводится. Т.е. аргумент не прокатывает. Создавал в article новое поле num(integer), записывал туда напрямую номер, делал аргумент по этому полю - работает... но это не выход, просто показываю, что работает.

В общем вопрос такой - как сделать так, чтобы заработало с node reference. Или предложите другое решение, пожалуйста.
Заранее спасибо.