Как создать временную шкалу в Drupal с тремя слоями деталей? - PullRequest
2 голосов
/ 01 августа 2010

Вместо того, чтобы просить помощи при столкновении с айсбергом, теперь я вижу, что, вероятно, есть несколько подходов к тому, чего мне нужно достичь, поэтому я спрашиваю ваше мнение: что бы вы сделали?

Мне нужно создать временную шкалу в Drupal. Временная шкала имеет 3 слоя: десятилетие (30, 40, 50 ...), год и события.

Я буду регистрировать несколько событий, которые произошли в определенный год. У меня будет около 2, 3 или 4 мероприятий в год, и у меня нет точной даты для каждого из них. Мне просто нужно связать эти события с определенным годом, а затем связать эти годы с соответствующими десятилетиями. Навигация будет от глобального (десятилетие) к конкретному (событие). Я, вероятно, буду использовать jQuery для свертывания десятилетнего блока, который показывает или скрывает десять лет внутри него (десять маленьких прямоугольников). При нажатии на эти поля пользователи будут перенаправлены сначала на страницу подробного года, а затем на страницу подробного события, если нажмите на одно из событий.

Мой подход до сих пор был:

1) Создать тип содержимого события. Одним из полей здесь является ссылка на узел. Это позволяет мне связать событие с соответствующим годом. 2) Год содержания типа. Это простой тип контента, на который ссылаются события. Я просто буду создавать каждый год как узел (1930, 1931, 1932, 1933 ...) 3) Использовать таксономию для слоя десятилетия, чтобы каждый зарегистрированный год был связан с одним из зарегистрированных десятилетий (30, 40, 50, 60, 70 и т. Д.).

Ну, проблема в том, чтобы представить эту информацию. Это сложно и сложно смоделировать с помощью Views. То, о чем я думал, было:

1) Первый подход - запросить годы и сгруппировать их по десятилетиям. Тогда у меня есть два варианта здесь: 1.1) Свяжите их с полным узлом года. Проблема: если я это сделаю, я не смогу извлечь из узла года связанные события. Потому что моя ссылка на узел - это не годы, указывающие на события, а события, указывающие на узлы. Как вы думаете, я должен поместить ссылку на узел в тип контента года вместо типа контента события? 1.2) Я не знаю, возможно ли это: вместо ссылки на узел года используйте AJAX, чтобы открыть ложное окно поверх текущего, отображающего информацию о году и связанные с ним события. Я не знаю, возможно ли это.

2) Второй подход - я мог бы создать таксономию, которая бы выглядела так: 30-е: 1930 | 1931 | 1932 | 1933 | 1934 | ...

40 с: 1940 | 1941 | 1942 | 1943 | 1944 | ...

В этом случае я бы отказался от типа контента Year и связал события непосредственно с их годом и десятилетием. Я бы, вероятно, потерял бы гибкость, потому что таксономия дает мне только заголовок и поле описания, и я мог бы иметь больше с типом контента Year

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

Во всяком случае, мне жаль, если это стало слишком большим. Я не ожидаю подробного ответа, но любая помощь будет оценена. Я сделал кое-что с Drupal, но это первая сложная структура, которую мне нужно построить. Если вы знаете о каких-либо блогах, которые рассматривают такую ​​структуру с несколькими слоями, я ценю помощь. Спасибо.

Ответы [ 2 ]

3 голосов
/ 04 августа 2010

Попробуйте http://drupal.org/project/timeline

есть много интересных функций. Может не соответствовать всем вашим требованиям, но это действительно классный модуль. Я использовал это.

1 голос
/ 03 августа 2010

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

Первый вопрос: зачем вам годы, чтобы быть узлами? Будут ли годы содержать какую-то информацию как таковую или они будут просто набором событий ? Из вашего вопроса я понимаю, что это последнее, поэтому я бы исключил наличие лет в качестве узлов.

Если я вас правильно понял, год, когда произошло событие, является единственной дополнительной информацией, которую вы хотите сохранить в БД , тогда как десятилетия - это просто способ группировки узлов по этой информации, используя какую-то логику (в данном случае целую часть года / 10).

Вы можете достичь этого двумя способами, ИМО.

  1. С помощью иерархической таксономии .
  2. Путем создания типа узла, называемого «событие», в котором есть поле «год» , а затем путем организации всех остальных с представлениями.

Первый вариант прост [возможно, даже то, что вы описали как вариант № 2]. Вы не обязательно теряете гибкость, поскольку можете представлять автоматически созданную информацию на уровне шаблона (например, изображение, названное как год или десятилетие, которое будет помещено на страницу) или связать созданное человеком изображение с данной страницей с помощью представлений [Например, у вас могут быть узлы типа «описание года», которые вы помечаете той же таксономией, которую вы используете для «событий», так что при фильтрации с термином таксономии (1945) вы получите список узлов «события» и один узел » описание года "в вашем результате, и шаблон / представления позаботятся об использовании различных типов узлов по-разному]

Второй вариант менее прост, но дает вам больше гибкости. Вы должны напрямую кодировать свой собственный «модуль node_event», а не использовать CCK, описывая свои поля для просмотра там же. Затем вы использовали бы пользовательский интерфейс Views только для сборки своих страниц [узлы по десятилетиям, меню десятилетий, фильтры ...]).

Я совершенно уверен, что вы также можете достичь функциональности, аналогичной варианту №2, используя CCK + Views UI (поэтому без необходимости кодировать), но для такой помощи, возможно, SO не лучшее место, чтобы спрашивать и вам, вероятно, стоит спросить на каком-нибудь форуме, связанном с Drupal.

НТН!

...