Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

View-Ausgabe mit eigenem PHP-Code weiter einschränken

Eingetragen von DrupalFan (1646)
am 20.01.2010 - 18:22 Uhr in
  • Views
  • Drupal 6.x

Es gibt schon ein Modul dafür (viewsphpfilter), leider gibt es für dieses Modul keine Doku und man weiß nicht, wie man es anwendet.

Ich bräuchte bei einem View, der 2 Content Types ausgibt, eine zusätzliche Filterung in der Art, dass jeweils 2 Felder eines Content-Typs miteinander verknüpft abgefragt werden (ein Feld allein entscheide nicht, nur wenn beide Felder zusammen bestimmte Werte haben, abfragbar z.Bsp. mit IF-Abfragen, dann soll gefiltert/nicht gefiltert werden).

Und sobald bei einem der 2 Content Types diese Bedingung erfüllt ist (die Verknüpfung der 2 CCK-Felder), dann darf der Node im View ausgegeben werden.

Mit Views alleine geht das wohl nicht, zusätzlicher PHP-Code könnte das filtern, aber wie und wo eingeben, wenn doch viewsphpfilter mangels Doku nicht anwendbar ist?
Danke.

‹ View über verschieden view types (z.B. node, user) möglich? Views mergen/aggregieren? Viewseinstellungen für Calendar zurückstezen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

viewsphpfilter ist die Lösung

Eingetragen von tareq (6)
am 25.01.2010 - 19:54 Uhr

Hallo,

wenn du den viewsphpfilter installiert hast, kannst bei den views Einstellungen unter Filter die option Node: Node ID PHP handler auswählen.

Dort kannst du in der Textbox dein phpCode eingeben der als Rückgabewert die node ids zurückgibt, die angezeigt werden sollen. Bei mehreren nodes gibst du sie in einem array zurück.

Mfg Tareq

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zitat: leider gibt es für

Eingetragen von DrupalFan (1646)
am 25.01.2010 - 20:05 Uhr
Zitat:

leider gibt es für dieses Modul keine Doku und man weiß nicht, wie man es anwendet.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hm, ich bin mir nicht sicher

Eingetragen von md (3717)
am 25.01.2010 - 20:08 Uhr

Hm, ich bin mir nicht sicher ob ich dich richtig verstehe.
Mit Views kann ich doch Werte aus CCK-Felder unterschiedlicher Inhaltstypen filtern.

Und Views macht daraus eine AND Abfrage.
Geht das bei dir so nicht?

vg
--
md - DrupalCenter.de

mdwp*

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der 1. Inhaltstyp kann nicht das Bild des 2.Inhaltstyp enthalten

Eingetragen von DrupalFan (1646)
am 25.01.2010 - 20:19 Uhr

Ein einfaches AND geht hier leider nicht.

Ich habe 2 Inhaltstypen, jeder Inhaltstype hat jeweils ein CCK-Feld imagefield (das ist ein echtes hochgeladenes Bild).

Nun habe ich eine einfache Ansicht:
- Alle Nodes beider Inhaltstypen anzeigen. Problemlos machbar.

Dann habe ich noch diese Ansichten:
- Alle Nodes vom 1. Inhaltstyp anzeigen, die ein Bild enthalten, also imagefield Feld gesetzt ist.
und eine andere Ansicht:
- Alle Nodes vom 2. Inhaltstyp anzeigen, die ein Bild enthalten, also imagefield Feld gesetzt ist.
problemlos machbar.

Aber eigentlich brauche ich NUR diese Ansicht hier:
- Alle Nodes vom 1. und 2. Inhaltstyp anzeigen, wo ein Bild enthalten ist, also imagefield Feld gesetzt ist.
Und genau hier ist das AND, das Du angesprochen hast, ein Problem: Das AND macht nämlich folgendes daraus: Jetzt muss wegen dem "blöden" AND sowohl ein Feld field_nodetpye1_bild[0] als auch ein Feld field_nodetype2_bild[0] einen Wert haben, also ein Bild hochgeladen haben.

Und das ist unmöglich! Da der eine Inhaltstyp niemals das Bild des anderen Inhaltstypen enthalten kann.

Hier ist Views einfach zu wenig flexibel.
Gibt es noch einen Lösungsansatz? Danke.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Das kannst Du über eine

Eingetragen von wla (9461)
am 25.01.2010 - 20:43 Uhr

Das kannst Du über eine preprocess Funktion in template.php Deines Themes regeln (siehe hier).

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

views preprocessing

Eingetragen von DrupalFan (1646)
am 25.01.2010 - 21:05 Uhr

Ja, danke, da steht nur allgemein, wie man Views in preprocess-Funktionen anspricht, aber nicht wie man z. Bsp. dann den Filter eines Views verändert mit ganz eigenem PHP-Code.

  • Anmelden oder Registrieren um Kommentare zu schreiben

In dieser

Eingetragen von wla (9461)
am 25.01.2010 - 21:28 Uhr

In dieser Preprocess-Funktion bekommst Du einen rows-Array geliefert. Das sind die Zeilen, die Views ausgeben möchte. Die mußt Du dann überprüfen und gegebenenfalls streichen (unset). Das ist alles. Es stehen dort natürlich nur die Felder, die Du im View angezogen hast. Also mußt Du alle Felder, die Du zur Prüfung brauchst, auch aufführen (evtl ohne Ausgabe).

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wenn es nur am AND liegt,

Eingetragen von md (3717)
am 25.01.2010 - 22:05 Uhr

Wenn es nur am AND liegt, nimm doch das Modul http://drupal.org/project/views_or

vg
--
md - DrupalCenter.de

mdwp*

  • Anmelden oder Registrieren um Kommentare zu schreiben

viewsphpfilter ist doch die Lösung

Eingetragen von tareq (6)
am 25.01.2010 - 23:30 Uhr
DrupalFan schrieb

Aber eigentlich brauche ich NUR diese Ansicht hier:
- Alle Nodes vom 1. und 2. Inhaltstyp anzeigen, wo ein Bild enthalten ist, also imagefield Feld gesetzt ist.

Hallo Drupal Fan,

wenn ich dein Problem richtig verstehe, ist dafür ist der viewsphpfilter die beste Lösung. Bei views fügst du als Filter nur den Node: Node ID PHP handler zu. Im darauf folgenden Formular wählst du als Handler PHP Code aus. In der Textbox kannst du jetzt x beliebigen PHP Code eingeben. In deinem Fall also Irgendetwas in der Art:

$query1 = "SELECT nid FROM content_type_inhaltstyp1 WHERE field_nodetpye1_bild_value = der Wert den er haben soll"
$query2 = "SELECT nid FROM content_type_inhaltstyp2 WHERE field_nodetpye2_bild_value = der Wert den er haben soll"

$handle = db_query($query);
$nlist = array();
while ($result = db_fetch_array($handle))
  $nlist[] = $result['nid'];

$handle2 = db_query($query2);
while ($result2 = db_fetch_array($handle2))
  $nlist[] = $result2['nid'];

if($nlist[0]=="")
   return 0;
else
  return $nlist;

Damit kriegt da view doch alle nids vom Inhaltstyp1 und Inhaltstyp2 die ein bild haben.

So hätte ich das jetzt gemacht.

Aber vielleicht verstehe ich das Problem auch nicht richtig :(

Mfg Tareq

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 3 Tagen
  • Hey danke
    vor 1 Woche 4 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 5 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 2 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 4 Stunden
  • In der entsprechenden View
    vor 3 Wochen 4 Stunden
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 4 Stunden
  • gelöst
    vor 5 Wochen 3 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 4 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20450

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 11 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association