Views-ban önálló linkek létrehozása

Phoere képe

Sziasztok!

Egy másik témában - egyébként jogosan - "rám pirítottak", hogy ne saját PHP-kódokat alkossak, hanem tanuljam meg rendesen a Viwest. Ok, előszedtem egy korábban megírt php-s megjelenítést és át akartam dolgozni Views-ba, de egy problémára nem találtam megoldást, ami PHP-ban egyszerűen megoldható volt.

Adott tartalomtípushoz létezik egy tartalom mező, amelybe a felhasználók közül lehet többet felvenni.
A Views-ban egy mező az adott tartalomtípusban lévő node-k címe, a másik mező a node-hoz tartozó, bejelölt felhasználók névsora (pl. field_munkatars elemei), több is bejelölhető természetesen. Azonban ezekre a nevekre mint linkekre van szükségem, amely egy másik node-ra mutat (mindegyik esetében ugyanarra) és paraméterként átadja az adott felhasználó (field_munkatars) uidjét. A másik node a kapott paraméter alapján aztán eltérő tartalmat fog megjeleníteni (ez egy következő lépés lesz).

Jelenleg addig tudtam eljutni, hogy szépen megjelennek a felhasználónevek, de az egész egyetlen linket képez. ahelyett, hogy pl. öt felhasználós névsor esetén öt önálló link lenne.

Milyen megoldás lehet erre?

Előre is köszönöm az ötleteket

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

A views-ban a "mezők" alatt az adott meződ (field_munkatars) beállító lapján találsz egy olyat, hogy "Mező megjelenítése hivatkozásként" de használhatod, a "Mező kimenetének felülírása"-t is. Bekapcsolva alul láthatod milyen "Helyettesítési minták"-at tudsz felhasználni. Itt tudod megcsinálni amit leírtál.
Ha mégsem akkor töltsd le a Views Custom Field-et

0
0

...mit tudok: http://web.termuves.hu

Phoere képe

A mezők megjelenítése hivazkozásként be van kapcsolva, de így egy linkbe rakta az összes munkatárs nevét.
A másik változattal próbálkoztam, de az sem jó, úgy is csak link jön létre.
A javasolt modult viszont megnézem, köszönöm!

0
0

Csökönyi Ferenc

d0r0ttya képe

Fel tudsz rakni esetleg egy képet a Views adott nézetének aktuális beállításairól?

0
0
Phoere képe

Egy képen nem tudom megjeleníthető-e az összes beállított paraméter. De majd megpróbálom összehozni.

0
0

Csökönyi Ferenc

eMeLA képe

Ja, több elem is ki van választva... :)

Használd az alábbi két függvényt a template.php-ban:
theme_userreference_formatter_default()
theme_userreference_formatter_plain()
(megtalálod a CCK -> modules -> userreference -> userreference.module fájlban)

1. A meződ megjelenítésénél (lásd a beállítólap alján) megadott format alapján az egyik függvényt átmásolod szőröstül bőröstül a sminked template.php fájljába.
2. utánanézel hogyan kell használni a theme_ kezdetű függvényeket (átnevezed a theme_ -et sminkneved_ -re és üríted az oldal cache-t)
3. a neked tetsző módon átformálod a függvény kimenetét

Bónusz:
Készítesz egy kis modult, amiben csinálsz egy saját formatter-t a CCK user_reference-hez.

Megjegyzés: érdemes minden modulnál rákeresni a theme_ kezdetű függvényekre, mert sok mindent meg lehet velük oldani.

1
0

...mit tudok: http://web.termuves.hu

Phoere képe

Köszi, ezt átrágom.

0
0

Csökönyi Ferenc

aboros képe

Phoere képe

Köszi, de nekem csak az Alapértelmezés, Egyszerű szöveg, Levágva lehetőségek vannak ott.
Tehát valamilyen beállítás még hiányzik.

Ami nálam be van kapcsolva:
Alapértelmezések: mező Tartalom: Munkatársak (field_munkatarsak) beállítása

  • Elrejtés, ha üres - bekapcsolva
  • Do not rewrite if empty - bekapcsolva
  • Többszörös értékek csoportosítása - bekapcsolva - különben ahán
  • Cimke - Felületi elem cimke
  • Formátum - Alapértelmezett

A többi opció nincs bekapcsolva.

Kapcsolat és Argumentum nincs beállítva.

Köszönöm!

1
0

Csökönyi Ferenc

aboros képe

a default jó lesz neked.
itt a user reference mező beállításai:
https://skitch.com/aboros/gqxy7/user-reference-mez-beallitasai-edit-view...
az eredmény nézetben, a megjelenített mező a hivatkozott user profiljára mutat:
https://skitch.com/aboros/gqxbp/eredmeny-nezet-user-reference-views-para

tudni kell, hogy ez csak akkor jelenik meg linkként, ha az aktuális felhasználónak joga van felhasználói profilok megtekintésére. egyébként sima szövegként jön.

0
0

-
clear: both;

Phoere képe

Asszem rájöttem, hol hibáztam. Ehhez kellett ez a kép és a theme függvényekbe való betekintés is.

Köszönöm!

0
0

Csökönyi Ferenc

aboros képe

elárulod az utókor számára, hogy mi volt a megoldás? az tök hasznos lesz később, hogy nem csak úgy vége van a szálnak, hanem ott egy eredmény. mikor majd másnak hasonló gondja lesz, örülni fog.

0
0

-
clear: both;

Phoere képe

Még nem oldottam meg, csak rájöttem egy hibára. A munkatársak mező nem felhasználó típus volt, hanem szöveg és a választható értékek egy php kóddal lettek beállítva. (Valószínűleg, az elején nem volt aktíválva a User reference modul, később ezt megtettem). Tehát most először újra fel kell építeni a tartalmat íly módon.

A képen látható "link" választás nálam így sem jelent meg alul. Rész siker, hogy az egyes elemek önálló linkek most már, de a user adatlapra visznek. Nekem pedig nem ez fog kelleni, hanem egy node-ra mutató link, ami paraméterben viszi a user idjét. De ezen egy darabig elrágódom.

A feladat szépsége, hogy van olyan - immár tényleg szöveges mező - mint külső munkatársak, akik nem felhasználók. És rájuk is kell készíteni egy nézetet, hogy egy-egy személy mely projectben dolgozik.
Tehát a feladatra nem lesz jó, amit a felhasználókra kitalálok.

Röviden: még nem oldottam meg a problémámat, csak talán előre léptem. De ha úgy lesz, mindenképpen megosztom.

0
0

Csökönyi Ferenc

Phoere képe

Akkor tehát az utókor számára - bár a megoldás nyilván finomítható:

eMeLa megoldása alapján a template.php-ban létrehoztam a theme-hez a function sajattheme_userreference_formatter_plain($element) függvényt, amelyben az output ez lett:
$output = '<a href="?q=node/40&mid='.$account->uid.'">'.$account->name.'</a>'

Ennek szépséghibája, hogy ez egy adott node-ra van beállítva, elvileg előfordulhat, hogy más helyen másik node-hoz kellene eljutni. Tehát a függvénybe be kell építeni egy cél megadási lehetőséget, ha ez lesz a feladat. De most működik az, amit akartam.
Köszönöm a segítségeket.

0
-1

Csökönyi Ferenc

szantog képe

Akkor most regisztrálj egy ilyen usernévvel:

<script>alert('XSS vagyok')</script>

És már fel is törted az oldaladat.

Szerintem egy külön témában írd le pontosan a megvalósítandó célt, mert ebben a kódban, amit beírtál, kb az $outputon kívül minden szarvashiba, amíg pedig alapvető dolgokat nem ismersz a drupalban, kerüld a kódolást

2
0

----
Rájöttem, miért kérdezek olyan ritkán a drupal.hu-n. Amíg szedem össze az infokat a kérdéshez, mindig rájövök a megoldásra.

eMeLA képe

Hát, én próbáltam, de nem engedte :)

The username contains an illegal character.

Mindamellett a l() függvényt érdemes lenne tanulmányozni... ;)

0
0

...mit tudok: http://web.termuves.hu

Phoere képe

Ez viszont talált, süllyedt. :) Köszi

0
0

Csökönyi Ferenc

Phoere képe

Tanulmányoztam. :)

$link = 'node/40';
$option = array('query' => 'mid='.$account->uid);
$output = l($account->name, $link, $option );

:)

Köszi.

1
0

Csökönyi Ferenc

Phoere képe

Ez biztos így van, viszont az oldalra nem lehet regisztrálni és a felhasználó név sem módosítható.

A célt leírtam az elején: a fieldben lévő nevek önálló linkként való megjelenítése, ahol minden link ugyanazon oldalra mutat, de paraméterként átadja az adott felhasználó id-jét.

De azért köszi az észrevételt.

0
0

Csökönyi Ferenc