Node reference userenként csak egyszer

thamas képe

A felhasználó beküld egy "kedvenc gyümölcs" típusú tartalmat, ami tartalmaz egy node reference hivatkozást a "gyümölcs" tartalomtípusra. A hivatkozható node-okat egy view szolgáltatja.

Azt szeretném, hogy mikor újabb "kedvenc gyümölcs"-öt küld be a felhasználó, a kiválasztható "gyümölcs"-ök közöt (a node reference listában) ne jelenjenek meg azok, amelyeket korábban már kiválasztott.

Elviekben ez úgy nézne ki, hogy nem(!) jelenítem meg azokat a "gyümölcs" típusú tartalmakat, amelyekre már hivatkozik "kedvenc gyümölcs" típusú tartalom és(!) a hivatkozó tartalom szerzője az aktuális user.

Vagyis a Views Haladó beállításainál kellene a Kapcsolatokkal játszani, de (egyelőre) nem jöttem rá, mi a jó megoldás.

Melyik modulhoz, modulokhoz kapcsolódik a téma?: 
Drupal verzió: 
Den képe

Views pre render hookban intézd el, hogy ne legyen ott, amit egyszer már választott.

0
0
Den képe

Mert megszóltak, hogy nem elegáns, ezért felépítettem egy nézetet:

page + hivatkozás article típusra. A nodereferencia neve field_ref_to_article.

1; létre kell hozni egy nézetet, ami az oldalakat (neked gyümölcs) listázza

2; a nézedeknél a kapcsolatoknál (relationship) hozzá kell adni a nodereferencia mezővel csatolt kapcsolatot: nem kötelező a kapcsolat (ha kötelező, csak azokat listázza, ahol már van kapcsolat)

3; a nézet szűrőknél (filter criteria) beállítod, hogy azt listázza, ahol a referencia üres.

Örülsz és elmented a nézeted. :)

1
0
thamas képe

Listázásnál nem azt mondjuk meg, hogy mit ne listázzon a lekérdezés, hanem azt, hogy mit igen.

Vagyis a fentiek pontosítása úgy hangzik, hogy

jelenítsük meg azokat a gyümölcsöket, amelyekre

1. nem hivatkozik kedvenc gyümölcs vagy(!)

2. hivatkozik kedvenc gyümölcs és(!) a hivatkozó kedvenc gyümölcs szerzője nem az aktuális felhasználó.

Az 1. pontban foglalt feltétel megvalósítását írta le Den.

A 2. ponthoz fel kell vennünk még egy kapcsolatot: Tartalom:Szerző és ennek a kapcsolatnak a beállításainál megadjuk, hogy a kapcsolata a hivatkozó kedvenc gyümölcs. (Vagyis azt vizsgáljuk, hogy a hivatkozó kedvenc gyümölcsnek ki a szerzője.)

A views 3-ban már lehet csoportokba rendezni a szűrési feltételeket és a csoportok közti kapcsolatot is meghatározni. Itt erre lesz szükség.

Az első csoportban: típus: gyümölcs, hivatkozik rá kedvenc gyümölcs: nem.
A második csoportban: típus: gyümölcs, hivatkozik rá kedvenc gyümölcs: igen, jelenlegi felhasználó (kapcsolata: szerző): nem.

A két csoport közt a kapcsolat: "vagy" a csoportokon belül (az alapértlmezett) "és".

Ez így már majdnem jó. Egy a probléma. Ha nem csak egy user van, aki kedvenc gyümölcsöt küldhet be, akkor a lista szűkítése nem fog megfelelően működni. Mert ha pl. Béla és Géza is kiválasztja kedvenc gyümölcsnek az Almát, akkor mindkettejüknek látszani fog a következő beküldésénél is az Alma a listában. Ugyanis 2. feltétellel csak azt zártuk ki, hogy az aktuális felhasználó által hivatkozott gyümölcs ne jelenjen meg. De ha más is hivatkozott a gyümölcsre, akkor megjelenik, mert azt nem zártuk ki.

Tehát a 2. feltételnek így néz ki pontosan: hivatkozik 1 vagy több kedvenc gyümölcs és(!) a hivatkozások közül egyiknek sem a szerzője az aktuális felhasználó.

No ezt nem tudom hogy lehet megoldani…

0
0

Üdvözlettel:
Hajas Tamás

thamas képe

Nálam még tovább bonyolítja a helyzetet, hogy az egyes tartalmakhoz való hozzáférést korlátozni kell és emiatt(??) a referencia lista csak user 1-nek jelenik meg, más felhasználónak nem, ha a view-ban a kapcsolatok közt a hivatkozó node-ok szereplenek.

0
0

Üdvözlettel:
Hajas Tamás

aboros képe

persze egyátalán nem vagyok benne biztos, hogy ez így működni fog.

pakoljunk bele még flag meg rules modult, hamár lúd legyen kövér. a gyümölcs tartalom típusban legyen egy flag, "felhasználta". ezt egy nem-globál flag és egyik csoport se használhatja. :) itt van a kétségem, hogy ettől még a következő lépés működni fog e.

legyen egy rule, ami tartalom mentésekor, ha a tartalom típusa kedvenc gyümölcs, akkor a szerző nevében ráteszi a hivatkozott gyümölcs nodera a "felhasználta" flaget. (nem tudom eldönteni hirtelen, hogy ez itt eltörik e amiatt, hogy a flag beállításaiban az van, egyik csoport sem használhatja, de az meg szükséges, hogy kézzel ne tudja birizgálni ezt a flaget. ha elrejtem csak, az nem elég, mert gyalog hívhatja a flag urlt és akkor kijátssza a szisztémát. ezt is meg lehetne kerülni de akkor már tényleg rémálom bonyolult lesz a kerülőút)

innen már gyerekjáték, a view ami a node reference mezőt eteti, azokat a gyümölcs tartalmakat mutatja, amiket az aktuális user nem jelölt még meg a "felhasználta" flaggel.

a flag leszedését meg szintén egy rule intézi, ha esetleg törölnénk a kedvenc gyümölcs típust, akkor újra felszabaduljon az a usernek.

vagy x terv, aka special tactics, írunk egy modult, vagyhát vki ír.. :D

0
0

-
clear: both;