[gelöst]Views Filter mit php manipulieren
Eingetragen von ozon (523)
am 23.12.2007 - 10:54 Uhr in
am 23.12.2007 - 10:54 Uhr in
Hallo,
da Localizer micht arbeiten will, möchte ich eben selber den Filter von Views manipulieren.
Doch wo trage ich den Code dazu ein und wie könnte dieser aussehen?
Wenn ich auf export gehe, finde ich was ich ändern möchte;
<?php
$view->field = array (
array (
'tablename' => 'localizernode',
'field' => 'localizer_contentlocales',
'operator' => 'is',
'options' => '',
'value' => 'de',
),
);
?>
Value möchte ich mittels if ändern.
Jedoch wie gesagt, wohin mit dem Code.
- Anmelden oder Registrieren um Kommentare zu schreiben
Anstatt filter kannst du die
am 23.12.2007 - 12:10 Uhr
Anstatt filter kannst du die Argumente benutzen. Das ist sozusagen nichts anders als dynamische Filter. Da gibts den "Argument Handling code".
» forward-media.de Drupal Entwicklung | Drupal Tutorials
Folgendes habe ich nun im
am 23.12.2007 - 15:10 Uhr
Folgendes habe ich nun im Argumentfield eingetragen.
global $locale;
if ($locale == "de")
{
$view->field = array (
array (
'tablename' => 'localizernode',
'field' => 'localizer_contentlocales',
'operator' => 'is',
'options' => '',
'value' => 'de',
),
);
}
else
{
$view->field = array (
array (
'tablename' => 'localizernode',
'field' => 'localizer_contentlocales',
'operator' => 'is',
'options' => '',
'value' => 'en',
),
);
}
Leider hab ich jetzt nur noch eine leere Site.
Was könnte ich falsch gemacht haben?
--
ozon - http://mumble-tower.de | DVC - Der Voice Chat für Drupalisten | Jabber: ozon@jabber.ccc.de
Gelöst
am 23.12.2007 - 15:55 Uhr
Das ja war ja doch einfacher als ich gedacht habe ;).
Den Localizer Filter hinzugefügt.
Folgenden Argument Code Verwendet;
global $locale;
$view->filter[0]['value'] = $locale ;
$view->is_cacheable = 0;
return $args;
--
ozon - http://mumble-tower.de | DVC - Der Voice Chat für Drupalisten | Jabber: ozon@jabber.ccc.de
also ich bin kein views
am 23.12.2007 - 16:00 Uhr
also ich bin kein views spezialist und hab keine patentlösung aber nen ansatz:
schreib mal in das feld argument handling code folgendes:
global $user;
if ($user->uid==1) drupal_set_message('<pre>' . print_r($view, TRUE) . '</pre>');
damit kannst du dir das views objekt anzeigen, zu dem zeitpunkt wo es gebaut wurde, und alles noch ändern. wenn ich mir das so anschaue dann müsste dein code eventuell eher so ausschauen:
global $locale;
if ($locale == "de") {
$view->filter[] = array(
[vid] => deine_view_ID
[tablename] =>
[field] => localizernode.localizer_contentlocales
[value] => Array
(
[0] => 'de'
)
[operator] => OR
[options] =>
[position] => 2
[id] => localizernode.localizer_contentlocales
)
}
aber wie gesagt nur ein ansatz. das oben erwähnte
global $user;
if ($user->uid==1) drupal_set_message('<pre>' . print_r($view, TRUE) . '</pre>');
sollte aber weiterhelfen...
» forward-media.de Drupal Entwicklung | Drupal Tutorials
da war ich wohl zu langsam
am 23.12.2007 - 16:02 Uhr
da war ich wohl zu langsam mit meiner antwort ... ich dachte localizer hat keine views integration, deshalb der komplizierte ansatz ;_)
» forward-media.de Drupal Entwicklung | Drupal Tutorials
derjochenmeyer@drupal.org
am 23.12.2007 - 16:07 Uhr
da war ich wohl zu langsam mit meiner antwort ... ich dachte localizer hat keine views integration, deshalb der komplizierte ansatz ;_)
Doch, Localizer sollte IMHO selber Problemlos mit Views umgehen können. Jedoch funktionierte es bei mir nicht.
Ich habe alle Nodes gesehen (also in allen Sprachen).
Zwar kann ich nach $sprache filtern - jedoch musste man sich für eine Sprache entscheiden - deswegen der Umstand mit dem Argument Code.
Tabellen Labels werden jetzt auch schon übersetzt - dank t(...) Ein par fehlen mir noch.
Aber mein Views ist fast komplett multilingual. Nice....
Trotzdem besten Dank für die Bemühungen.
--
ozon - http://mumble-tower.de | DVC - Der Voice Chat für Drupalisten | Jabber: ozon@jabber.ccc.de