Несколько аргументов views. Как выводить и формировать ссылки?

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

Аватар пользователя sashken sashken 25 февраля 2013 в 13:23

Во views можно использовать несколько аргументов, например - category/%/%

У меня есть два словаря. Первый - категории, второй - типы (свойства) объектов. Соответственно в views два аргумента - термины первого и второго словаря.

Как сформировать ссылки подобного вида category/%/% (т.е. category/kubik/krasnyj)?

Хочется на странице термина первого словаря (category/kubik) вывести блок с такими ссылками:
category/kubik/krasnyj category/kubik/zelenyj category/kubik/zheltyj и т.д.

Комментарии

Аватар пользователя sashken sashken 25 февраля 2013 в 14:34

Примерно понял что Вы говорите.

Но я даже не могу понять как на странице термина первого словаря (category/kubik) вывести список связанных терминов из второго словаря (т.е. именно тех терминов которые используются в нодах вместе с термином kubik)

Аватар пользователя q2_faith q2_faith 25 февраля 2013 в 17:07

"sashken" wrote:
Но я даже не могу понять как на странице термина первого словаря (category/kubik) вывести список связанных терминов из второго словаря (т.е. именно тех терминов которые используются в нодах вместе с термином kubik)

через вьюшку это можно сделать

Аватар пользователя sashken sashken 25 февраля 2013 в 18:26

Я пробовал, но ничего не получается.
Создал вьюс (термины). Добавил контекстный фильтр - термин таксономии. При подстановке в аргумент ID термина первого словаря, этот же термин выводится в блоке, а нужно чтобы выводились термины из второго словаря.

Аватар пользователя q2_faith q2_faith 25 февраля 2013 в 18:39

"sashken" wrote:
Создал вьюс (термины). Добавил контекстный фильтр - термин таксономии. При подстановке в аргумент ID термина первого словаря, этот же термин выводится в блоке, а нужно чтобы выводились термины из второго словаря.

правильно начали. теперь добавьте relationship к нодам и оттуда вытащите нужные термины

Аватар пользователя sashken sashken 25 февраля 2013 в 19:47

q2_faith, большое спасибо! У меня получилось вывести связанные термины из другого словаря.
Остался вопрос с алиасами терминов. Можно их как-то использовать или получится только так, как советует kervi - category/12/16/67/78

Объясню в чем сложность:
category/kubik/krasnyj - тут kubik - термин первого словаря, krasnyj - термин второго словаря

как задать алиас для терминов второго словаря, ведь термины первого словаря могут меняться, например:

category/kirpich/krasnyj
category/myachik/krasnyj

Аватар пользователя q2_faith q2_faith 25 февраля 2013 в 19:55

"sashken" wrote:

через токены можно сформировать алиасы.
например на странице термина кубик у терминов убираете галочку вести на страницу термина и ставите галочку выводить это поле в виде ссылки, там пишите примерно следующее category/%1/[name] - последний токен посмотрите в доступных для этого поля

Аватар пользователя sashken sashken 25 февраля 2013 в 20:32

Почему то ссылки формируются без транслитерации, такого вида - category/кубик/красный category/мячик/красный

а как потом другим вьюсом (category/%/%), который формирует страницу с материалами, получить термины из этих ссылок - category/мячик/красный ?

Аватар пользователя q2_faith q2_faith 25 февраля 2013 в 22:39

"sashken" wrote:
Почему то ссылки формируются без транслитерации, такого вида - category/кубик/красный category/мячик/красный

вьюс не умеет транслителировать
"sashken" wrote:
а как потом другим вьюсом (category/%/%), который формирует страницу с материалами, получить термины из этих ссылок - category/мячик/красный ?

через аргументы, нужное подставить "сырое" значение из урл

Аватар пользователя djset djset 25 июля 2014 в 9:27

Quote:
"sashken" написал(а):
Почему то ссылки формируются без транслитерации, такого вида - category/кубик/красный category/мячик/красный

Quote:
"q2_faith" написал(а):
вьюс не умеет транслителировать

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

Аватар пользователя sashken sashken 25 июля 2014 в 11:25

Я заказывал модуль. Смысл его работы в том, что у термина создается еще одно поле "Синоним" (field_alias) и при сохранении термина в это поле записывается транслитерация термина. Во аргументах views это поле используется как "сырое" значение из урл - http://tamadec.ru/pozdravleniya/s-dnem-rozhdeniya

Вот функции (вставлять в свой модуль). С помощью первой получаем имя термина на основе "Синоноима". А вторая создает "Синонимы"

<?php/**
 * Return term name by field_alias.
 */
function helper_get_term_by_alias($alias) {
  $query = new EntityFieldQuery();
  $query->entityCondition('entity_type', 'taxonomy_term');
  $query->fieldCondition('field_alias', 'value', $alias);
  $query->range(0, 1);
  $result = $query->execute();
  if ($result) {
    $tid = current($result['taxonomy_term'])->tid;
    return taxonomy_term_load($tid);
  }
}

/**
 * Implements hook_taxonomy_term_presave().
 */
function helper_taxonomy_term_presave($term) {
  if (in_array($term->vocabulary_machine_name, array('ИМЯ_СЛОВАРЯ_1', 'ИМЯ_СЛОВАРЯ_2'))) {
    $term_alias = transliteration_get($term->name);
    if(module_load_include('inc','pathauto','pathauto') !== FALSE) {$term_alias = pathauto_cleanstring($term_alias);}
    $term->field_alias[LANGUAGE_NONE][0]['value'] = $term_alias;
  }
}?>

Аватар пользователя djset djset 25 июля 2014 в 11:36

"sashken" wrote:
Вот функции (вставлять в свой модуль). С помощью первой получаем имя термина на основе "Синоноима". А вторая создает "Синонимы"

то есть мне надо самому создавая модуль с расширением *.modul вставить этот код?
Если да, то как быть или что писать во второй функции во второй строчке где array('ИМЯ_СЛОВАРЯ_1', 'ИМЯ_СЛОВАРЯ_2') что вот тут писать? или так оставить?

дело в том, что у меня один словарь Каталог у которого штук 10 терминов в которых еще по 10 терминов

дело в том, что я еще новичок в друпале поэтому может быть такие туповатые вопросы))

Аватар пользователя djset djset 25 июля 2014 в 12:24

"sashken" wrote:
С одним словарем можно справиться средствами views

нее я на счет адресов , дело в том, что в views стандартными средствами не справиться как раз таки, то есть меня интересует именно то, чем вы интересовались выше, а именно :
Почему то ссылки формируются без транслитерации, такого вида - category/кубик/красный category/мячик/красный
и вам был ответ: вьюс не умеет транслитерировать
ибо когда я создаю views под именем catalog , далее мне нужно будет переходить на страницу термина словаря то есть catalog/armatura и вот чтобы настройки и дубликатов и вообще для простоты действия достаточно указать в качестве аргумента (%) на страницу catalog/% -- синоним системной ссылки термина таксономии, а именно термина по имени Арматура у которого системная ссылка tsxonomy/term/2 , а синоним catalog/armatura
И вот когда я создаю контекстный фильтр, там нету пункта "Синоним термина таксономии" ,а все остальные есть типа "Идентификатор термина! , "Имя термина" и вот кстати ваш вопрос основан на "Имени термина таксономии" который и идет в аргумент таким каким он есть тоесть кирилицей, в моём случае так и пишется catalog/арматура и оно работает, но меня не устраивает такой вид ссылок, мне нужно catalog/armatura , но так не работает и решения пока не нашел?

Но за ссыль спасибо! посмотрю обязательно, ибо как то же делают нормальные каталоги с нормальными ссылками в адресной строке))