Быстрый переход к личному трекеру на друпал.ру

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

Аватар пользователя VladSavitsky VladSavitsky 30 ноября 2008 в 0:42

Давным-давно уже просили такое сделать, чтобы можно было быстро переходить к личному трекеру, но тогда задача стояла добавить пункт в меню навигация...
Я попробовал и у меня не получилось. В конце-концов нашел такое простое и примитивное решение.

Создал блок и в нем код, который выводит всего одну ссылку:

<?php
global $user;
echo l('Личный трекер', 'user/'.$user->uid.'/track');
?>

Чтобы проверить работу - нужно найти блок "Личный трекер" в левой колонке...
И почему я раньше не сообразил как это сделать... Аж стыдно как-то!...

Комментарии

Аватар пользователя EllECTRONC EllECTRONC 30 ноября 2008 в 12:47

Зачем он там внизу-у! Вменю положить под «Мои учетные данные» и назвать лучше «Мой трекер», а то личный что-то не звучит, хотя по-моему вообще уже поздно...

Аватар пользователя Dimanic Dimanic 30 ноября 2008 в 14:27

Кстати, для повышения познаний, как сделать чтобы к личному трекеру выводилось еще и имя пользователя?

Аватар пользователя VladSavitsky VladSavitsky 30 ноября 2008 в 15:43

"<a href="mailto:Fanny@drupal.org">Fanny@drupal.org</a>" wrote:
Личный трекер

Ну... Я просто в шоке. В 5ке для этого нужно было отдельный модуль ставить!..
Чего ж вы раньше не сказали.
Такую конструкцию можно и в меню добавить!

Аватар пользователя Fanny@drupal.org Fanny@drupal.org 30 ноября 2008 в 17:24

VladSavitsky wrote:

Ну... Я просто в шоке. В 5ке для этого нужно было отдельный модуль ставить!..
Чего ж вы раньше не сказали.
Такую конструкцию можно и в меню добавить!

Приятно, что пригодилось... Я бы и раньше написал, да вроде не спрашивали... Smile

Аватар пользователя seaji seaji 30 ноября 2008 в 21:08

А в шестерке динамическое меню определить нельзя что ли?
В пятерке можно было. По передаваемому в функцию hook_menu() параметру $may_cache.
Че то я в Д6 такого параметра не увидел.
Ааа... что делать, как дальше жить?
У меня почти для всех моих модулей под D5 использовалось $may_cache = false;

Аватар пользователя pvb-d pvb-d 1 декабря 2008 в 11:58

seaji wrote:

У меня почти для всех моих модулей под D5 использовалось $may_cache = false;

Для шестерки в этом случае надо использовать hook_init подробнее здесь

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 14 января 2009 в 15:58

Подскажите, пожалуйста, как это реализовать на своём сайте — я понимаю, каким образом посмотреть персональный трекер пользователя в его профиле, но никак не могу сообразить, как сделать «динамический пункт» вроде tracker/my, чтобы затем прикрутить его к меню сайта.

Аватар пользователя Fanny@drupal.org Fanny@drupal.org 16 января 2009 в 23:41

Если состояние мое "разлогиненное" - то для чего мне чтото вводить руками?

На прочих сайтах - тоже вводить руками, в надежде подобрать существующий URL? Smile

Аватар пользователя VladSavitsky VladSavitsky 18 января 2009 в 10:05

Я ввел руками drupal.ru/tracker/my в разлогиненом состоянии - и что?
Вижу: "Зарегистрируйтесь, чтобы получить доступ к этой странице."
Что в этом плохого или я что-то не так сделал.
К тому же этот путь не задавался вручную. Видимо он системный...

Аватар пользователя seaji seaji 18 января 2009 в 14:59

«Вижу: "Зарегистрируйтесь, чтобы получить доступ к этой странице."»
Ну так Вы и сами ответили на свой вопрос.
Что Вы видите? «Вижу: "Зарегистрируйтесь, чтобы получить доступ к этой странице."»
А что Вы должны видеть вместо этого?
Если трудно догадаться, то подсказываю: свои последние сообщения
Smile

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 18 января 2009 в 14:41

Я одного понять не могу, почему «системный» путь /tracker/my не работает на моей системе? У меня функционирует только /tracker/UID. На его основе я, конечно, могу сделать пункт меню через свой модуль, но пользователи тогда не смогут давать друг другу подсказки об удобстве использования личным трекером — потому что пользователь с UID равным пяти, получив ссылку на /tracker/3, увидит лишь сообщение об ошибке и вряд ли сообразит, что ему нужно подставить вместо тройки идентификатор своего пользователя.

Аватар пользователя WiseMan WiseMan 18 января 2009 в 19:04

"seaji" wrote:
Если трудно догадаться, то подсказываю: свои последние сообщения

А зачем я должен это видеть в разлогиненом состоянии? Wink

Какой прок, от этого.

Аватар пользователя seaji seaji 18 января 2009 в 19:56

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

Аватар пользователя WiseMan WiseMan 18 января 2009 в 22:31

Тогда вопрос в том, откуда закладка появилась Wink

Многие функции по просмотрю новых записей вообще только для авторизованных пользователей доступны, как то пометка о новых сообщениях в теме.

Так что не вижу проблемы в принципе. Неудобство только в одном - если заглядываешь с разных компьютеров. У меня такое бывает, но енто надо решать средствами браузера. Например, использовать портабл версию.

Аватар пользователя VladSavitsky VladSavitsky 19 января 2009 в 0:32

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

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 19 января 2009 в 1:56

Я приношу свои извинения гуру Друпала за свою надоедливость, но не могли бы вы всё же ответить на мой, возможно, глупый вопрос — как сделать ссылку на пользовательский трекер «динамической» — я хочу, чтобы при запросе www.example.net/tracker/my пользователь получал свой трекер. На моём сайте при запросе этого адреса вылезает сообщение о том, что страница не найдена. При этом трекер включен, и пользователь может посмотреть свой трекер, заглянув по адресу вида www.example.net/tracker/UID или www.example.net/user/UID/track. Я, к сожалению, сам найти решения не сумел.
Спасибо.

Аватар пользователя seaji seaji 19 января 2009 в 11:17

А оно Вам надо?
Если ищете себе заморочек, то могу предположить, что копать нужно в сторону 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

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 19 января 2009 в 12:47

Спасибо!

Значит всё же придётся писать отдельно. ОК. Я спрашивал из-за того, что VladSavitsky в ответ на совет поставить просто ссылку написал следующее:

"VladSavitsky" wrote:
Ну... Я просто в шоке. В 5ке для этого нужно было отдельный модуль ставить!..
Чего ж вы раньше не сказали.
Такую конструкцию можно и в меню добавить!

Вот я и заинтересовался, неужели такая «динамическая» ссылка уже есть, но я просто найти её не могу. Сам-то я уже даже почти понимал, что именно нужно написать в модуле, чтобы свой пункт меню сделать.

Это, скорее даже не мне, а моим пользователям, как я писал выше, если они захотят обменяться полезным знанием о том, как посмотреть свой трекер, они могут просто не разобраться в том, почему у одних работает правильно ссылка вида /tracker/UID, а у других нет.

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 19 января 2009 в 22:40

Не могу сообразить, в чём ошибка... Использую функцию такого вида

function mymodule_menu() {
  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)». Быть может я просто не тем его кормлю?
Подскажите, пожалуйста, в чём может быть моя ошибка.

Аватар пользователя seaji seaji 20 января 2009 в 12:35

Да нет, должно работать. Только у вас анонимы что видят? Последние сообщения анонимных пользователей?
Чтоб было как здесь нужно писать:
<?php
'access callback' => '_tracker_myrecent_access',
'access arguments' => array($user),
'page callback' => 'tracker_page',
'page arguments' => array($user),
?>

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 20 января 2009 в 17:18

Анонимы у меня сейчас видят то же, что и все остальные — трекер рута. Я включил такой аксесс исключительно для того, чтобы убедиться в том, что и анонимы видят тот же трекер первого пользователя...

Гм. Любопытно... Понимаю, что ошибка в какой-то мелочи, потому что всё, вроде как, правильно, но мелочь ускользает от моего внимания. Почему вообще global $user может возвращать рута, когда осуществляется вход под обычным пользователем?

PS В модуле больше никаких действий не производится.

Аватар пользователя seaji seaji 20 января 2009 в 17:34

Попробуй распечатать все определенные переменные в файле модуля
<?php
var_dump(get_defined_vars());
?>
И посмотри чего там вообще есть. Smile

Аватар пользователя ingumsky@drupal.org ingumsky@drupal.org 20 января 2009 в 18:12

Спасибо. А получилось весьма примечательно — во всех случаях (и для анонимов, и для зарегистрированных пользователей) массив пуст! Зато рут прекрасно видит

array(1) {
  ["user"]=>
  &object(stdClass)#3 (24) {
    ["uid"]=>
    string(1) "1"

и т.д.

Аватар пользователя Bar Bar 17 марта 2009 в 23:44

присоединюсь к ingumsky@drupal.org

У меня тоже не работает трэкер/май

Правда установлен трэкер2 и трэкер ядра отключен - может из-за этого.
Кто знает трэкер2 поддерживает такую ссылку?