Ich habe immer wieder andere Anforderungen und stecke immer in Ansichten fest. Diesmal müssen die beiden Spalten / Felder einer Ansichtstabelle kombiniert, aber in verschiedenen Zeilen angezeigt werden.
Die zB: Felder, die ich derzeit habe: (Unten ist das hinzugefügte Bild)
Die Ausgabe der Ansicht in Tabelle (Spitzname Mehrwert durch Komma getrennt)
Beim Einfügen des Felds Mehrere Werte in verschiedene Zeilen
In den Tabelleneinstellungen habe ich zwei Felder wie kombiniert
dh Name und Spitzname, aber das gibt nur Ergebnisse wie:
(Hier wird Nick Name nach Name angezeigt)
Aber die Anforderungen, die ich anzeigen muss, sind: (Name und Spitzname in separater Zeile, aber in derselben Spalte). Die Spalte muss wie die normale Funktion zum Sortieren von Ansichtstabellen sortierbar sein.
Gibt es Einstellungen in Ansichten, mit denen ich dies ausführen kann? Oder wie kann ich das erreichen?
Bearbeiten: Wenn dies nicht möglich ist und mich jemand anleiten könnte, eine benutzerdefinierte Abfrage dafür zu erstellen, wäre ich sehr dankbar.
Bearbeiten 2 : SQL-Abfrage aus Ansichten Das Protokoll lautet: (Diese Abfrage gibt das 2. Bild von oben aus.)
SELECT node.title AS node_title, node.nid AS nid, field_data_field_nick_names.delta AS field_data_field_nick_names_delta, field_data_field_nick_names.language AS field_data_field_nick_names_language, field_data_field_nick_names.bundle AS field_data_field_nick_names_bundle, field_data_field_nick_names.field_nick_names_value AS field_data_field_nick_names_field_nick_names_value, field_data_field_nick_names.field_nick_names_format AS field_data_field_nick_names_field_nick_names_format, node.created AS node_created, 'node' AS field_data_field_nick_names_node_entity_type, 'node' AS field_data_field_ages_node_entity_type, 'girls:page' AS view_name
FROM
{node} node
LEFT JOIN {field_data_field_nick_names} field_data_field_nick_names ON node.nid = field_data_field_nick_names.entity_id AND (field_data_field_nick_names.entity_type = 'node' AND field_data_field_nick_names.deleted = '0')
WHERE (( (node.status = '1') AND (node.type IN ('girlss')) ))
ORDER BY node_created DESC
Antworten:
Sie haben Ihre Daten so strukturiert, dass dies nicht mit einer einzigen SQL-Abfrage möglich ist. Sie werden die Datenbank immer nach zwei getrennten Dingen fragen: (1) einer Liste von Personen, die auf ihren tatsächlichen Namen basieren, und (2) einer Liste, die auf ihren Spitznamen basiert.
Aber das muss nicht so sein.
Der mit Abstand einfachste Weg, um Bild 4 zu erreichen, besteht darin, den "Namen" einer Person immer als zusätzlichen "Spitznamen" darzustellen.
"Daina" sollte also 4 Spitznamen haben: "Kristi", "Rita", "Sweetie" und "Daina". Dann müssen Sie die Datenbank nur noch nach einer Liste mit Spitznamen fragen.
Dies ist wahrscheinlich nicht die Antwort, die Sie suchen. Aber ich würde argumentieren, dass es eine korrektere Art ist, Ihre Daten zu speichern. Stellen Sie sich das Feld "Spitzname" nicht als Liste alternativer Namen vor, sondern als Liste aller Namen, unter denen die Person bekannt ist. Basierend auf den Anforderungen Ihrer Situation klingt es sowieso so, als ob Sie wirklich danach suchen. Es ist ein vollständigeres Modell für Ihre Namensdaten.
quelle
Dies könnte durch Überschreiben der Ansichtsvorlagendatei erreicht werden :
views-view-table.tpl.php
.Zuerst müssen Sie mehrere Werte in verschiedene Zeilen einfügen.
Dann sollten Sie in der Vorlagendatei für jede Zeile prüfen, ob der Name mit der vorherigen Zeile identisch ist. Wenn nicht, drucken Sie den Namen und das Alter aus und fügen Sie dem Code eine neue Zeile hinzu, die den Spitznamen und das Alter enthält. Wenn der Name mit dem vorherigen identisch ist, drucken Sie nur den Spitznamen und das Alter.
Ich habe versucht, es theoretisch zu erklären, aber ich kann bei der Implementierung helfen, wenn Sie Schwierigkeiten haben.
Schritte:
views-view-table.tpl.php
Datei unter Ihren Themenordner kopieren . Diese Datei befindet sich unter dem Modul Ansichtenviews/theme/views-view-table.tpl.php
.views-view-table--YOUR-VIEW.tpl.php
. Sie sollten den Computernamen Ihrer Ansicht durch 2 Striche getrennt platzieren.Code
quelle
Views Cookbook
und versucht zu verstehen, wie es richtig funktioniert, aber es erklärt nichts in meinem Fall. Eine Beispielimplementierung wäre also sehr, sehr hilfreich.dpm()
Funktion, um die Variablen / Arrays benutzerfreundlich auszudrucken.views
Vorlagendateien arbeiten soll. Ich werde sehen , ob ich kann hinzufügen , Namen und Nickname in derselben Spalte , aber verschiedene Reihen mit diesem Ansatzif ($content == $content_previous){}
. Dies ist nur ein Hinweis.OK, es sieht so aus, als würden die drei Spalten zu einer zusammengefasst und dann in die beiden Spalten aufgeteilt, die Sie benötigen, und als solche werden beliebige Daten abgerufen. Versuchen Sie, mit den jetzt verfügbaren Optionen zu "Stileinstellungen" zu wechseln, ändern Sie das Format in "unformatiert" und speichern Sie es. Gehen Sie jetzt zurück und setzen Sie es auf Tabelle zurück. Es sollte die Möglichkeit geben, Spalten zu kombinieren und einfach die beiden gewünschten auszuwählen.
Ich hoffe das hilft.
quelle
Klicken Sie unter Struktur -> Ansichten -> Einstellungen -> auf "SQL-Abfrage anzeigen". Gehen Sie zu Ihrer Ansicht, es wird eine Abfrage angezeigt.
FORMAT - Show: -Felder und verwenden Sie dann "Global: PHP" zum Schreiben einer benutzerdefinierten Abfrage. Wenn Sie nicht installiert haben, verwenden Sie diesen Link, https://drupal.org/project/views_php .
Nach Auswahl von Global: PHP - Sie können die bereits angezeigte Abfrage verwenden und dann können wir tun, was wir wollen. Alle oben genannten Felder sollten mit "Von Anzeige ausschließen" (dh Name, Alter usw.) markiert sein.
quelle
value code
kannoutput code
, usw. Wo genau verwende ich diese Abfragen? Können Sie mir einen Hinweis geben, wie man es benutzt?Es tut mir leid, dass ich kein Drupal 7-Testfeld zur Hand habe, aber wenn es Ihnen nichts ausmacht, dass das Alter in Gruppen zusammengefasst wird, können Sie so etwas tun (Screenshots hier in Drupal 6), von dem ich annehme, dass es in Drupal 7 ziemlich gleich ist .
Zuerst weg, die Felder greifen Sie müssen in diesem Fall habe ich einen Inhaltstyp namens
name_nick_age
zusammen mit drei Feldernnna_name
,nna_nick
undnna_age
dann eine Ansicht erstellt:In den Stileinstellungen für die Tabelle haben Sie standardmäßig Folgendes:
Dass ich das geändert habe:
Die einzige Änderung besteht darin, den Namen in die Spalte Nick zu setzen. Dies erstellte dann diese Tabelle:
Sie erhalten Zugriff auf die Stileinstellungen, indem Sie auf das kleine Zahnrad rechts neben Stil: Tabelle klicken. Die Screenshots für Drupal 7 sind zwar unterschiedlich, aber ich wette, dass die Funktionalität dafür vorhanden ist.
quelle
Überprüfen Sie, ob die Ergebnisse angezeigt werden oder nicht.
quelle