view filter id

fecske95 képe

view adatiból hogy tudom kiemelni a beállított filter id-jét ami történetesen egy term és mindezt a view fejlécében php+sql lekérdezésben felhasználni?

$handler->override_option('filters', array(
'tid' => array(
'operator' => 'or',
'value' => array(
'110' => '110',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'type' => 'select',
'limit' => TRUE,
'vid' => '4',
'id' => 'tid',
'table' => 'term_node',
'field' => 'tid',
'hierarchy' => 1,
'relationship' => 'none',
'reduce_duplicates' => 0,
'override' => array(
'button' => 'Felülírás',
),
),
));

tehát 'value' => array('110' => '110',), erre volna szükségem a fejlécben.

Köszönöm!

Drupal verzió: 
aboros képe

mit szeretnél csinálni? lehet van más módja.

0
0

-
clear: both;

fecske95 képe

AJAX használata: Nem - és sajnos nincs az url-ben semmi az
útvonal opcióban meghatározotton kívül.
a kifejezés leírását szeretném elérni ami működik is ha beírom az azonosítót a php kódban a sql lekérdezésbe csak változóba szeretném tenni és ehhez valahonnan kinyerni...

0
0
Illyés Edit képe

Pl. saját modulban:

<?php
function MYMODULE_views_pre_render(&$view) {
  $terms = array_keys($view->display['DISPLAY_NAME']->display_options['filters']['tid']['value']);
  $term = taxonomy_get_term($terms[0]);
  $title = check_plain($term->name);
  $view->display_handler->set_option('header', $title);
}
?>

Bár ugyanezt többnyire a Views beépített eszközeivel is meg lehet oldani (argument handling), csak ügyesen kell összekattintgatni.

0
0
fecske95 képe

Hogy szedem ki ebből a többszintű gyönyörűségből tid-t? A $view változó tartalmazza a és ki is listázza kérésre az view objet adott nézetre vonatkozó összes adatát...

$viewName = 'adott_view_neve';
 
$view = views_get_view($viewName);
 
echo "<pre>" . print_r (.$view->filter[1]['value'][0]) . "</pre>";  ide mit írjak??
0
0
fecske95 képe

Megvan... Köszönöm mindenkinek a jó szándékát segítőkészségét. Nem kell feltétlenül modulba vinni a dolgot... de köszönöm a tippet sokat segített. Ezzel és hasonló kóddal bármit ki lehet szedni a pl. fejlécen a view object -ből.
Biztos van egyszerűbb módszer is de ez most azt csinálja amire szükségem van... :-)

$viewName = 'nezeted_neve';
$view = views_get_view($viewName);
$tid =  array_keys($view->display['default']->display_options['filters']['tid']['value']);
 
$query = 'SELECT tid, vid, name, description, weight FROM {term_data} WHERE tid = '.$tid[0].'';
$result =  db_query($query);
 
  while ($rowa = db_fetch_object($result)) {
 
         $description=$rowa->description;
 
  print "<br /><br /><strong>".$description."</strong><br>\n";
 
  }
0
0
york képe

Ilyet nem csinalunk!!!

$query = 'SELECT tid, vid, name, description, weight FROM {term_data} WHERE tid = '.$tid[0].'';
$result = db_query($query);

Helyes kod:

$query = 'SELECT tid, vid, name, description, weight FROM {term_data} WHERE tid = %d';
$result = db_query($query, $tid[0]);

0
0
fecske95 képe

Köszönöm! Megfogadom az észrevételedet.
Hogy őszinte legyek életem első drupálos kódja a fönti... :-)
Az sql dogokat meg még gyakorlnom kell.

0
0
Illyés Edit képe

Ha nem akarod modulba tenni, és design szempontból nincs akadálya, akkor inkább használd az aboros által alább leírt blokkos megoldást. Ezt gondolom a view fejlécbe tolod be, és az úgy nem valami szép. A tid, vid és name értékekre meg nincs szükséged a $query-ből, felesleges őket lekérdezni.

0
0
fecske95 képe

OK ezt is megfontolom... Azt értem, hogy a programozói érzékenységet sérti ez a megoldás, de hát pont a programozók tették bele a Drupálba ezeket a php kapukat...
Egyébként elfogadom a méltatlankodást...
A többi mezőnévre valóban nincs szükség (esetleg a name??) a kód tesztnél kerültek bele természetesen kivehetők.

Egyébként megcsináltam a kód alapján amit fönt közöltél a modulos változatát is...
Köszi szépen... :-) Sokat tanulok tőletek...

0
0
fecske95 képe

modulként ezzel a sorral valami baja van
$terms = array_keys($view->display['default']->display_options['filters']['tid']['value']);

lefut a meghíváskor és kiírja a várt eredményt de ezzel a hibaüzenettel...
warning: array_keys() [function.array-keys]: The first argument should be an array in /home/valaki/public_html/modules/termid/termid.module on line 12.

0
0
aboros képe

nem egyszerubb 10-12 kattintassal csinalni egy viewt? karbantartani/valtoztatni is sokkal konnyebb lenne..

0
0

-
clear: both;

Illyés Edit képe

Ha jól értem, a view headerbe kell neki behívni a taxonomy descriptiont. Oda nem tudja betenni a blokkot PHP nélkül. Bár az is igaz, hogy egyszerűbb lenne az általad javasolt view blokkját module_invoke()-kal behívni, és akkor nem kell a view-ban halászni.

0
0
Illyés Edit képe

Hát akkor úgy tűnik, neked a $view->display['default']->display_options['filters']['tid']['value'] az nem egy tömb. :) Nézd meg print_r()-ral, hogy hogyan épül fel a $view->display['default']->display_options['filters'], vagy a $view->display['default']->display_options['filters']['tid']. Sajnos a Views programozása ezzel jár, hogy időnként ilyen óriási tömbökből kell kihalászni, ami kell. Még jobb, hogy a fejlesztő időnként át is rendezi ezeket a tömböket, és elfelejti bejelenteni, a webhelyek meg lehalnak. :) Ettől izgalmas a Drupal fejlesztés. :)

0
0
york képe

Ettől izgalmas a Drupal fejlesztés. :)

Nem ettol... :)
Szerintem egyaltalan nem jellemzo a drupal modulokra, hogy a komoly valtozasokat figyelmeztetes nelkul tennek bele.

0
0
aboros képe

http://www.ceu.hu/about/organization?unit_type=565
tessek, ez egy exposed filterrel szurt nezet url -je... benne van a filterben beallitott ertek.

csinalhatsz egy nezetet, ami "term" alapu (az a base table) es egy argumentumot var ami a term id es a term descriptiont jeleniti meg mezokent. az argumentumnal if not present » provide default argument » php code, es oda irsz egy mini snippet ami kiszedi az urlbol az idt es azt visszaadja. ez egy blokk megjelenitot hasznal, azt beteszed egy regioba.

meg tudod mutatni ezt valahogy? elerheto valahol?

0
0

-
clear: both;

Illyés Edit képe

Gondolom nincs a szűrője felfedve, azért nincs infó az URL-ben.

0
0
Bálint képe

Ebben az esetben az Űrlap felfedése blokkban beállítást Igenre kell állítani, és máris ott lesznek. Aztán a blokkot meg nem kell berakni sehova, ha nincs rá szükség.

0
0
fecske95 képe

Igen ez így volt viszont szűrőt nem szeretném megjeleníteni az oldalon...

0
0
fecske95 képe

OK ezt kipróbálom. Az oldal sajnos még nem elérhető. Ha view object- tömből valahogy ki tudnám szedni az tid-t tulajdonképpen megoldódna a problémám. A szűrőt nem szeretném megjeleníteni az oldalon.

0
0
aboros képe

akkor még egyszerűbb. csinálsz egy másik nézetet, amin nem "node" hanem "term" alapú. (létrehozás első lépésénél a term lehetőséget választod). hozzáadsz egy filtert, ugyan azt, mint a másik nézetednél. mezőket jelenít meg, egy mezőt, a term descriptiont. egy blokkot állít elő. ezt a blokkot berakod a neked tetsző helyre, beállítod, hogy csak a másik nézeted útvonalán jelenjen meg, kész.

0
0

-
clear: both;