Матрица характеристик

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

Аватар пользователя Strycker Strycker 27 августа 2009 в 12:00

Коллеги!

Подскажите вот по какой ситуации: мне нужно придумать как вывести табличку с описанием свойств программы.
Что дано: есть нода - программа (описание программы). У неё есть набор неких свойств (это словарь таксономии - Функции): компрессиия, декомпрессия, анализ заголовка, архивирование, конвертирование в другой формат, редактирование и прочие - т.е. полный набор возможных функций программы. Есть ещё области, в которых может эта программа применятся (тоже таксономия, словарь называтся Сферы применения): музыка, видео, текст - каждый из этих терминов содержит поддермины. Описывать все термины не вижу смысла, вроде бы и так ясно.
Что нужно: нужно вывести табличку с названием "функции программы" где бы в заголовках столбцов были бы указаны возможные функции, в заголовках строк указаны сферы применения, а на перекрестии стояли бы галочки.

Вот собственно накидал картинку.

никак не соображу как создать и заполнять такую структуру. Опять же вопрос как соотносить между собой словари таксономии. И вообще может быть это не таксономия? Хотя... программы я сортирую и по функциям, и по сферам применения.

ВложениеРазмер
Иконка изображения example.jpg23.23 КБ

Комментарии

Аватар пользователя IrinaStasuk IrinaStasuk 27 августа 2009 в 14:29

Возможно в данной ситуации я бы воспользовалась полями сск с выбором: нет и какой-нибудь символ. Потом во вьюсе выводила требуемые поля. Но вертикальные надписи стандартно не делаются - придется что-то придумывать. Мне это не нужно было - поэтому не могу подсказать.

Аватар пользователя Strycker Strycker 27 августа 2009 в 22:07

Для меня главное не вертикальный текст, а возможность расставить галочки на пересечении терминов из двух словарей для каждой ноды. Т.е. сначала задать, а потом отобразить.

Аватар пользователя Strycker Strycker 28 августа 2009 в 14:02

IrinaStasuk wrote:
Обязательно галочки?

очень желательно. Для меня главное понять как это хранить, соответственно отсюда можно будет понять как это редактировать и выводить.

Аватар пользователя Strycker Strycker 28 августа 2009 в 14:33

Вариант с матрикс не подходит: модуль под пятый друпал, у меня шестой.
С выводом view: на сколько я понимаю view работает так, что в заголовках столбцов может выдать либо название словаря (если в строках выводятся термины), либо сами термины, если табличка с одной строкой. А как сконфигурировать view чтоб он в столбцах выдавал термины одного словаря, а в заголовках - термины другого я не знаю. Тем более как хранить галочку на пересечении?..

Аватар пользователя Strycker Strycker 2 октября 2009 в 11:12

В продолжении темы:
Думал над задачей, искал модули, ничего нужного не нашёл. Но в голову пришло решение, опыта чтоб написать отдельный модуль не хвает, поэтому я тут постараюсь изложить суть решения и буду надеяться на поддержку сообщества - вдруг кто-то предложит или объяснит (что было бы вообще здорово) как реализовать подобное.

Итак, изначально речь шла о том, что необходимо построить, вернее было бы удобно, отображать для ноды не линейное отображение терминов таксономии, а матрицу, храняющую в себе результаты пересечения терминов. В указанном примере это словари: функции и сферы применения. Согласитесь, удобно видеть какие именно материалы (видео, аудио, текст, изображение) может, к примеру, компрессировать программа? Это так же удобно для поиска - вывести только те программы которые осуществляют компрессию видео, а не просто работают с видео и имеют возможность компрессии. Другой вопрос, как этот поиск реализовывать, но это уже следующий пункт Wink

Далее. Я подумал как же хранить эту самую матрицу пересечений словарей и родилась такая мысль: а что если действительно завести CCK поле - двухмерный массив, в начальных строках и столбцах которого будут стоять термины из нужных нам словарей, а на пересечении будут стоять 1 или 0. Для каждой ноды описанный массив будет заполняться на этапе создания и отображаться в виде красивой таблички. Единственное что меня останавливает от написания модуля это недостаточное знание "внутренностей" Друпал и посредственное знание php. Сейчас я пытаюсь этот пробел восполнить, а пока было бы приятно почитать комментарии более опытных товарищей на счёт моей мысли Smile