Периодически сталкиваюсь с проблемами использования views, после решения которых
охота поделиться полученным опытом. Но вот времени как обычно не хватает. Попробую
исправиться и рассказать о паре приёмов, которыми пользуюсь довольно часто.
Потребность в написании возникла после диалога с jerboa7 в теме o CCK.
Итак, дано:
На сайте расположены биографии писателей. Биография каждого писателя - на отдельной
странице. Страница содержит: вводную информацию, список произведений этого писателя,
список его статей, список интервью и т.д. и т.п.
Количество писателей может быть достаточно большим.
Задача:
Дабы не плодить огромное количество списков: список произведений, список статей,
список интервью и т.д. для **каждого** писателя, необходимо создать универсальные
списки, которые будут на странице писателя отображать его статьи, произведения и т.д.
Приступим.
- Установим Drupal и модуль views. Для последующих действий нам большего не потребуется.
- Создадим категорию "Писатели". Необходимо отметить типы материала, в которых надо
использовать этот словарь, поставьте галочки на 'page' и 'story'. В категории
создадим термины (писателей):
- Пушкин
- Лермонтов
- Кобо Абэ
будет фамилия писателя, тело статьи пока пустое и не забудьте проставить нужные
термины из категории писателей (для страницы "Пушкин" термин должен быть "Пушкин")
на каждого писателя, итого - девять Название: "Статья -- Кобо Абэ 1", "Статья
-- Кобо Абэ 2" и т.д. Не забываем в каждой статье проставлять нужные термины.
- Имя(name) - test; Галочка на "Provide Page View" (показывать на странице);
- Тип (View Type) - List view (список).
- Фильтры (filters):
Тип материала (Node: Type) - 'story' (Is Onу of - story)
Один из терминов словаря "Писатели" (Taxonomy: Terms for Писатели) - Кобо Абэ (Is Onу of - Кобо Абэ) - Поля (Fields)
Заголовок (Node: Title) - Изменяем личные страницы писателей. В теле страницы, после вводного тек текста
необходимо вписать нижеследующий код (отметьте фильтр "PHP code"). Комментарии
включать не обязательно.
<?php
// имя вида
$view_name = 'test';
// получаем объект
$view = views_get_view($view_name);
// очищаем запрос
// Это надо прокомментировать. Дело в том, что модуль views составляет
// запрос к БД только один раз - в момент, когда вы сохраняете вид.
// Нам этот вариант не подходит, т.к. параметры вида у нас изменяются,
// соответственно должен изменяться и запрос. У модуля есть проверка на
// пустой запрос - в этом случае он создаётся заново. Именно этот хак
// мы и используем. Для маньяков - оптимизаторов (хотя таковые views и
// не используют, наверное) - можно сохранять запрос после радактирования
// вида и вставлять его здесь, но не думаю что этот способ имеет право на
// жизнь.
$view->query = $view->countquery = "";
// получаем термин, к которому относится данная страница.
// Функция arg(1) возвращает номер материала, то есть если у нас путь к
// статье /node/25, то ф-я возвратит 25
// Последняя цифра в данном выражении (1) - номер словаря, его можно
// узнать на странице редактирования словарей (admin/taxonomy/), наведя
// указатель мыши на категорию (в нашем случае это будет номер 1.
// Внимание!
// функция taxonomy_node_get_terms_by_vocabulary возвращает массив терминов
// в нащем случае одна статья не может принадлежать двум и более терминам,
// но если такое произойдёт, будет взят первый из списка (ф-я array_shift)
$tid = array_shift(taxonomy_node_get_terms_by_vocabulary(arg(1), 1));
// просматриваем все фильтры нашего вида и ищем нужный (один из терминов
// словаря). Это будет фильтр с идентификатором term_node_N.tid, где N -
// номер словаря.
// напоминаю, что $tid->tid содержит номер термина (писателя) данного материала
foreach($view->filter as $num => $item )
if($item['id'] === 'term_node_1.tid')
$view->filter[$num]['value'][0]=$tid->tid;
// отобразить вид
print views_build_view('embed', $view, array(), FALSE, $limit);
?>
7. На сегодня всё Проверяйте.
Комментарии
А с квтегориями это все будет работать?
C модулем Category всё по другому, не удивлюсь, если всё это можно сделать стандартными средствами этого модуля. Например там ноду саму можно сделать категорией и привязать к ней другие ноды, чем не решение?
Но использовать его пока не хочу - сырой.
Я даже фотку на радостях сменила. Теперь я вот такая - со счастливыми глазами.
Сейчас буду это всё осуществлять.
Вы просто не представляете, как мне помогли.
Всегда пожалуйста!
Буду рад если пригодится!
Да, эта фотография лучше
Простите, а в чем сырость Category?
На drupal.org в "issues" активней мелькает CCK чем Category.
ЗЫ. "issues" - это где делают баг репорты, запрашивают новые фичи, и постят патчи.
Это потому, что его больше юзают.
Да и на количество багов посмотрите (CCK-Category):
критических: 5 -8
нормальных: 17 - 57
Но дело не в количестве багов дело, я скорее говорю о личных впечатлениях.
При моём последнем знакомстве он был... как бы это сказать... непредсказуем. Одна и таже последовательность действий приводила иногда к разным результатам. Плюс не очень хорошее знание принципов его работы. Вобчем на боевой сайт ставить его пока точно не буду, а баловаться пока нет времени.
Может в ближайшем времени его снова попробую.
Чего мне стоил весь геморрой, когда при банальном апгрейде модуля вся вложенность категорий перепуталась.
_________________
memyself's
Спасибо за статью, действительно здорово =). Только вот taxonomy_dhtml не правильно работает с таким словарем, обидно. Может у кого есть идеи как можно сделать хлебные крошки? Ну или просто меню?
что-то не пойму - как он с i18n работает? - почему-то игнорирует язык и показывает все подряд
Вот дошли руки в локалке применить решение Dana. Всё получилось.
К сожалению, пока занимаюсь другим сайтом и не могу кинуть ссылку, как это всё работает.
По организации и затратам сил это даже проще, чем я предполагала.
Спасибо ещё раз.
Образчайся если что
Спасибо, Дан, очено полезное руководство!
Раз уж ты у нас заделался спецом по Views, такой вопрос - как сделать специальный вид нод для какого-то конкретного словаря? Views может переписать дефолтный taxonomy/term, но это будет действовать на все категории, а если мне нужно только на какие-то определенные? Я так понимаю, что это надо делать через аргументы, но как именно?
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Ох уж мне эти аргументы! По их поводу могу сказать одно: "тема аргументов не раскрыта"
Я не удивлюсь, если всё описанное мною тут можно сделать с их помошью....
Вообще вторую часть я собирался писать про аргументы. Давай попробуем асилить это вместе?
Мне нужно:
- более подробное описание твоей задачи (с примерами).
- подборка ссылок на drupal.org об аргументах - в англ. я не очень (медленно читаю), но если есть хорошая документация/пример, то - не проблема.
(я не много хочу?
В том-то и дело, что нормальной документации "для чайников" по аргументам нет. Народ что-то творит, а объяснять не может или не хочет У меня задача такая: допустим, есть словарь "Новости", в котором ноды показываются в стандартном обратном хронологическом порядке. Соответственно, его мы не трогаем. И есть словарь "Энциклопедия", в котором нужно показать ноды в алфвитном порядке. Как мне сделать вид для этого словаря, чтобы он не затрагивал остальные? Чтобы при заходе на любой термин этого словаря ноды показывались в алфитном порядке. Все это достаточно просто сделать через Category, но увы, cat vies глючит, и мне надоело ждать, пока Джаза разберется с этими и другими багами. Я уже даже заплатить готова, но не знаю, найдутся ли желающие
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Ну вобчем так.
Создал вид:
Fields:
Name -- Node: Title
Sortable -- Yes
Default Sort -- Descending
Filters
Field -- Taxonomy: Term
Operator -- Is All Of
Value -- XXXXX: YYYYYYY
Arguments
В "Argument Handling Code" помещаем следующий код:
<?php
$view->query = $view->countquery = "";
foreach($view->field as $num => $item )
if($item['id'] == 'node.title')
$view->field[$num]['defaultsort']=arg(2);// второй аргумент: ASC или DESC
foreach($view->filter as $num => $item )
if($item['id'] == 'term_node.tid')
$view->filter[$num]['value'][0]=arg(1); // первый аргумент (номер терма)
?>
И делаем URL какой-нить, например term_test
И теперь путь "term_test/1/asc" вывод всех нод, привязанных к терму номер 1 в порядке Ascending (возрастания), а "term_test/1/DESC" - в порядке Descending (убывания).
Можно развить функциональность, например если задан термин номер 7, то порядок сортировки - возрастание, иначе - убывание; код для первого foreach измениться на следующий:
<?php
.....
foreach($view->field as $num => $item )
if($item['id'] == 'node.title')
$view->field[$num]['defaultsort']=((arg(2)==7)?' ASC' : 'DESC');
.....
?>
Использование: "term_test/1" или "term_test/7" и т.д.
То что надо?
Вообще аргументы, как я понял, не для этого делались, но хак, думаю полезный. В принципе отпадает необходимость в коде, который я привёл в самом начале темы, да и удобней стало - не надо заводить отдельную страницу с PHP-кодом.
Придется, видимо, Natalie платить...
Дан, спасибо, полезная идея. Это не совсем то, что мне нужно, но все рвно пригодится, я думаю.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Не, ты скажи как надо - попробую сделать
а можно на страницах views делать фильтры изменяемые пользователем? (например, трекер с выбором нужных терминов и возраста нод)
Юзай "Exposed Filters"
Здрасьте, это опять я
Нужна модификация первого примера, с nodereference вместо терминов.
Имеется: страница автора (один тип материала) и несколько страниц произведений (другой тип материала), которые ссылаются на автора через nodereference. Нужно, чтобы на странице писателя отображались все произведения, для которых он автор (то бишь, ссылаются на него через nodereference).
Требуется унивесальный view и универсальный код, который можно вставить в шаблон писателя с тем, чтобы это работало для всех сразу
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Вроде сама разобралась, там не так сложно было.
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
Несложно для "Мастера Views", Natalie :). Может кратенько напишете, что сделали?
"Что там было, как ты спасся?" (с) Высоцкий
Несложно, в смысле программировать не надо, а стащить сниппеты с drupal.org
В виде выбрать аргумент нужный nodereference, а в поле для кода вставить
$args[0] = arg(1);
В шаблон вставить
<?php
//Загружаем вид, view_name - уникальное имя вашего вида
$view = views_get_view('view_name');
//Это просто заголовок
print t("
");
print t("
Заголовок для view
");
//вставляем вид в страницу
print views_build_view('embed', $view );
?>
---
---
All content management systems suck, Drupal just happens to suck less. -- Boris Mann at DrupalCON Amsterdam, August 2005.
ААА гемор-то какой! Уж лучше я без views сделаю страницу, чем разбираться с аргументами и проч!
Например, каталог партнеров по странам в виде ноды типа page:
Текст-текст-текст.......
<h2>Наши партнеры</h2>
<?php- $link
// список ссылок на страны
$country = (int)$_GET['country'];
$contries = taxonomy_get_children(119); // все страны (из таксономии)
foreach ($contries as $c) {
$count = taxonomy_term_count_nodes($c->tid);
if ($count) {
$link = $c->tid == $country ? $c->name : "tid") ."'>$c->name";
echo "
";
}
}
?>
<?php
// список партнеров в выбранной стране
if ($country) {
print taxonomy_render_nodes(taxonomy_select_nodes(array($country)));
}
?>
views очень полезная штука, без него в друпале сложно, пример как работать с аргументами можно подсмотреть в модуле галереи acidfree
Если владеешь PHP и знаешь API Drupal'a, многие модули ни к чему. И без ССК вполне можно обойтись.
так для того и модули и сделаны что-бы не писать все вручную, для того и друпал сделали, но то такое дело - а вот скажите - где взять типа api.drupal.org но что-б там были api от всех модулей а не только от ядра, возможно-ли такое?
2kiev: да, возможно. ставишь модуль локально и он индексирует все установленные в системе модули. я делал. работает
измучался я с этими видами. Мне надо очень просто: подсчитать сколько в результате нод получается при моем views 'protocols' с аргументом 433 - сколько на drupal.org не копался - так примера и не нашел
сделал наугад вот так:
<font color="#000000"><font color="#0000bb"><br>$view </font><font color="#007700">= </font><font color="#0000bb">views_get_view</font><font color="#007700">(</font><font color="#dd0000">'protocols'</font><font color="#007700">);<br></font><font color="#0000bb">$view_args </font><font color="#007700">= array(</font><font color="#0000bb">0 </font><font color="#007700">=> </font><font color="#0000bb">433</font><font color="#007700">);<br></font><font color="#0000bb">views_build_view</font><font color="#007700">(</font><font color="#dd0000">'embed'</font><font color="#007700">, </font><font color="#0000bb">$view</font><font color="#007700">, </font><font color="#0000bb">$view_args</font><font color="#007700">, </font><font color="#0000bb">false</font><font color="#007700">);<br>print </font><font color="#0000bb">$view</font><font color="#007700">-></font><font color="#0000bb">num_rows</font><font color="#007700">;<br></font><font color="#0000bb"></font></font>
но чувствую что это полное ламерство - непонятно как посредине вызванное views_build_view влияет на конечный результат - подскажите - как правильно?
Привет всем! У меня такая проблема:
Есть тип контента сборник и тип контента композиция.
Некий пользователь создает сборник, а в нем есть возможность для других пользователей вставлять композиции, то есть в сборнике присутствует ссылка "добавить композицию", при переходе по которой открывается страница для создания композиции, причем эта композиция уже автоматически относится к данному сборнику.И кроме того сборник должен содержать список всех относящихся к нему композиций.
Если кто может расписать по пунктам какие действия требуется сделать,пожалуйста ответьте!
Это подчиненный материал - организуется при помощи views + editview (for views) + viewfield (cck).
Может не заморачиваться?
Есть сборник, пользователь его может редактировать, так?
Если надо запретить редактировать отдельные поля, это можно задать модулем (как называется не помню field permission или как-то так). Внутри сборника есть поле node_reference, с множественным выбором. Вуаля!
Для отображения списка, можно с помощью view создать блок и в разрешениях показа проставить что-то типа node/*/edit (не знаю, сработает ли, но можно и "руками" парсить путь)
Прости ,Дан, я что то не могу понять до конца твой совет. Напишу как понял:
1) создаем 2 типа нодов а) сборник и б) композиция
2) добавляем ссылку в нод сборник под названием "добавить композицию",которая ведет на http://mysite/node/add/composition ,то есть на страницу создания композиции
3)вопрос в следующем: эта композиция должна автоматически добавиться в список композиций данного сборника и пользователь не должен выбирать сборник к которому должна относится данная композиция,потому что сборники могу иметь одинаковые названия,и пользователь их не сможет отличить. Он просто добавляет в сборник в котором он кликнет на ссылку "добавить композицию".
nod_reference до конца не понятно как сделать , какие аргументы вписать? Или сам вью списка композиций как то нужно задать? Буду благодарен за помощь.
Хм, я по другому видел задачу:
- Существует энное количество "композиций". Они являются самостоятельными материалами и ни с чем не связаны.
- Также есть материалы типа "сборник", они являются сборником ссылок на композиции. Поэтому и предложил добавить в этот тип материала поле типа "Node Reference" с множественным выбором.
Опиши пожалуйста задачу подробнее:
- что представляют из себя сборники и композиции.
- как они между собой связаны
- как они будут представлены
- как должно быть реализовано редактирование, добавление, удаление
Типичный подчиненный материал !
1) В материале "сборник" создать поле editview (выбрать views настроенную для отображения композиций - настраивается передача аргумента nid parent);
2) В материале "сборник" создает computedfield в виде сслылки на создание "композиции" ( node/add/compositions?nid=$nid ) где nid - parent ID;
3) В материале композиция поле computedfield вычиляет при создании материала методом $_GET значение parent ID (PID);
> Типичный подчиненный материал !....
Клёво! Надо будет попробовать.
Спасибо, Алексей!
Спасибо, за оценку комментария. А магистр случайно не знает как бы подчиненный материал без открытия новой формы реадктировать, например во viewfiеld ("по месту", "на лету") ? Заранее благодарен.
Алексей, не скажу - почему-то с первого раза завести связку editview+viewfield не удалось - апач валился с ошибкой. К сожалению нет времени разбираться нет. Если руки дойдут - отпишусь.
Более простое решение через CCK и аргументы views
http://drupal.org/node/124446
А можно со скриншотами описать в чем суть идеи и как она реализовывается?
Что-то не совсем понятно и не получается не "плодить списки писателей".
------------------------------------------------------------------------------------------------------------
Вот встречаешь частенько некоторые обучалки (типа этой, хотя совершенно из другой области) и душа радуется - все ясно. И программёру, и начинающему юзеру. Любому!
Спасибо за статью!
Для atl - http://drupal.ru/node/5781
Даниэль, не могли бы вы указать, на каком сайте это реализовано?
2ii: хоть и запоздалый ответ, но всёж...
Для какого сайта делал не помню, но сейчас это делается легко с помощью аргументов (во время написания статьи они или криво работали или простоя с ними не разобрался).
PS: может спросить у jerboa7?
попыталась сделать по Вашей инструкции, поставила фильтр "PHP code", в тело скопировала код, отправила, в результате получилась текстовая страничка с цветным тексом, код не исполняется. проверила доступ, все ок.
не подскажете как заставить код исполняться?
Какой вы используете визуальный редактор?
Нужно этот код вставлять именно в html (для FCKeditor кнопка "источник"), а не в окошко редактора (не относится к bueditor)
ой8-)) наверное никакой...ничего специально не ставила. не знала. ставила скрипт туда же где текст. спасибо, попробую FCKeditor
проверьте, правильно ли указаны номера словарей. Это именно номер словаря а не категории.
Нет-нет. Не в FCKeditor дело.. Не ставьте его понапрасну, он увесистый. Если туда же где текст, то все должно работать. Не могу вам помочь.
Напишите подробнее, как делаете.
Во-первых, напишите названия словарей и их номера.
Во-вторых, подробную последовательность действий.
Например, я делаю так.
Есть словарь "Храмы" - номер словаря 1.
В словаре термины Всехсвятская, Александро-Невский, Свято-Николаевский и др.
В настройках словаря ставим галку у page и story.
Создаю вид, как описано у Дэна.
Ставим галочки доступа для зарегистрированных и незарегистрированных пользователей!!!
Обязательно is one of в фильтрах.
Создаю парочку статей по тематике Всехсвятской церкви как story.
Создаю справочную информацию о Всехсвятской церкви - page, категория Всехсвятская.
Вписываю код. Смотрю в категориях - у словаря храмы номер 1. оставляю все как у Дэна.
Ставлю в код название виды links
($view_name = 'links';)
режим php code.
Наслаждаюсь результатом.
http://www.blagoslovi.ru/predstav/chepetsk/act/vseh_svyat_hram
У самой мозгов нет, буду благодарить умную голову Дэна без устали.
а нужно что бы у словарей были номера? а где их проставить?
я делала тупо по инструкции Пушкин, Блок и Мао и по 3 странички story с названиями 1, 2, 3 и указаниями на авторов
в настройках галки проставила
а когда вставила в страницу Мао php код, он у меня в текстовом виде и появился, не смотря на включенную опцию php
чего то я напутала, наверно....
да, сложен друпал временами, а при моем никаком английском вообще как темный лес, но думаю мозги у меня временем нарастут%))
распечатаю пост буду заново пробовать
....
?>
Номера словарей смотрите в "Категориях".
У Вас должен быть создан словарь "Писатели", а в нем термины Пушкин, Блок, Мао.
Так вот при наведении курсора на "edit vocabulary", "list terms" (редактировать словарь и вывести список терминов) вы увидите номер словаря, например taxonomy/vocabulary/1 или 2 или другая цифра.
Так вот эту самую цифру вставляем в код в этих местах:
$tid = array_shift(taxonomy_node_get_terms_by_vocabulary(arg(1), 1));
foreach($view->filter as $num => $item )
if($item['id'] === 'term_node_1.tid')
$view->filter[$num]['value'][0]=$tid->tid;
Вид, надеюсь, создали без проблем?
С новым годом!
спасибо Вам за помощь, но я совсем запуталась, у меня еще перименовалось все через pathavto, вернусь к vews, когда поумнею:))
пока пошла более простым путем, сделав обязательную сортировку по терминам, и поставив ссылку на них на странице подшивки. не так элегантно, но все находится%)
Можете обзывать меня хардкодером, но как от views получить то же, что дает код
{
$query = "select n.nid, n.title from {image_attach} i_a join {node} n on i_a.nid=n.nid where i_a.iid=".arg(1);
$q_res = db_query($query);
while ($q_str = db_fetch_array($q_res))
{
echo l($q_str['title'],'node/'.$q_str['nid'])."<br />";
}
}
Тоесть список всех нод, к которым аттачена показанная картинка. Естественно исользуется image и image_attach.
Я бы оставил тупо код в блоке, но очень лениво дописывать кучу where и order by к запросу.
Сделал вид, к виду добавил filter attached image и код обработки аргументов
foreach($view->filter as $num => $item )
if ($item['table']=='image_attach')
$view->filter[$num]['value']=arg(1);
Мне не помогло. Упорно использует IID как логическое значение. Добавить фильтр "ручками" в "коде обработки аргументов" не дал, так что я лучше допишу запрос.
зато у views внутреннее кеширование есть
А использовать в аргументах номер текущего материала не получается? (лень ставить и проверять
- а армяне лучше, чем грузины!
- чем лучше-то?!
- чем грузины...
>> А использовать в аргументах номер текущего материала не получается? (лень ставить и проверять
Мне было не лень, но не вышло ничего хорошего - views гребет все ноды с изображениями, что бы я ни делал.
Попробую задать свой вопрос еще и в этой древней и почтенной теме
Есть два словаря (неожиданно, правда?): Товары и Города. Есть тип материалов Товары, каждый материал этого типа имеет один термин из первого словаря и один или несколько из второго. Создаю вид и пытаюсь получить им табличку нод, удовлетворяющих выбранным терминам из обоих словарей. Если делать два аргумента ID термина, то все работает отлично, если же делать два аргумента Имя термина, то в результате всегда пустая страница (ни одной ноды, удовлетворяющей условию).
Ответ искал тут долго достаточно, пробовал варианты с офф. сайта, не помогает. Подскажите куда мне идти?
Dan, спасибо большое.
а как показать во вьюсах пятерку самых читаемых писателей (ну допустим по скачиваниям)?
Уважаемый Даниэль! Спасибо вам огромное за эту статью - мне она очень пригодилась.
Хочу только добавить, что в моем конкретном случае (Drupal 5.7+Views 1.6) мне пришлось строчку
заменить на
а строчку
на
И настало мне счастье))
Возможно аргументы не работают с юникодными строками. Попробуй поэкспериментировать, задавая аргументы прямо в виде (в"Argument Handling Code")
Да, лучше так. В той версии, которую я использовал этой переменной ещё не было.
Это ты в фильтре вместо идентификатора термина использовал его имя. Можно и так.
А в чём проблема? Фильтр по писателям, сортировка по кол-ву скачиваний убывающая, количество - пять.
Получится пятерка самых скачиваемых произведений писателя, а нужно пятерка самых скачиваемых писателей. Чувствуете разницу?
Как это же будет выглядеть в 6 друпале?
Прошу прощения за "некро пост", но проблема всё ещё актуальна. Сделал так, как описано выше, получил:
Fatal error: Call to undefined function views_build_view() in /home/virtwww/w_ustyany-176_ef505941/http/includes/common.inc(1685) : eval()'d code on line 47
В указанном файле, указанная строка выглядит так:
#45 if (!is_null($region) && !is_null($data)) {
#46 $content[$region][] = $data;
#47 }
#48 return $content;
#49 }
Был так рад, увидев готовое решение, а тут такое...
Ошибка не в includes/common.inc, в коде который туда уходит.
Если вы использовали код из первого поста, то могли бы обратить внимание на дату написания
Да...
Drupal 4.7 .....
Я с него начинал
Просмотрел топик ещё раз... это же миллион лет назад было!
Кстати концентрация девушек в топике весьма плотная. Что-то мы всех дам разогнали с форума...
Было давно, да )
Кстати, за "некро пост" извинялся выше.
Забыл дописать - в друпале я 4 с лишним недели. Пхп не владею чуть больше, чем полностью... однако проблема всё актуальнее и актуальнее с каждым днём )
Версия подопытного 6.15, версия views 1.6.
Превратностями судьбы было мне суждено решать проблему типа: 6 одноимённых подпунктов для 16 разных пунктов. Решил топорно - сделал 16 представлений.
ВНЕЗАПНО, превратностями на этот раз заказчика, подпункты обрели свои подпункты, т.е. количество представлений грозит вырасти вдвое, а по полученным только что сведениям, и того больше.
Каким-то шестым чувством понял, что спасти меня может только следующее: Зная термин страницы, "передаём" этот самый термин представлению, отображённому на этой странице.
Гугль слабо помог, но благодаря ему я и попал на ваш, Dan, блог. Буду сердечно благодарен любому подспорью.
aStudent, кури аргументы
1.6 это для Drupal 5, для 6-ки версия 2.8
Скорее всего, как и сказал penexe помогут аргументы. Для боле точного ответа нужна более точная постановка задачи.
У меня вопрос по аргументам. Всё создал через них, всё работает.
Посоветуйте как организовать фильтр, т.е. чтобы пользователь сам мог выбрать доступные параметры аргументов. Например в виде фильтра блогов по пользователю или по дате (месяц или год).
Внешние фильтры (exposed filters).
Спасибо Dan! Вот бы еще найти где их темизировать, там по-умолчанию выводится строка для ввода с автопоиском, мне бы выпадающий список. А можно как-то написать туда свой php код для фильтрации? я бы собрал бы все аргументы и кинул в нужный мне
Темизация - это изменение оформления, внешнего вида.
Внешние фильтры - это формы. Изменять их можно с помощью hook_form_alter. Или хуки самого views.