2008-10-27 10 views
11

Ich habe die Module Profile, CCK und Views2 auf einer Drupal 6-Site installiert. Ich habe dem Benutzerprofil ein Zeichenfolgenfeld hinzugefügt. Ich kann leicht über Preset-Werte, durch die Ansichten GUI-Builder, sehr schön filtern. Ich möchte jedoch, dass die Filterkriterien basierend auf anderen Umgebungsvariablen (nämlich $_SERVER['SERVER_NAME']) dynamisch festgelegt werden.Wie erstelle ich einen benutzerdefinierten Filter für das Drupal View-Modul?

Gibt es eine grundlegende 'How-to-Write-a-custom-Drupal-Ansichten-Filter' irgendwo da draußen? Ich habe durch die Dokumentation gesucht, aber es ist nicht offensichtlich für meine einfache Meinung, wie es geht.

Antwort

0

Es besteht die Möglichkeit, an der Art Filter für meine eigene Website installiert sah zu haben, dass die Filter auf einig Datenbankfeld zu basieren haben, wobei in diesem Fall, was Sie versuchen ist nicht möglich, zu erreichen. Es scheint, dass die Filter die WHERE-Klausel der generierten SQL-Abfrage bereitstellen.

alles, was gesagt haben, wenn Sie es weiter verfolgen wollen, ist Ihre beste Wette mit einem Modul zu starten, die bereits Filter für Ansichten bietet. Es gibt Filter mit Ansichten für das Knotenmodul; Alternativ können Sie auch die audio module betrachten, die auch einige Filter bietet. Darüber hinaus kann das Posten in den Drupal-Foren oder der Support-Liste ein anderes Modul aufzeigen, mit dem Sie erreichen können, was Sie versuchen.

0

ja Sie können es tun. Versuchen Sie es mit dem Modul "Views Filter Block". Sobald Sie den Block aktivieren .. extrahieren Sie das HTML des Blocks von "Quelltext anzeigen" beim Anzeigen der Seite. Jetzt deaktivieren Sie den "views filter block" ... erstellen Sie Ihren eigenen benutzerdefinierten Block .. Fügen Sie den Code dazu mit welcher CSS Sie es schön aussehen lassen möchten. Innerhalb dieses Codes verwenden Sie php, um dynamisch anzugeben, was Sie für die anfängliche Auswahl des Filters haben möchten. Stellen Sie sicher, dass Sie tatsächlich das Feld auswählen, auf dem der Filter basiert. Verwenden Sie dann im benutzerdefinierten PHP-Block php code, um IF-Bedingung zu schreiben, um nach dem Wert von server_name zu suchen und der Filtervariablen den richtigen Wert zuzuweisen.

Dort vielleicht andere (vielleicht sogar bessere) Möglichkeiten, es zu tun, um tatsächlich ein Modul zu schreiben, um den Filter zu verwenden. Also das ist nur ein Vorschlag. Auch geben "Views PHP Filter" einen Versuch. Ich habe es noch nicht verwendet, aber klingt wie es eine Aufnahme wert ist .

Benutzer
  • von drupal (drupal-Benutzername: drupdrips)
3

Sie können yo erstellen Ihre eigene Funktion wie folgt, um Ihre eigenen Filter hinzuzufügen.

<?php custom_views_embed_view($view_name, $display_id) { 
$view = views_get_view($view_name); 
$view->set_display($display_id); 
$id = $view->add_item($display_id, 'filter', 'node', 'created', 
         array('value' => array('type' => 'date', 'value' => date('c')), 'operator' => '<=')); 
return $view->execute_display($display_id); 
} 
?> 
+0

@AbhiG haben Sie diese Methode jemals versucht? Das scheint ein interessanter Code zu sein. Ich sollte meinen Code in den Operator legen und '<=' richtig ersetzen? –

0

Sie viewsphpfilter Modul verwenden können, die durch node id. Filteransichten ermöglicht jedoch gibt es einen Patch, wenn Sie dies für verlängern müssen user views