Pull to refresh

Comments 55

Спасибо!
Хотел реализовать что-то похожее, да все руки не доходили.
D 6.x
Добавил к статье, спасибо за замечание.
Кажется я не туда пишу. :) Это же друпаловкий журнал…
Скорее, автор ошибся темой — проблема не чисто друпаловская, а юзабилити. Решение для Друпала — частный случай более правильной реализации интерфейса.
Вам отдельное спасибо за решение для э… более другой :) технологии.
Только xsl:output наверное все же не html а xml, а то валидатор ругаться будет…
Не в тему но кто-то знает примерные сроки семерки?
В Code Freeze уже вошли. Выпустят когда доделают, как всегда :) Точная дата пока неизвестна.
говорят, что не раньше начала следующего года выйдет релиз.
Во-первых, ссылка на последнюю страницу стала бы более информативна и занимала бы меньше места, если её заменить на номер последней страницы [28].


А зачем вам делать ссылку на последнюю страницу меньше?
Есть такой закон Фитса, он говорит о том, что чем больше и ближе цель, тем быстрее и проще по ней кликнуть мышкой.

Т.е. то, что в Друпале самые часто нажимаемые кнопки постраничной навигации сделали больще — забота о пользователях.
Возможно, вы правы, предполагая, что ссылки «На первую» и «На последнюю» страницы являются частонажимаемыми. Хотя, если бы вы привели heatmap, это бы добавило веса вашим словам.

Лично для меня гораздо важнее видеть, сколько страниц всего мне предстоит пролистать. Ну а любовь к компактности — это уже исключительно лично ;)
как вариант решения — сделать для первой и последней страницы отдельный класс, который, напрммер, выделял бы эти страницы большим размером фоновой плашки, плюс, как вариант — сделать светленький фон у них, даже когда они — просто ссылки
Есть тут небольшой минус — если страниц будет очень много (порядка сотен), то надо будет очень много кликать до страницы находящейся где-нибудь в середине списка.

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

Знаю, что идея не нова, но порой этого часто не хватает
Для того, о чем вы говорите есть специальный модуль. Называется как-то вроде goto или типа того. На drupal.ru как-то проскакивал анонс модуля на главной.
Если вам зачем-то понадобилось попасть на 30-ю страницу из 200 — значит с юзабилити уже проблема. Быстрый переход её не решит, а лишь облегчит мучения ;-)
Спорно. Порой на крупных ресурсах скапливается достаточно много информации (та же лента.ру или наш любимый Хабр) и тут уж никак не избавится от сотен (а порой и тысяч) страниц.
Ну, во первых, я бы не стал так категорично утверждать что «никак».
А во вторых, зачем может понадобиться переход именно не 30-ю страницу? На вас снизошло озарение и вы поняли что нужный материал именно на 30-й, а не на 29-й и не на 31-й странице? :)
Я, например, дальше 4 страницы на хабре не захожу… И то уже 10*4 = 40 топиков очень сильно загружают голову. Ведь человека в основном интересует не все подряд, а какая-то определенная тема (наука, спорт, программирование, ...). ИМХО
UFO just landed and posted this here
Полностью с вами согласен. Но это уже отдельная история )
Ну здесь тоже есть проблема. На первой (последней, в вашем примере 22й) странице ведь всегда должно быть 10 записей? Тогда все остальные будут скакать со страницы на страницу. Так что это не является решением проблемы.

Например было 15 записей, записи с 5-15 были на странице №2. Стало 20 записей, на странице №2 теперь записи 10-20, а 5-15 перекочевали на страницу №1. Потом стало 25 и они обратно перелезли на страницу №2.

Как от этого избавиться, может кто знает?)
О, я как раз тоже только что кастомизировал пейджер друпала. Правда я делал из него то, что нарисовал мне дизайнер. Из принципиальных отличий там была ссылка «показать все», а реализована это ссылка через дополнительный display для view, в котором неограниченно кол-во объектов на страницу.
Мне кажется это вопрос юзабилити — _зачем_ пользователь пролистывает 20 страниц?
Можно ли достичь той же цели, вообще не пролистывая страницы?
А если пользователь ничего не ишет? А просто просматривает, например, список статей?
30 страниц?

Но даже в таком случае есть улучшения.
Например, можно использовать «бесконечный скролл». Тогда взгляд не перескакивает, и контекст не теряется.
Или «More» в стиле twitter, с теми же достоинствами.
матерь божья!!! афигеть сколько коду нада исписать чтобы сделать такую простоую весчь в такой простой ЦМС — абалдеть я стал ненавить друмал еще больше!
Половина листинга — комментарии, половина — js код для удобной навигации с клавиатуры. Осталось всего ничего. Можете снова любить друпал :)
Привидите пример, пожалуйста, как это реализовано в других системах. Тогда можно будет говорить о простоте. Если разобратся, не так уж все и просто в этой «весчи»…
ну как я это пишу в своих системах, где используются Quicky (он аналог Смарти)
{include file=«components/paging.tpl» count=$totalCount pageNum=$page}
шаблон параметризуем:
{*
параметры:
count — общее число записей
pageSize — размер страницы
pageNum — текущая страница
url — адрес,
если адрес содержит %d то туда подставляется номер страницы, иначе используется параметр page
param — параметр страницы (по дефолту «page»)
show — количество показываемых страниц в навигаторе, по умолчанию 9
scroll_postfix — параметр id элемента к которому прокрутить страницу
*}

я что хочу сказать главным образом — что задача вывода целиком решается а рамках шаблонизатора и меня удивило что тут есть php код в чистом виде
хотя вообще мне вот еще что не очень понятно — почему пайджингом занимается не только шаблон но и PHP код, ведь шаблону нужно дать номер текущей страницы, сколько всего постов и сколько постов на странице а остальное он должен считать сам. или theme_pager() это какой-то метод его внутреннего своего шаблонизатора? тоесть там шаблоны на PHP пишутся? а как разделяются области видимости переменных?
Drupal генерирует HTML-код стандарнтых элементов интерфейса в т.н. функциях темизации. Полный список можете найти здесь. Шаблоны — это немного другое. Шаблон можно определить для страницы, для блока, для куска страницы. А относительно мелкие атомарные элементы генерируются функциями theme_…
И да, по умолчанию Drupal использует собственный движок шаблонов PHP Template. Хотя можно прицепить любой другой, Smarty тот же, например.
хорошая статья, если бы увидел ее пару месяцев назад то реализовал бы =)
у себя проблему решил наглым читом:
заменил перевод «первая» «предыдущая» «следующая» «последняя» на ‹‹‹ « » ›››
Вообще-то когда мы на второй странице то ссылок на первую 3 — 1, предыдущая, первая. А так мне ваш вариант решения нравится. Красивая ленейка получилась. Для большой линейки неплохо бы еще промежуточные точки включать т.е. находясь на 150 странице из 300, что бы были ссылки не только на 1 и 300, но и на 100 и 200 например.
Попасть на определенную страницу (или «в середину»), можно, узнав общее их число и набирая номер страницы в строке браузера, ибо друпал тут не мудрствует лукаво и предоставляет сервис вида /some-page-url?page=23
Попасть на определенную страницу (или «в середину»), можно, узнав общее их число и набирая номер страницы в строке браузера, ибо друпал тут не мудрствует лукаво и предоставляет сервис вида /some-page-url?page=23
может быть вы знаете нормальный pager для Drupal 6, а то ссылки вида ?page=0,1 смотрятся очень коряво

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

PS: нужны ссылки вида /uri/page/2, ну или хотя бы ?page=2, а то запятая только все портит
где вы там запятую нашли?
забыл сказать, я имел в виду модуль pager, который разбивает большую страницу (этот модуль можно найти на drupal.org)

может быть вы знаете решение, как убрать там запятую из урла?
вы бы хоть указали, у кого js брали ;)
Я никого не хочу обидеть, но это ужасно! Неужели так еще пишут код? Я конечно не видел кода друпала, но если он такой, то даже смотреть не хочу. MVC? Отделение бизнес логики от представления? JS в переменной!!! Мне очень грустно товарищи, на дворе уже почти 2010, а пишут всё так же…
На счет js согласен — вынес в отдельный файл. А остальные ваши замечания не у дел.
Я бы выделил цифры под активной страницей более ярче, черный цвет был бы в самый раз!
UFO just landed and posted this here
Могли бы пояснить, что именно и как ломается?
А насчет non-intrusive js, если вы знаете, как сделать перелистывание страниц клавишами при отключенном js — чего же вы ждете? Поделитесь с нами!
Этот кусок JS в моем проекте вынесен в общую библиотеку. Кому это нужно — без труда проделает это самостоятельно
может мне кто-то объяснить, зачем надо посылать пользователя на самую последнюю страницу?
тоесть зачем там ссылка на 36 страницу?
Чтобы узнать, откуда началась жизнь ))) Мне, например, иногда интересно посмотреть, какие были первые посты…
Вопрос по юзабилити.

А как переходить, например, со страницы 32 на страницу 15?
А зачем?

Есть отдельный модуль, который добавляет форму для перехода на конкретную страницу. Зачем забивать дефолтный код лишними елементами?
Не буду спорить по поводу того, как должны выглядеть ссылки в пейджере. Хочу только спросить, а drupal_add_js использовать религия не позволяет? Ведь потом люди по таким примерам будут учиться писать под друпал…
Во благо будущих поколений переписал js и вынес в отдельный файл.

Кстати, в PHP-коде был небольшой глюк, из-за которого дублировались крайние страницы при их небольшом количестве.
Теперь все исправлено. Если кто-то успел скопировать код до момента публикации этого комментария — рекомендую обновить.
Спасибо, давно уже искал что-то подобное.
По мне так Drupal.behaviors вместо этого что здесь написано намного удобнее.
По поводу юзабилити пейджера хочу добавить то, что правильнее было бы сделать обратный порядок, чтобы ноды не скакали с 1й страницы на 2ю и так далее. Чтобы они оставались на определённых страницах, потому что люди с поисковиков переходят по ссылкам на страницы пейджера и найти там то, что хотели не могут — это не есть хорошо.

Я пробовал развернуть пейджер, но проблема в том, что тогда первая страница не всегда заполнена — не всегда там будет все 10 анонсов.
За решение — спасибо. Буду использовать на своих сайтах.

Поправить бы ещё врождённый косяк с нумерацией страниц когда 2 — page1 :(

Sign up to leave a comment.

Articles