Hellói Mindenki!
A következőkben kérem segítségteket:
Casetarcker modult használok porjektek és azok feladatainak nyilvántartására. Csináltam egy view-t, amiben az egy adott projekthez tartozó feladatok jelennek meg táblázatban.
Erre az oldalra szeretnék kitenni egy linket, hogy új feladat hozzáadása az adott projekthez.
A projekt azonosítója (pid) a devel szerint a következő helyen van:
views-exposed-form.tpl.php
form (array)
pid (array)
#post(array)
pid
... és ezt a pidet kell a link végére biggyeszteni.
Próbálkozom a blokkban php-vel, de egyelőre még nem találtam meg a megoldást.
Előre is köszi!
Melyik modulhoz, modulokhoz kapcsolódik a téma?:
Drupal verzió:
Fórum:
pontosan hogy is?
A pid az honnan jön?
Fix, akkor nem kell aggódni, argumentum? Akkor azt is könnyedén elő lehet szedni.
Szóval áruld el honnan jön az a pid.
pp
Palócz István
https://palocz.hu | https://tanarurkerem.hu
ahonnan a pid jön
A pid tulajdonképp a projekt típusú node id-ja. A node teljes nézetében van egy link, ami meghívja egy paraméterrel az adott view-t a következőképpen: view_utvonal?keys=&pid=166. A view, pedig a projekt (pid) felfedett szűrőt már így állítja be, és így hozza az adott projekthez tartozó összes feladatot. Ami innen kell, az a 166-os szám, a node/add/feladat/166 linkhez.
Megnézem a másik javasolt megoldási módot és visszajelzek.
Köszi
Gazsesz
Ha jól értem, van egy
Ha jól értem, van egy felfedett szűrőd, amiben kiválasztasz egy projektet, és a view listázza az ahhoz a projekthez tartozó feladatokat, és te emellé a lista mellé szeretnél egy linket, amelyen gyorsan hozzá lehet adni új feladatot az éppen kiválaszott projekthez?
Ha így van, szükséged lenne egy egyedi template-re. A view-nál a Basic Settingsben van egy Theme: Information rész. Innen neked a Display output kell, hozz létre a sminked mappájában egy fájlt valamilyen néven, amit mellete találsz (pl. views-view--VIEWNEVE.tpl.php). Ha ráklikkelsz itt a Display outputra, akkor ki tudod másolni a kódot, ami alapértelmezetten kerül ebbe a template-be. Ezt másold bele a létrehozott fájlodba, ebben tudsz módosítani. Üríteni kell a smink regisztrációs tárat, hogy tudomást szerezzen erről az új tpl-ről a sminkfeldolgozó.
A $view->exposed_input tömbben lesznek az adatok a felfedett szűrőben kiválasztott elemről. Ezt kellene megnézned (print_r()-rel vagy kpr()-rel), és utána már össze tudod rakni a linket.
Igen jól értetted.
Köszi a választ. Közben rájöttem, hogy nem is kell új tpl fájl, hisz elegendő a footer-be beírni a php kódot, annak ugyanaz a hatása. Ettől függetlenül továbbra sem sikerült még az a változót kiíratni (lehet, hogy a hiányos php ismeretem miatt).
Kiírattam a $view változót, aminek egy részlete alább:
view Object ( [db_table] => views_view [base_table] => node [args] => Array ( ) [use_ajax] => [result] => Array ( [0] => stdClass Object ( [nid] => 80 [casetracker_case_pid] => 67 [node_title] => Google Analytics kód lekérése [comments_subject] => Kód lekérve [comments_cid] => 27 [comments_nid] => 80 [comments_timestamp] => 1262783394 [node_data_field_deadline_field_deadline_value] => [node_type] => casetracker_basic_case [node_vid] => 81 [casetracker_case_assign_to] => 6 [casetracker_case_case_status_id] => 5
A vastagított részre, illetve abból a 67-es számra lenne szükségem.
Próbálkoztam a devel modul által megjelenített változók szerint is kiíratni az alábbiak szerint:
print 'teszt'.$view['exposed_form']['submit']['#pid']['pid'];
print 'teszt'.$view['form']['submit']['#pid']['pid'];
de így sem sikerült. Hol lehet a probléma?
Gazsesz
Ez így más
Nyilván más itt a
$view
tartalma, mint egy tpl-ben, amit mondtam.Ha már semmiképpen nem akarsz saját tpl-t - amivel nem értek egyet, de mindegy :) - akkor itt valahogy így olvashatod ki, amit akarsz:
(Ezt nem próbáltam ki, csak az alapján próbálkoztam, amit bemásoltál.)
Egyébként akár még a
$_GET
-ből is megtudhatnád így:$_GET['pid']
Nagyon köszi!
Végül ez lett a megoldás:
$view->result[0]->casetracker_case_pid
Viszont, ami érdekesség, hogy a footerbe betéve nem működött, csak ha beraktam a tpl fájlba. :)
Gazsesz
Szuper!
De ott már van a
$view->exposed_input
tömb is, ami szebb, de ez már részletkérdés. :)