Как да използвате правилата на Drupal за адаптиране на разрешения за достъп до съдържание за възли, които са по-стари от 1 седмица?

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

От какво имам нужда: след 1 седмица възелът беше създаден, разрешенията за достъп до съдържание (модулът за достъп до съдържание са инсталиран) се променят, така че само потребители с определена роля могат да виждат този възел.

Това трябва ли да се задейства на cron или какво? Или просто как да направя нещо с възли, които са по-стари от 1 седмица?

Бихте ли предоставили някои инструкции как да направите това? Тъй като съм нов в модула Правила и нямам никакви идеи.


person Somerussian    schedule 26.06.2015    source източник


Отговори (2)


Трябва да можете да направите това с Правила (вижте този въпрос, не точно това, което искате, но близо), но бих предпочел малък персонализиран модул, внедряващ hook_cron, където извличате всички възли с дата на създаване ‹ (сега - 1 седмица), и променете разрешенията за всяко от тях.

Трябва да е по-ефективен от подхода на правилото, обяснен в първата ми връзка, където трябва да преминете през всички възли при всяко изпълнение на cron. А правилата могат да бъдат доста по-досадни от писането на обикновен PHP. Предпочитам да науча API на Drupal, отколкото да прекарвам часове в кликване в интерфейса на правилата (правилата са страхотни, но са трудни).

Късмет

person Florian Motteau    schedule 27.06.2015

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

Стъпка 1: Събитие с правила

Вашият въпрос всъщност не уточнява нищо, което би могло/трябва да се използва като събитие за правила (за правилото да бъде задействано. И въпреки че е като „зависи от вашето въображение“ (всяко събитие за правила ще свърши работа), нещо, което ще работи със сигурност е да използвате модула Правила веднъж на ден. Ето как работи (съгласно коментар в брой 2495775 от собственика на модула):

  • Вие определяте час на задействане на страницата с административни настройки за този модул.
  • След това тригерът на правилото ще се изпълнява, когато задачите на cron се изпълняват за първи път след началото на този час. Действителното време на изпълнение ще зависи от времената на вашите cron задачи.

Така че това е друг начин да разберете/прочетете това:

  • „Събитието“ ще се задейства само когато се изпълнява задача на cron.
  • И това събитие ще се задейства само 1 път/ден, т.е. „следващият път, когато cron се изпълнява, след като часът на задействане е изтекъл“.

Стъпка 2: Правила Действия (и незадължителни събития)

Някои подробности за модула Views Rules (от страницата на проекта):

Предоставя изгледи директно като действия по правила и цикли за безпроблемно използване на данните за резултатите от изгледа.

Предишният цитат може да изглежда малко загадъчен (може да ви накара да мислите като „и какво, как това може да ми помогне?“). Ето защо някои повече подробности за това как да продължите напред с помощта на тези модули:

  1. Създайте изглед (използвайки Изгледи), така че да имате 1 резултат за изгледи (ред) с всички възли (на възраст поне 1 седмица), които искате да бъдат обработени, докато този изглед има полета (колони) за всичко, което е необходимо в следващите стъпки, напр. ID на възела, но евентуално и други полета. Ще имате нужда от тези полета за изглед по-късно като стойности, които да бъдат обработени от вашето правило, "за да промените разрешенията за достъп до съдържание (с помощта на content_access модул), така че само потребители с определена роля да могат да виждат такива възли" (подобно на това, което споменахте във вашия въпрос). Важно: използвайте вид показване на изгледи на "Правила".
  2. Създайте персонализирано правило, в което използвате модула Правила за изгледи, за да обхождате всеки от тези резултати от изгледи в действие по Правила, използвайки техниката на Правила, известна като "Цикъл на правилата".
  3. За всяка стъпка на итерация във вашия цикъл с правила изпълнете действие с правила, за да „направите своето“ (= да промените разрешенията за достъп до съдържание). В този момент ще разполагате с всички данни от всяка колона на вашите резултати за изгледи като така наречените параметри на правилата. Така че в този момент е лесно да адаптирате разрешенията за достъп до съдържание за възела, който обработвате в този цикъл.
  4. По желание можете също да искате да добавите каквото и да е допълнително условие(а) на правилата, също според собственото ви въображение.

Лесно, нали?

person Pierre.Vriens    schedule 10.04.2017