Извън рамките

Съвсем не беше изненада, че една ужким бърза и проста инсталацийка на друпал като услуга за стар приятел вирално се разрастна в досадно сложен проект, който утрепа голяма част от лайняното ми ежедневие.

Но тъй като в крайна сметка през фекалния му каймак изплува едно ново за мен ноухау, няма как да не го споделя с виртуалната общественост.

Проблемът се състои в това как да изкараме дадени CCK полета от даден node извън границите на content-а и същевременно полетата да се показват само когато въпросният node е отворен.

След дълго ровене и търсене за апокрифни модули с алтруистичната надежда, че някой добросъвестен девелопер вече се е сетил за този проблем и дори намиране на един горе-долу удобен (CCK blocks), се присетих, че решението би могло да се крие в аргументите на views, които досега винаги са били криптична тъмна магия за мен.

Решението е следното:

  1. Прави се view, което да филтрира съответния node тип, чиито полета искаме да извадим и показваме
  2. Настройката за ред на View трябва да е fields
  3. Трябва да се дефинират желаните от нас CCK полета в графата fields с подходящото форматиране (при мен едно от тях беше файлово поле със SWF tools formatter, т.е. флаш плейър за аудио файл)
  4. Arguments -> Provide default argument -> Node ID from URL
  5. Нов block display за view-то
  6. Блокът се наглася да се показва в желания от нас регион, примерно някой от sidebar-овете

Какво се случва на практика? Views вади полетата от избрания node тип, слага ги в блока и ги показва, но само когато в адреса на отворения node фигурира името му, т.е. само когато даден node е отворен в момента.

Удобството е, че могат да се изкарат повече от едно полета, да се форматират както човек иска, да им се изкарат label-ите и т.н.

Искрено се надявам това на практика тривиално, но за мен важно постижене, да бъде оценено от получилия го даром, но едва ли.