Решаема ли такая задача через Views 3

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

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 19:33

Необходимо на странице вывести в табличной форме список последнего действия каждого пользователя.

_Никнейм_ __Просматриваемая страница_ ____Дата_________
--------------------------------------------------------------------------------------------------------
_Иванов__ | __________ссылка_______ | время тому назад

Комментарии

Аватар пользователя sg85 sg85 22 сентября 2012 в 20:33

Можно любую фигню выводить, причем в любом вьювсе, надо только таблицу описать. И если именно эти данные не собираются модулем статистики(не помню в каком виде оно там) то можно сделать свою таблицу, и добавить счетчик, т.е. сделать небольшой модуль. Однако, как мне кажется, задача далеко не индивидуальная, и при этом тривиальная(такой модуль можно написать минут за 10), так что должно быть готовое решение.

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 21:13

за пару лет тут так и не дали решения. хочется мне знать кто из 20 юзеров где в данную секунду находится... или находился... в промежуток некий.

Аватар пользователя sg85 sg85 22 сентября 2012 в 21:23

В самом худшем случае:
Создаете таблицу с полями uid, URL, date(для примера)
Через хук при просмотре ноды заполняете ее
Создаете описание таблицы для вьювс
Через крон ограничиваете её размер
Profit

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 21:37

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

допустим гостей я отфильтрую и выбиру промежуток статистики за последние 15 минут... действия...

но как от одного юзера зять последнее его действие в этот промежуток???

Аватар пользователя sg85 sg85 22 сентября 2012 в 21:44

А вообще есть смысл заглянуть в таблицу статистики. И если нужно видеть вообще все что делают юзеры то можно писать в базу на прямую, т.е. без хуков

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 22 сентября 2012 в 21:44

"sg85" wrote:

Через хук при просмотре ноды заполняете ее

Она уже есть, history называется.
Но инферне ж надо будет обязательно и ноды и вьюхи, и какой коммент читает

Аватар пользователя sg85 sg85 22 сентября 2012 в 21:48

про 15 минут, там везде дата в формате UTC,(кроме модуля date) если вьювс не может выводить именно за 15 минут, создайте свой хендлер для фильтров

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 21:50

Виктор, мне желательно исключая все админ лазанья.

Пока что вопроса два.

как выводить только последнее действие

и как отфильтровать все страницы что идут после /admin/*

Аватар пользователя sg85 sg85 22 сентября 2012 в 21:52

Ну если нужно все, то запись в базу сделать прямо в теле модуля без хуков, однако в этом случае q возможно будет не обработан, т.е. Такую возможность стоит учесть

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 21:55

"RxB" wrote:
Но инферне ж надо будет обязательно и ноды и вьюхи, и какой коммент читает

не мне если взаправду.

страницы вьюхи, страницы нод, страницы профиля

как минимум.

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 21:56

"sg85" wrote:
Про "последнее действие" не понял. arg()

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

Аватар пользователя sg85 sg85 22 сентября 2012 в 21:58

А нет, если q не обработан то arg использовать нельзя ибо будет давать неверные аргументы остальным модулям

Аватар пользователя sg85 sg85 22 сентября 2012 в 22:06

Впринципе любую инфу можно также запихать в эту таблицу, к примеру создание либо удаление материала, правда этот учет ведется собакой, но это не совсем удобно

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 22:15

группировка по юзеру сгрупирует все его страницы лишь, а нужно вывести одну единственную последнюю страницу которую он посетил...

Аватар пользователя sg85 sg85 22 сентября 2012 в 22:33

Это называется сортировкой по пользователю, вам же нужна именно группировка, оно же group by в SQL и уникальность во вьювс с desc сортировкой по времени. т.е. Что то типа select url from table sort by datetime desc group by uid, только порядок не помню, толи группировка после сортировки толи наоборот, вот из той конкретной таблицы получите список последних url всех пользователей в виде 1 url per uid, т.е. Вьюха должна построить аналогичный запрос

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 22:40

отфильтровал все урл где admin встречается.

вы наверное об агрегации говрите - включить её? - в 7 друпале вроде это агрегацией полей называется...

Аватар пользователя sg85 sg85 22 сентября 2012 в 22:51

Видимо про нее, я уже 3й месяц в "отпуске"(с удаленной поддержкой 6 ветки, потому её до сих пор помню) на дв, пью пиво, брожу по лесам, ловлю крабов, занимаюсь прочим непотребством(женщины тут как на подбор), а вы мне тут что то про вьювс, да еще и про 3 это самое...

Аватар пользователя iNFerNo iNFerNo 22 сентября 2012 в 23:04

но она не помагает или я как то не так её применяю.

отфильтровал все. осталась последняя задача - вывести только последнее посещенную страницу для каждого пользователя. за последние 10 минут.

лучше конечно выводить просто последнее посещенная страница за все время нахождения на сайте.
но это проблематично ибо хистори на 3 дня у меня настроено потом удаляется.

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