Задаване на филтър с код на views
Submitted by Svetoslav Stoyanov on Sun, 2013-06-30 09:12Как да променим/зададен стойност на филтър (пък бил той и exposed) на views в кода?
Как да променим/зададен стойност на филтър (пък бил той и exposed) на views в кода?
Как да изведем данни от наша таблица, които са свързани с нод (sms_node)
Следващият код е от модула sms_node. По същество този модул променя status и promoted на нодове, които по подразбиране са непубликувани, като статус служи за публикуване на непубликуван нод, а промотиран за VIP (или по-подробно - датите на които изтича съответния статус след които този статус се отнема). Модула записва датите за публикуван и промотиран в своя таблица, както и за кой нод се отнася това. Структурата на таблицата е следната:
Сигурно има много сценарии, при които да имплементираме наши идеи с views. Тук ще разгледам:
Най-интересната част от презентацията - въпросът как се прави менюто да е с ajax остана недообяснена поради липса на време. Надявам се тук да намерите отговорите на въпросите си по това.
Така, както подготвихме в предните постове различните компоненти - нашето меню с категории което сътветно си има целева страница в която да се зареждат резултатите, на практика е лесната част, която става без да се налага да пишем код. За ajax обаче трябва малко да се потрудим - най-малкото няма как да се мине без js.
Какво е необходимо?
В предният пост видяхме как да включим един дисплей на views в темплейта на нод. Тук ще разгледам как да направим това в темплейта на друго views. Точно така - едно вю, което да импортнем в друго вю.
Тук ще направим с views потребителско меню от термините на един речник.
За пример какво да очакваме като резултат може да разгледате блока Categories вляво. Кода за импорт на такова views е в прикачения файл.
При първоначално създаване е важно да отбележа от опциите на Show (първия слайд) да се избере Taxonomy terms. За нашето меню е необходим блок, затова избираме при създаването да се създаде първоначално като блок.
Задаваме:
Типичен пример за views с аргумент е views с име Taxonomy term (по подразбиране е изключено)(първия слайд). В Drupal 7 views 3 въпросните аргументи са именувани CONTEXTUAL FILTERS, затова занапред ще ги наричам така - контекстен филтър. Спомняте си как се задават филтри в предния пост - те са зададени конкретни стойности и се задават от администратор на сайта. Контекстуалните филтри обаче се взимат динамично от съдържанието на страницата която се показва - те са динамичен (или контекстен) филтър, идват от контекста.
В едно views може да имаме няколко негови варианта, наречени дисплеи. Вариант не е най-точното определение, защото самите тези дисплеи може да са съвсем различни един от друг. Единственото ограничение в тази посока е, че ще са от един и същи тип какъвто изберем при създаването на това views - Content, User, Taxonomy ... или друг от възможните.
В тази книга са материалите от сесията ми на Drupalcamp Sofia 2012. Наред с подробно описание на резултатите, начините за постигането им, код и експорти на конкретните views-та, мотиви защо нещата са направени така както са направени, има много снимки на екрана на всеки от тези етапи. Може да задавате въпроси в коментарите към всяка страница. Също ще се радвам да споделите в коментарите Вашият опит за конкретната тема от всяка страница.
Всяка страница от тази книга представя една от точките на сесията:
Това е темата на сесията, която смятам да представе на тазгодишния http://drupalcamp.bg. Разбира се, ако събере достатъчно гласове и влезе в програмата. Други сесии, на които да присъстваш може да избереш от http://drupalcamp.bg/sessions. Или предложи своя сесия http://drupalcamp.bg/node/add/session.