Давным-давно уже просили такое сделать, чтобы можно было быстро переходить к личному трекеру, но тогда задача стояла добавить пункт в меню навигация...
Я попробовал и у меня не получилось. В конце-концов нашел такое простое и примитивное решение.
Создал блок и в нем код, который выводит всего одну ссылку:
Чтобы проверить работу - нужно найти блок "Личный трекер" в левой колонке...
И почему я раньше не сообразил как это сделать... Аж стыдно как-то!...
Комментарии
Странное решение.
Почему не использовать простую ссылку, без использования PHP?
Чтото вида
Личный трекер
И упрятали его в задницу Почему бы не сунуть его в пользовательское меню слева? А заодно и ссылку на создание записи вынуть из закромов.
Зачем он там внизу-у! Вменю положить под «Мои учетные данные» и назвать лучше «Мой трекер», а то личный что-то не звучит, хотя по-моему вообще уже поздно...
Поднять вверх и заголовок можно убрать )))
Кстати, для повышения познаний, как сделать чтобы к личному трекеру выводилось еще и имя пользователя?
Ну... Я просто в шоке. В 5ке для этого нужно было отдельный модуль ставить!..
Чего ж вы раньше не сказали.
Такую конструкцию можно и в меню добавить!
Приятно, что пригодилось... Я бы и раньше написал, да вроде не спрашивали...
Сделал. Проверяйте!
Вот так лучше!
Только почему он ведет на какой-то другой трекер (http://drupal.ru/tracker/my)?
Хотя все тот же...
Ну наконец-то, свершилось.
А в шестерке динамическое меню определить нельзя что ли?
В пятерке можно было. По передаваемому в функцию hook_menu() параметру $may_cache.
Че то я в Д6 такого параметра не увидел.
Ааа... что делать, как дальше жить?
У меня почти для всех моих модулей под D5 использовалось $may_cache = false;
Для шестерки в этом случае надо использовать hook_init подробнее здесь
Аллах акбар
Подскажите, пожалуйста, как это реализовать на своём сайте — я понимаю, каким образом посмотреть персональный трекер пользователя в его профиле, но никак не могу сообразить, как сделать «динамический пункт» вроде tracker/my, чтобы затем прикрутить его к меню сайта.
tracker/my - это плохое решение.
Лучше бы оставили стандартный вид tracker/uid
Чем плохое?
А Вы зайдите по адресу tracker/my в разлогиненном состоянии, тогда узнаете.
Гы... а как мне туда войти, у меня в меню нет такой ссылки...
А Вы руками введите
Если состояние мое "разлогиненное" - то для чего мне чтото вводить руками?
На прочих сайтах - тоже вводить руками, в надежде подобрать существующий URL?
А стандартный никто не отменял, только он user/uid/track
tracker/uid тоже работает.
Я ввел руками drupal.ru/tracker/my в разлогиненом состоянии - и что?
Вижу: "Зарегистрируйтесь, чтобы получить доступ к этой странице."
Что в этом плохого или я что-то не так сделал.
К тому же этот путь не задавался вручную. Видимо он системный...
«Вижу: "Зарегистрируйтесь, чтобы получить доступ к этой странице."»
Ну так Вы и сами ответили на свой вопрос.
Что Вы видите? «Вижу: "Зарегистрируйтесь, чтобы получить доступ к этой странице."»
А что Вы должны видеть вместо этого?
Если трудно догадаться, то подсказываю: свои последние сообщения
Уху, путь системный.
Тоже не понял заявлений о том, что /tracker/my не хорошая тема.
Я одного понять не могу, почему «системный» путь /tracker/my не работает на моей системе? У меня функционирует только /tracker/UID. На его основе я, конечно, могу сделать пункт меню через свой модуль, но пользователи тогда не смогут давать друг другу подсказки об удобстве использования личным трекером — потому что пользователь с UID равным пяти, получив ссылку на /tracker/3, увидит лишь сообщение об ошибке и вряд ли сообразит, что ему нужно подставить вместо тройки идентификатор своего пользователя.
А зачем я должен это видеть в разлогиненом состоянии?
Какой прок, от этого.
Проку может быть и не много, но когда кликаешь на закладку "новое на Друпал.ру" в закладках браузера и тебе предлагают зарегистрироваться, то неприятно.
Мелочь, конечно, но неприятно.
Тогда вопрос в том, откуда закладка появилась
Многие функции по просмотрю новых записей вообще только для авторизованных пользователей доступны, как то пометка о новых сообщениях в теме.
Так что не вижу проблемы в принципе. Неудобство только в одном - если заглядываешь с разных компьютеров. У меня такое бывает, но енто надо решать средствами браузера. Например, использовать портабл версию.
Я понял проблему. Мне кажется, что нужно грамотно решить проблему с куками для хранения сессии и логинить пользователя, если он открыл сайт через закладку и есть куки.
Это решит проблему с требованием логиниться.
Я приношу свои извинения гуру Друпала за свою надоедливость, но не могли бы вы всё же ответить на мой, возможно, глупый вопрос — как сделать ссылку на пользовательский трекер «динамической» — я хочу, чтобы при запросе www.example.net/tracker/my пользователь получал свой трекер. На моём сайте при запросе этого адреса вылезает сообщение о том, что страница не найдена. При этом трекер включен, и пользователь может посмотреть свой трекер, заглянув по адресу вида www.example.net/tracker/UID или www.example.net/user/UID/track. Я, к сожалению, сам найти решения не сумел.
Спасибо.
А оно Вам надо?
Если ищете себе заморочек, то могу предположить, что копать нужно в сторону hook_menu()
пишете свой модуль, например mymodule.
В нем пишете (это для шестого друпала)
<?php
mymodule_menu() {
$items = array();
global $user;
$items['tracker/my'] = array(
'title' => 'My recent posts',
'access callback' => '_tracker_myrecent_access',
'access arguments' => $user,
'page callback' => 'tracker_page',
'page arguments' => $user,
'type' => MENU_NORMAL_ITEM,
'file' => 'tracker.pages.inc',
);
return $items;
}
?>
Посмотрите строение tracker_menu() http://api.drupal.org/api/function/tracker_menu/6
Спасибо!
Значит всё же придётся писать отдельно. ОК. Я спрашивал из-за того, что VladSavitsky в ответ на совет поставить просто ссылку написал следующее:
Вот я и заинтересовался, неужели такая «динамическая» ссылка уже есть, но я просто найти её не могу. Сам-то я уже даже почти понимал, что именно нужно написать в модуле, чтобы свой пункт меню сделать.
Это, скорее даже не мне, а моим пользователям, как я писал выше, если они захотят обменяться полезным знанием о том, как посмотреть свой трекер, они могут просто не разобраться в том, почему у одних работает правильно ссылка вида /tracker/UID, а у других нет.
Не могу сообразить, в чём ошибка... Использую функцию такого вида
global $user;
$items['tracker/my'] = array(
'title' => 'Recent posts',
'access callback' => TRUE,
'page callback' => 'tracker_page',
'page arguments' => array($user, TRUE),
'type' => MENU_NORMAL_ITEM,
'file' => 'tracker.pages.inc',
'file path' => drupal_get_path('module', 'tracker'),
);
return $items;
}
Всё работает, не выдавая ошибок, но результат не совсем тот, которого я жду. Есть такое ощущение, что в строке «'page arguments' => array($user, TRUE),» функции tracker_page() в качестве первого параметра передаются рутовые данные. Обратил внимание исключительно за счёт того, что второй параметр включает отображение заголовка, в качестве которого используется имя пользователя. Каждый из пользователей в итоге видит трекер первого пользователя, а не свой. tracker_page, согласно документации, на входе получает следующие параметры: «tracker_page($account = NULL, $set_title = FALSE)». Быть может я просто не тем его кормлю?
Подскажите, пожалуйста, в чём может быть моя ошибка.
Да нет, должно работать. Только у вас анонимы что видят? Последние сообщения анонимных пользователей?
Чтоб было как здесь нужно писать:
<?php
'access callback' => '_tracker_myrecent_access',
'access arguments' => array($user),
'page callback' => 'tracker_page',
'page arguments' => array($user),
?>
Анонимы у меня сейчас видят то же, что и все остальные — трекер рута. Я включил такой аксесс исключительно для того, чтобы убедиться в том, что и анонимы видят тот же трекер первого пользователя...
Гм. Любопытно... Понимаю, что ошибка в какой-то мелочи, потому что всё, вроде как, правильно, но мелочь ускользает от моего внимания. Почему вообще global $user может возвращать рута, когда осуществляется вход под обычным пользователем?
PS В модуле больше никаких действий не производится.
Попробуй распечатать все определенные переменные в файле модуля
<?php
var_dump(get_defined_vars());
?>
И посмотри чего там вообще есть.
Спасибо. А получилось весьма примечательно — во всех случаях (и для анонимов, и для зарегистрированных пользователей) массив пуст! Зато рут прекрасно видит
["user"]=>
&object(stdClass)#3 (24) {
["uid"]=>
string(1) "1"
и т.д.
Сорри. Дубльпост.
присоединюсь к ingumsky@drupal.org
У меня тоже не работает трэкер/май
Правда установлен трэкер2 и трэкер ядра отключен - может из-за этого.
Кто знает трэкер2 поддерживает такую ссылку?