Сортировка нод

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

Аватар пользователя genrih genrih 7 апреля 2013 в 22:49

Подскажите пожалуйста, каким образом можно отсортировать ноды на странице таксономии по возрастанию, то есть чтобы новые материалы добавлялись в конец.
С помощью views вроде бы как просто было бы сделать, но проблема в том, как передать через url - term-id?
В url термина используется не его имя, а алиас, тоесть контекстные фильтры из views не могут конвертировать alias->term-id.
Помогите пожалуйста, может есть какое то просто и очевидное решение, и не стоит лезть в дебри views.
P.S. и возможно ли сделать сортировку не во всем словаре, а только в определенном термине и его дочерних терминах?

Комментарии

Аватар пользователя CSoft CSoft 7 апреля 2013 в 23:30

"genrih" wrote:
Подскажите пожалуйста, каким образом можно отсортировать ноды на странице таксономии по возрастанию, то есть чтобы новые материалы добавлялись в конец.

Если без views: можно переопределить с помощью hook_menu_alter параметр page callback для пути taxonomy/term/%taxonomy_term, и там, в своей копии функции taxonomy_term_page, можете добавить в taxonomy_select_nodes условие сортировки.

Если через views:

"genrih" wrote:
В url термина используется не его имя, а алиас, тоесть контекстные фильтры из views не могут конвертировать alias->term-id.

Неправильно делаете. Во-первых, в контекстных фильтрах есть возможность подставить значение по умолчанию, а там выбрать tid термина. Во-вторых, в стандартных вьюсах посмотрите "Taxonomy term" - уже всё придумано до нас.

"genrih" wrote:
P.S. и возможно ли сделать сортировку не во всем словаре, а только в определенном термине и его дочерних терминах?

Возможно.

Аватар пользователя genrih genrih 7 апреля 2013 в 23:45

CSoft wrote:
"genrih" wrote:
Подскажите пожалуйста, каким образом можно отсортировать ноды на странице таксономии по возрастанию, то есть чтобы новые материалы добавлялись в конец.

Если без views: можно переопределить с помощью hook_menu_alter параметр page callback для пути taxonomy/term/%taxonomy_term, и там, в своей копии функции taxonomy_term_page, можете добавить в taxonomy_select_nodes условие сортировки.

Если через views:

"genrih" wrote:
В url термина используется не его имя, а алиас, тоесть контекстные фильтры из views не могут конвертировать alias->term-id.

Неправильно делаете. Во-первых, в контекстных фильтрах есть возможность подставить значение по умолчанию, а там выбрать tid термина. Во-вторых, в стандартных вьюсах посмотрите "Taxonomy term" - уже всё придумано до нас.

"genrih" wrote:
P.S. и возможно ли сделать сортировку не во всем словаре, а только в определенном термине и его дочерних терминах?

Возможно.


Спасибо за ответ, но проблема в том что я не знаю заранее term-id. Идея была такова:
сделать во views страницу, при входе на которую показываются все ноды из родительского термина и дочерних - example.ru/partners.
При входе на example.ru/partners/obrazovanie - уже показываются все ноды из термина "obrazovanie".
учитывая то что я не знаю сколько там может быть терминов, теоретически - очень много, то нужно создать одну страницу, которая как бы подменяла страницы терминов таксономии, т.е. я хотел делать так: во views - адрес страницы /partners/% и думал что при входе на example.ru/partners/obrazovanie - "obrazovanie" будет передано в контекстные фильтры, после чего будет получен id термина и выведены ноды. Но, если передавать в путь - имя термина - все работает (example.ru/partners/Образование), но имя то: "Образование", а в фильтры передается алиас, и естественно термина с таким именем не находит..
Со стандартным taxonomy term - то же самое.. название термина отлавливает, алиас нет..(

Попробую с hook_menu_alter но все же хотелось бы разобраться с views'ом.

Аватар пользователя CSoft CSoft 7 апреля 2013 в 23:52

"genrih" wrote:
Спасибо за ответ, но проблема в том что я не знаю заранее term-id

Ещё раз говорю Вам - не нужно его знать заранее, он сам определяется вьюсом из системного пути. Если, конечно, переопределить страницу термина таксономии. Что-то делаете не так.

"genrih" wrote:
т.е. я хотел делать так: во views - адрес страницы /partners/%

Нет, нужно переопределять путь таксономии, как в стандартной вьюсе, о которой пишу выше.