views: exposed filter formatieren?
am 07.10.2008 - 11:56 Uhr in
hallo zusammen,
ich habe eine ansicht mit vier verschiedenen hervorgehobenen filtern erstellt, funktioniert einwandfrei, aber: die hervorgehobenen filter (multiselect-boxen) werden alle in einer tabellen-reihe nebeneinander (plus absenden-button) dargestellt. dies zerschiesst mir total mein layout 600px.
wie kann ich (per css?) diese reihe "aufbrechen" und jeweils zwei filterauswahlen untereinandersetzen?? ich weiss gar nicht wo die tabelle generiert wird.
zweite frage wäre; ob es auch möglich ist, die hervorgehobenen filter und view-ergebnisse zu trennen, sprich z.B. ein suchfeld (view-fastsearch) und multiselect-filter auf der homepage, ergebnis aber auf einer andreen seite. wie liesse sich das realisieren?
besten dank
patcher
- Anmelden oder Registrieren um Kommentare zu schreiben
hat hier niemand ne
am 09.10.2008 - 19:34 Uhr
hat hier niemand ne idee?
ist das ein thema für node.tpl.php? als php-laie habe ich mich da bisher nicht rangetraut...
danke
patcher
_______________________________
http://www.elternjobs.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
so nun habe ich auf
am 10.10.2008 - 10:13 Uhr
so nun habe ich auf drupal.org noch einen ersten hinweis zu meiner frage gefunden:
"views module: theming exposed filters" http://drupal.org/node/79302
aber nun stehe ich als anfänger vor dem nächsten problem: wie bringe ich eine template.php zum laufen?
ich arbeite mit dem chameleon-theme. bisher hatte ich keine template.php.
folgende fragen drängen sich mir auf:
gehört die template.php richtigerweise in das verzeichnis /themes/chameleon oder /themes/engines/phptemplate ??
habe nun aus obigem threat unterschiedliche codes übernommen, aber es passiert gar nichts. muss die template.php irgendwo verknüpft werden??
müssen noch andere infos in die datei?
danke
patcher
_______________________________
http://www.elternjobs.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance
Bei mir klappt das
am 10.10.2008 - 11:29 Uhr
Bei mir klappt das folgendermaßen. In template.php, die in meinem Theme-Ordner liegt (sites/all/themes/meintheme). Dein Theme in sites/all/themes zu legen ist empfohlen, genauso wie alle Nicht-Core Module in sites/all/modules zu legen. Dann hast du bei Updates und Backups weniger Schwierigkeiten. So also ich habe folgenden Code in der template.php:
function phptemplate_views_filters($form) { //this call overrides all views filters so I need a condition
$view = $form['view']['#value'];
if ($view->name == 'VIEWNAMEHIER'){ //so I used the view's name, in this case the view I want to do refactoring is 'vista'
foreach ($view->exposed_filter as $count => $expose) {
$row[] = drupal_render($form["op$count"]) ;
$box[] = drupal_render($form["filter$count"]);
$label[] = $expose['label'];
}
$row[] = drupal_render($form['submit']);
$label[] = ''; // so the column count is the same.
$title = $view->page_title;
return _phptemplate_callback('views-filters-VIEWNAMEHIER', array('title' => $title, 'row' => $row, 'box' => $box, 'label'=>$label));
// I use a callback to a tpl called views-filters-VIEWNAMEHIER.tpl.php
}
else{ // in the case it isn't 'vista' it goes through the normal flow as defined in views.module
foreach ($view->exposed_filter as $count => $expose) {
$row[] = drupal_render($form["op$count"]) . drupal_render($form["filter$count"]);
$label[] = $expose['label'];
}
$row[] = drupal_render($form['submit']);
$label[] = ''; // so the column count is the same.
// make the 'q' come first
return drupal_render($form['q']) . theme('table', $label, array($row)) . drupal_render($form);
}
}
Beachte bitte, dass du in diesen Code anstelle von VIEWNAMEHIER den Namen deines Views angeben musst.
Und dann habe ich eine Datei im selben Ordner (sites/all/themes/meintheme) namens views-filters-VIEWNAMEHIER.tpl.php und dort kommt dein spezielles HTML rein und an die richtigen Stellen den Code, der die Filter-Felder ausgibt, also z.B.:
<h3><?php echo $label[1] . ': '; ?></h3>
<p><?php echo $row[1]; ?></p>
Die Zahl 1 ist Feld 1 im exposed filter. Weitere Felder gibst du mit weiteren Zahlen, also 2 und 3 usw. aus. Musst ausprobieren, welche Felder dann kommen, ich erinnere mich nicht mehr woher man das kriegt.
Viel Glück :-)
-------------------------------------------------
I don't know the question but the answer is Views
undpaul
Longevity Insights from Top Health Podcasts
so ähnlich habe ich es auch
am 10.10.2008 - 11:59 Uhr
so ähnlich habe ich es auch realisiert, nur alles in einer datei.
mein problem war, das mein theme "chameleon" nicht mit phptemplate zusammenarbeite und ich daher alles direkt in das chameleon template schreiben musste:
function chameleon_views_filters($form) {
$view = $form['view']['#value'];
$number_exp_filters = count($view->exposed_filter);
$i = 0;
$output='<table border="1" width="">';
foreach ($view->exposed_filter as $count => $expose) {
$i++;
$label = '<div class="form-element-label">'.$expose['label'].'</div>';
$formelement = drupal_render($form["op$count"]) . drupal_render($form["filter$count"]);
$filter ='<div class="form-element-'.$count.' form-element-'.$expose['label'].'">'.$label.$formelement.'</div>';
if ($i % 4 == 1) {
$output .= '<tr><td colspan="2">'.$filter.'</td></tr>';
}
else
{
$output .= '<td width="33%">'.$filter.'</td>';
}
}
if ($number_exp_filters % 4 != 0) {
$output .= '<td></td></tr>';
}
$output .= '<tr><td colspan="3">' . '<div class="form-submit-button">' . drupal_render($form['submit']) . '</div>' . '</td></tr>';
$output .= '</table>';
return $output . drupal_render($form);
}
_______________________________
http://www.elternjobs.de | Vereinbarkeit von Beruf & Familie | Work-Life-Balance