Групиране в Drupal
Дълго време отбягвах Drupal 6 заради недопроверените ми опасения, че вградената му многоезичност не работи достатъчно добре. Но покрай един проект, който се нуждаеше от по-сложна функционалност, за която за Drupal 5 нямаше подходящи модули, реших най-накрая да влезна в крак с модата, защото така и така скоро ще спре да бъде мода предвид идването на Drupal 7.
Както и да е, новостите в 6 са прекалено много, но това, от което изпитвам известна гордост, че постигнах, е групирането на списъци във модула Views 2 (нямащ абсолютно нищо общо със старата си версия 1 за Drupal 5).
Цел - да постигна Views list, групиран по определен принцип - в случая по дата, по-специално месец.
Използвани модули - CCK, Views 2, Date
Стъпки:
- Прави се нов тип на съдържание, който искаме да подреждаме във Views: Administer -> Content management -> Content types -> Add content type Пишем му име и оставяме стандартните стойности за публикуване и т.н.
- В новосъздадения тип трябва да добавим поле за дата, което е функционалност, дадена ни от CCK Date: Edit content type -> Manage fields -> Add Попълват се всичките необходими опции за ново поле и за тип слагаме "Date". На следващата страница се донагласят специфичните опции за Date CCK поле, които на пръв поглед са малко объркващи, но с дифолтни настройки в общия случай е окей.
- Тук идва тънкият момент - нагласянето на нов формат за дата, който да ни служи за групиране на view-то. Форматите за дата в Drupal са глобални и веднъж въведени, се използват в рамките на цялата система, т.е. от всеки модул. Намират се тук: Administer -> Site configuration -> Date and time -> Formats Drupal има три вградени формата - Long, Medium и Short, както и един голям списък с предефинирани видове подредби на дата/час, които могат се прикачат към всеки един от тези три формата. В случая трябва да направим нова подредба и после нов формат, към който да прикачим подредбата. Стъпките за създаване на нов дата формат са следните:
- Add format -> пише се стринг с променливи, извикващ дата според правилата на PHP Date. В нашия случай пишем "M Y", тоест пълно текстово име на месеца и година с пълните си 4 символа.
- Новата подредба се показва в Custom Formats и се визуализира с днешната дата, за да видим дали сме го уцелили точно.
- в Configure под готовите вече формати има поле Add format type. Там му пишем човешко име (с което ще се показва в системата) и машинно име, с което ще се идентифицира пред PHP функциите. В нашия случай съответно "Month Only" и "monthonly".
- Новият Month Only формат се появява под трите вградени. В приложеното му падащо меню скролваме всичките дифолтни подредби и най-отдолу избираме новата, която направихме и би трябвало да показва само месец и година.
- Save configuration и вече имаме нов, специално направен формат за дата, който показва само месец и година.
- Създаваме ново view: Administer -> Site building -> Views -> Add При първоначалното създаване системата пита какъв вид да е view-то и казваме, че искаме да подрежда Node-ове, т.е. стандартно Drupal-ско съдържание. Views 2 е систематизиран чрез табове, всеки от които ти дава настройки за съответния стил, който view-то предлага. В нашия случай използваме само Defaults, в което са всичките общи настройки за подреждане на съдържание, както и Page, което ги изкарва под формата на страница.
- Настройките за Defaults таба са следните: Basic Settings
- Style -> HTML list (тук ще се върнем пак по-късно)
- Row style -> Fields
- Items to display -> 0 за Unlimited
- Node: Type -> избираме типа съдържание, който създадохме
- Node: Published -> Yes
- Node: Title -> оставяме празно полето за Label и отмятаме "Link this field to its node
- Content: Date -> отмятаме Label: None и си избираме формат за дата, какъвто искаме да се показва във View-то, примерно Short
- (отново) Content: Date -> този път отмятаме "Exclude from display", пак махаме Label и за дата формат избираме новосъздадения Month Only
- Връщаме се обратно в HTML list, цъкаме на иконата за настройките му и там в падащото меню Grouping Field избираме последната опция от списъка, която е именно втората скрита дата, която служи само за групиране.
- Цъкаме на иконата за настройки на Row style: Fields и в Inline fields отмятаме там първите два field-а - за заглавие и дата, за да се показват на един ред, като избираме подходящ символ за сепаратор между тях, примерно тире.
- След това си правим нов таб Page, в него пишем адрес на страницата и заглавие, като не override-ваме останалите общи настройки за View-то, за да се използват и в новия Page.
- Настройките за Defaults таба са следните: Basic Settings
- Създаваме няколко Node-а с различни дати и отиваме на адреса на страницата с новосъздаденото View, за да видим какво се е получило.
Ако резултатът прилича на нещо такова:
January 2009
- 2009-01-01 - Заглавие
- 2009-01-02 - Заглавие
- 2009-01-03 - Заглавие
February 2009
- 2009-02-01 - Заглавие
- 2009-02-02 - Заглавие
- 2009-02-03 - Заглавие
Значи сме постигнали заветната цел - да сътворим нещо сравнително лесно и близко до акъла, но по изключително завързан и сложен начин.
В което Drupal е толкова, толкова силен.
Comments
Коментар от zyl_oiliuff на Permalink
Коментар от Victor на Permalink
Коментар от Божо на Permalink
Коментар от Victor на Permalink