Sziasztok!
Még mindig a szokásos problémámmal küzdök: Van egy Kurzus tartalom, ahhoz egy node reference mezővel kapcsolódik több Oktató tartalom, az egyes oktatókhoz pedig user reference mezővel a tényleges felhasználó. Az lenne a teendő, hogy az így áttételesen kapcsolt felhasználót adott szerepkörhöz (oktató) rendeljük a Rules modul segítségével. Hogy ez organic group-os vagy normál szerepkör, az lényegében mindegy.
Ha egy kurzusnak csak egy oktatója lenne, az nem lenne gond:
Esemény: tartalom (a Kurzus) módosítása
Feltétel: Mezőkkel rendelkező entitás (Paraméter: Entitás: [node:field-oktato], Mező: field_csatolt_user)
Akció: Felhasználói szerepkör hozzáadása (node:field-targyfelelos:field-csatolt-user - szerepkör: oktató)
A probléma ott jelentkezik, ha a field-oktato mezőnek több értéke is lehet, mivel többnyire csak az egyes mezőelőfordulásokat érem el, pl. field-oktato:0, field-oktato:1 stb.
A feltételben egy VAGY blokkban egyesével megadtam a Mezőkkel rendelkező entitást az előző mintájára (pl. Paraméter: Entitás: [node:field-oktato:0], Mező: field_csatolt_user)
Az akcióban meg gondolom, egy loopot kell definiálni valahogy így: Lista: [node:field-oktato] Listaelem: Kurzus oktatói (kurzus_oktato)
Viszont itt megállt a tudományom. Ugyanis sehogyan sem tudom rávenni, hogy a listán végiglépkedve sorban betöltse a field-oktato:0, :1 stb.-hez kapcsolt field-csatolt-user felhasználót - amit ugye szerepkörhöz kellene rendelni.
Segítség
Van egy tartalomtípusom (poll), amihez entityreference-vel felhasználókat lehet rendelni (field_users).
Feladat: Ha megtekintenek egy ilyen típusú beküldött tartalmat, irassuk ki a hozzárendelt felhasználók nevét.
Megoldás:
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Még egy réteg
Köszi szépen, de az a gond, hogy nálam még egy réteg van: Kurzus tartalomtípus --> Oktató tartalomtípus --> User (közöttük reference-mezőkkel)
A szabály exportja így néz ki:
Tehát az egyedi felhasználókat a loop-ba rakott [tantargy-oktato:field-csatolt-user] adattal lehetne elérni. Amit aztán végképp nem értek, hogy a fenti példában (az üzenet kiírása) ez teljesen jól működik, viszont ez az adat csak direkt input mód helyettesítési mintái között látható, az adatkiválasztóból nem böngészhető ki. Ebből következik(?), hogy a felhasználó szerepváltása akcióban sem fogadja el.
Oké, akkor a fenti példában
Oké, akkor a fenti példában szereplő "poll" tartalomtípus marad, a "blog" tartalomtípus pedig kap egy entityreference mezőt (field_poll), amivel szavazásra lehet hivatkozni. Mindegyik mező korlátlan számú értéket vehet fel.
Feladat: Egy blogbejegyzés megtekintésekor irassuk ki a benne hivatkozott szavazáshoz rendelt felhasználókat.
Megoldás:
Szükséged lesz a Conditional Rules modulra.
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Úúú, nagyon köszönöm,
Úúú, nagyon köszönöm, sikerült!
Mondjuk a belső loop-ra nem volt szükség, ilyesformán működni látszik:
Két ciklus
Szia!
Gondolom nálad az oktató tartalomtípus elemeihez csak egy-egy felhasználó tartozhat, ezért volt elég az egy ciklus. Az én példámban pedig mindegyik mező korlátlan számú értéket vehet fel.
Csak egy kérdés a végére: miért kellett az oktató tartalomtípus? (hint)
Választ szeretnél? - Új kérdés, új téma - Tesztoldal - Trollkezelés - Frissítés
Node vs. profile
Igen-igen, annak idején dilemmáztunk rajta egy sort, hogy melyik legyen, nagyjából ezek voltak az okok.
Túl nagy?
Üdv!
Újabb probléma vetődött fel az ügyben: Egy olyan szabályra van szükség, amivel karbantarthatók az oktatók, vagyis ha egy tárgyból valaki kikerül, akkor a hozzá kötődő felhasználót leíratkoztatjuk a csoportból, ha valaki bekerül, akkor meg a megfelelő szerepkörrel felvesszük. (Közben áttértem a többek által javasolt Organic Groupra, de a szabály szempontjából ez nem nagy különbség.
A gond onnan fakad, hogy ehhez a feladathoz a következők kellenek:
Namost erre a következő monumentális szabályt rakosgattam össze:
Ezzel egyrészt az a gond, hogy a leíratkoztatás rész nem működik, a másik pedig hogy lényegében tetszőleges mennyiségű memóriát el tud fogyasztani (így igazán tesztelni se könnyű).
Abban szeretnék segítséget kérni, hogyan lehetne ezt takarékosabbra hangolni?
Bug vagy feature?
Igazából most részben működni látszik a fenti rule, ám az OG-szerepkör megvonásával van némi gond, ezzel a hibaüzenettel száll el:
Számomra ez teljességgel értelmezhetetlen, és igazából hasonlót sem nagyon találtam az OG issue-i között. Tudna valaki segíteni, hogy ez bug vagy én szúrtam el valamit a rule-ban?
ciklusok és feltételek
Nem tudom, ez közelebb visz-e a megoldáshoz, mindenesetre ezt a viselkedést se értem. Kicsit átírtam a fenti rule-t, akcióként csak üzenetet kiírva. Tehát azt kellene csinálnia, hogy egy több értéket kezelő mezőnél kiírja a régi és új értéket ott, ahol az változott:
A tesztelésnél két értéke volt a mezőnek: régi1 és régi2, utóbbit átírtam új2-re. Tehát véleményem szerint a fenti szabálynak így csak egy üzenetet kellene kiírnia, merthogy benne van a list-oktato-regi <> list-oktato feltétel.
Ehhez képest a következő hármat adta vissza:
régi2 - régi1
régi1 - új2
régi2 - új2
Ezek alapján nyilván elronthatok valamit a rule összerakásában, de nem igazán találom, hogy mit.:S
SZERK.
Ja, és ami még érdekes, hogy akkor is lefuta a szabály, amikor változás nélkül mentem el, rádásul két üzenettel tér vissza:
régi1 - régi2
régi2 - régi1
mező delta értéke egy feltételben?
Közben rájöttem, hogy az előző probléma onnan eredhet, hogy a két egymásba ágyazott ciklusban leképződik minden lehetséges kombináció, noha nekem csak a régi1 vs. új1, régi2 vs. új2 stb. összehasonlításokra lenne szükségem.
Lehet olyan feltételk készíteni, amiben a mezők aktuális delta-értékét hasonlítom össze?