nodeorder - как показывать для сортировки только материалы текущего языка сайта

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

Комментарии

Аватар пользователя noneart noneart 10 ноября 2015 в 11:49

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

сейчас там в списке находятся ноды двух языков сразу, потому вы видите там дубли

Аватар пользователя roman-yrv roman-yrv 3 июня 2013 в 17:14

Действительно, я посмотрел, оказывается, запросы такого вида "из коробки" - мультиязычности не подлежат.
Так же, как и запросы типа www.site.com/taxonomy/term/* (во всяком случае, я не смог это настроить под мультиязычность)

Я думаю, если нужно для сортировки и вывода нод принципиально использовать nodeorder и ни в коем случае views + nodequeue или draggableviews, то остается только такое решение:

Пишется свой модуль.
В нём прописывается хук hook_menu_alter, в котором будет перехватываться Ваш адрес (taxonomy/term/*) или другой, нужно смотреть в модуле nodeorder, какой адрес используется.
Делаем так, чтобы в перехваченном хуке в поле 'page callback' была ссылка на Вашу функцию, которая делает то же самое, что делала родная функция, только при формировании списка нод, связанных с данным термом, учитывала бы еще и язык ноды - то есть, можно родную функцию скопировать к себе в модуль, назвать её по-своему и подправить её код для поддержки мультиязычности.

Аватар пользователя noneart noneart 3 июня 2013 в 18:14

даа.. вообще такая мысль посетила, что в таких случаях не помешалa бы какая-нибудь переключалка ("все материалы", "только русский", "только английский", "только...", ...). и чтобы это было сделано на уровне ядра, ну или хотя бы на уровне модуля i18n. ведь вся мультиязычность и реализована на этих уровнях

"roman-yrv" wrote:
draggableviews

к сожалению он работает только в формате вывода HTML-table.. а у меня используется HTML-list - и это принципиально... но ведь мне никто не мешает сделать для сортировки отдельную страницу... только надо подумать как ето замутить поудобней... а тогда такой вопрос. после того как я отсортировал материалы, то я их смогу в этом отсортированном виде вывести через вьюху в каком-то другом формате (unformated list и т.п.)?

"roman-yrv" wrote:
views + nodequeue

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

Аватар пользователя roman-yrv roman-yrv 3 июня 2013 в 18:27

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

А именно, в модуле nodeorder есть функция nodeorder_taxonomy_term_page, которая как раз и формирует и выводит список нод, связанных с термом и отсортированных по весу, заданному в nodeorder.

А конкретно получение списка нод задается вот этим кодом

  if ($nids = taxonomy_select_nodes($term->tid, TRUE, variable_get('default_nodes_main', 10),
    array('t.weight' => 'ASC'))) {

Подправьте его, чтобы получался не просто список нод, а список нод, у которых язык либо текущий, либо неопределён.
Опять же, повторяю, это решение - неправильное с точки зрения Drupal.

P.S. Либо второе решение, которое, возможно (!), будет работать, если перевод делать через Entity Translation. В тот случае перевод будет осуществляться не созданием новой ноды на другом языке, а добавлением к текущей ноде набора полей, язык которых - английский.