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

Wie kann man Felder des Feldtyps "Langer Text" als Text-Datei ausgeben?

Eingetragen von Christian Winte... (31)
am 16.05.2013 - 18:52 Uhr in
  • Views
  • Drupal 7.x oder neuer

Hallo,

ich habe in einem Inhaltstyp namens "aufgaben" ein Feld mit dem Namen "aufgabe_text". Dieses Feld hat den Feldtyp "Langer Text". Da in diesem Feld
wirklich lange Texte stehen und die Nodes des Inhaltstyps "aufgaben" zahlreich sind, wäre die Verwendung des Feldtyps "Datei" anstatt "Langer Text" hier nicht
sinnvoll.

Ich möchte bei der Ausgabe einer Node des Inhaltstyps "aufgaben" erreichen, daß nicht der Inhalt des Feldes "aufgabe_text" angezeigt wird, sondern ein Link, auf den man
klicken kann und der dann die Möglichkeit eröffnet, den Inhalt des Feldes "aufgabe_text" in eine Datei zu speichern oder in einem Programm (z.B. einem geeigneten Editor)
zu öffnen.

Bisher konnte ich im Forum und allgemeiner per Google keine Lösung für dieses Problem finden. Wer sieht hier einen Lösungsansatz?

Vielen Dank schon mal fürs Nachdenken über eine Antwort!

‹ Migration der CKK Felder beim Upgrade auf Drupal 7 Wie kann man Felder des Feldtyps "Langer Text" als Text-Datei ausgeben? ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Ehrlich gesagt verstehe ich

Eingetragen von Goekmen (1013)
am 17.05.2013 - 10:33 Uhr

Ehrlich gesagt verstehe ich nicht was du meinst.
Falls du zu viele Felder hast, kannst du es ja auf Tabs verteilen:
http://drupal.org/project/field_group

  • Anmelden oder Registrieren um Kommentare zu schreiben

Zu viele Felder?

Eingetragen von Christian Winte... (31)
am 17.05.2013 - 11:01 Uhr

Es geht, wie ich beschrieben habe, um ein Feld mit dem Feldtyp "Langer Text". Dies ist in der Drupal-Terminologie genau definiert. Dieses Feld enthält ziemlich lange Texte, deshalb habe ich diesen Datentyp auch dafür gewählt. Die Größe der Texte schwankt zwischen wenigen Kilobytes und etwa 10 MB.

Bei der Ausgabe einer Node auf dem Bildschirm muß man bei längeren Texten ziemlich lange Scrollen, um den gesamten Text zu erfassen und ihn ev. durch Kopieren mit der Maus in eine lokale Datei zu bekommen. Da wäre es einfacher, wenn man wie beim Datentyp "Datei" nur auf den Namen (oder Title) des Feldes klickt und dann den Inhalt direkt in eine lokale Datei downloaden kann.

Den Datentyp "Datei" kann ich aber nicht verwenden, da es tausende von Nodes (also "Sätzen" in der zugrundeliegenden MySQL-Datenbank) gibt. Im Falle des Datentyps "Datei" würde diese Vorgehensweise das Filesystem des Rechners belasten und die Performance würde mit Sicherheit nicht gut sein.

Im übrigen ist es schon lange bei den meisten SQL-Datenbanken üblich, lange Texte-felder in der Datenbank zu speichern. Meine Frage ist nur, ob es in Drupal eine Möglichkeit gibt, den Inhalt dieses Textfeldes in der oben beschriebenen Weise auszugeben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Christian Winterhager

Eingetragen von Goekmen (1013)
am 17.05.2013 - 11:15 Uhr
Christian Winterhager schrieb

Dieses Feld enthält ziemlich lange Texte, deshalb habe ich diesen Datentyp auch dafür gewählt. Die Größe der Texte schwankt zwischen wenigen Kilobytes und etwa 10 MB.

Dafür ist langer Text aber trotzdem nicht gedacht. 10MB sind ganz schön viel für eine Textdatei.

Warum würde es die Performance belasten wenn man Dateien verwendet? Der Link zur Datei wird ja in der Datenbank gespeichert und nicht die Datei selbst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Warum würde es die Performance belasten wenn man Dateien .....

Eingetragen von Christian Winte... (31)
am 17.05.2013 - 11:27 Uhr

Wenn man in einem Verzeichnis wie z.B. .../drupal/sites/default.... 20000 Dateien abspeichert, so ist nicht nur die Performance schlecht (weil die jeweilige Datei
ja auch gesucht und dann hochgeladen werden muß), sondern auch das Sichern und Wiederherstellen der außerhalb der MySQL-Datenbank liegenden Dateien
wird umständlicher. Genau deshalb haben ja alle großen Datenbanken binäre Objekte eingeführt wie z.B. Blobs und Text-Blobs (Oracle, Informix, Mysql, PostreSQL).

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eventuell kann man dir besser

Eingetragen von Goekmen (1013)
am 17.05.2013 - 11:46 Uhr

Eventuell kann man dir besser helfen, wenn man weiß was du genau damit vorhast.
Ich bin kein Datenbanlexperte, aber dein jetziger Weg scheint mir auch nicht besser zu sein.

Unabhängig davon gibt es zB Backup & Migrate File Modul und Module wie File(path), wo die Unterverzeichnisse modifizieren kannst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schrieb Eventuell

Eingetragen von Christian Winte... (31)
am 17.05.2013 - 12:16 Uhr
Goekmen schrieb

Eventuell kann man dir besser helfen, wenn man weiß was du genau damit vorhast.
Ich bin kein Datenbanlexperte, aber dein jetziger Weg scheint mir auch nicht besser zu sein.

Unabhängig davon gibt es zB Backup & Migrate File Modul und Module wie File(path), wo die Unterverzeichnisse modifizieren kannst.

In den Nodes des Inhaltstyps namens "aufgaben" gibt es wie gesagt ein Feld mit dem Namen "aufgabe_text". Dieses enthält den Text einer Aufgabe, in diesem
Falle mathematische Aufgaben. Der Text besteht aus LaTeX-Quellcode und kann schon recht umfangreich werden. Die Anzahl der Aufgaben (also die Instanzen des
Inhaltstyps "aufgaben" bzw. Anzahl der Zeilen in der zugrundeliegenden Tabelle der Drupal/MySQL-Datenbank) geht in die Tausende. Ein Dateibaum mit mehr als
5000 Dateien ist ein klassischer Fall für eine Datenbank, weshalb mein Vorgehen in diesem Fall auch sinnvoll ist.

Für den Eigentümer der Node ist die Sache einfacher: er braucht nur auf "Bearbeiten" zu klicken und kann dann in dem Editor seiner Wahl das Feld
"aufgabe_text" bearbeiten bzw. komplett herauskopieren. Ein Nichteigentümer der Node, der keine Rechte des Bearbeitens hat und nur lesen darf,
soll aber die Möglichkeit haben, durch einfachen Klick den Text downzuloaden.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Christian Winterhager

Eingetragen von Goekmen (1013)
am 17.05.2013 - 12:26 Uhr
Christian Winterhager schrieb

Die Anzahl der Aufgaben (also die Instanzen des
Inhaltstyps "aufgaben" bzw. Anzahl der Zeilen in der zugrundeliegenden Tabelle der Drupal/MySQL-Datenbank) geht in die Tausende.

Was meinst du mit Instanzen? Kann man das Feld langer Text mehrfach benutzen oder nur 1x Feld pro Node?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Eventuell kann man mit Views

Eingetragen von Goekmen (1013)
am 17.05.2013 - 12:33 Uhr

Eventuell kann man mit Views Data Export was erreichen.
Bau dir eine View mit Views Data Export. Als Kontext die Beitragsid aus der URL verwenden.
Nur das Aufgabenfeld ausgeben. Du kannst das Feld in folgende Felder verwandeln:

  • CSV
  • Microsoft XLS
  • Microsoft DOC
  • Basic TXT
  • XML.

http://drupalmodules.com/module/views-data-export

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schrieb Christian

Eingetragen von Christian Winte... (31)
am 17.05.2013 - 12:34 Uhr
Goekmen schrieb
Christian Winterhager schrieb

Die Anzahl der Aufgaben (also die Instanzen des
Inhaltstyps "aufgaben" bzw. Anzahl der Zeilen in der zugrundeliegenden Tabelle der Drupal/MySQL-Datenbank) geht in die Tausende.

Was meinst du mit Instanzen? Kann man das Feld langer Text mehrfach benutzen oder nur 1x Feld pro Node?

Mit Instanzen meinte ich das Auftreten einer Node dieses Inhaltstyps. Wenn ich z.B. 50 Aufgaben gespeichert habe, dann habe ich 50 Nodes des
Inhaltstyps "aufgaben" gespeichert. Statt "Instanzen" wäre es vielleicht besser von "Records" oder "Zeilen" der dahinterliegenden MySQL-Tabell zu sprechen.

Das Feld "aufgaben_text" darf immer nur einen Wert enthalten.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Siehe zwei Posts

Eingetragen von Goekmen (1013)
am 17.05.2013 - 12:38 Uhr

Siehe zwei Posts drüber...damit müsste es gehen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Views Data Export

Eingetragen von Christian Winte... (31)
am 18.05.2013 - 12:33 Uhr
Goekmen schrieb

Eventuell kann man mit Views Data Export was erreichen.
Bau dir eine View mit Views Data Export. Als Kontext die Beitragsid aus der URL verwenden.
Nur das Aufgabenfeld ausgeben.

Danke für diesen interessanten Tip. Ich habe ihn angewendet und leider immer noch ein Problem. Ich bin folgendermaßen vorgegangen:

Als erstes habe ich diesen Modul "Views Data Export" installiert.
Danach habe ich einen View mit dem Namen "daten-expoert" erstellt, der als "Display" ausschließlich über den Typ
"Data export" verfügt. Bei den "Data Export details" habe ich als Format "TXT File" ausgewählt.
Dann habe ich das Feld "aufgabe_text" (dessen Inhalt ich ja als Datei ausgeben möchte) unter dem bereich "Fields" dem View hinzugefügt.

Als "Contextual filters" habe ich gewählt: "Inhalt: Nid".
Bei der Konfiguration dieses "Contextual filters" habe ich noch " Specify validation criteria " angekreuzt. Daraufhin kann man
eine "Validator " auswählen, und für diesen Validator habe ich "Inhalt" ausgewählt und für diesen Inhalt dann den Inhaltstyp "aufgaben",
also jenen Inhaltstyp, in dem mein Feld "aufgabe_text" gespeichert wird.

Leider gibt dieser View aber immer das Feld "aufgabe_text" für ALLE existierenden Nodes des Inhaltstyps "aufgaben" aus, ich will diese Ausgabe aber nur für einen bestimmten Satz (bzw. Node) haben.

Also habe ich ein Feld mit dem Feldtyp "Link" in meinen Inhaltstyp "aufgaben" eingefügt und diesen Link auf den eben erstellten View "daten-export" zeigen lassen. Wenn ich jetzt einen Node des Inhhaltstyps "aufgaben" anzeigen lasse, so kann ich auch auf das Feld "Link" klicken und kann problemlos den Text in einen Datei herunterladen, aber:

es ist immer der Text aller Felder sämtlicher Nodes dieses Inhaltstyps.

Die Frage ist eigentlich nur, wie ich dem View beibringen kann, daß er in seinem Datenbank-SELECT-Statement eine WHERE-Klausel einfügt mit der Bedingung

WHERE node-id = diejenige des Nodes, in welchem ich auf den "link" geklickt habe.

Ich habe das dumpfe Gefühl, daß man das irgendwie mit den Contextual filters machen kann, aber ich weiß nicht, welches der Felder man dort sinnvollerweise
hinzufügen sollte. Das Hinzufügen des Feldes "Inhalt: Nid" hat jedenfalls nicht den gewünschten Effekt gehabt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Probier mal

Eingetragen von Goekmen (1013)
am 18.05.2013 - 12:41 Uhr

Probier mal folgendes:

Contextual Filters:
Inhalt: Beitrags-ID
--> Vorgabewert bereitstellen:
----> Beitrags-ID aus der URL

Und die Seitennavigation einfach auf 1 Objekt stellen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schrieb Probier mal

Eingetragen von Christian Winte... (31)
am 18.05.2013 - 12:58 Uhr
Goekmen schrieb

Probier mal folgendes:

Contextual Filters:
Inhalt: Beitrags-ID
--> Vorgabewert bereitstellen:
----> Beitrags-ID aus der URL

Und die Seitennavigation einfach auf 1 Objekt stellen

Oh, danke für die schnelle Reaktion. Das Problem ist wohl, daß meine Drupal-Version einen Mischmasch aus englischen und deutschen Anweisungen enthält.
Ich kann jedenfalls bei der Auswahl der Contextual Filters kein "Inhalt: Beitrags-ID" entdecken. Das einzige, was dem in etwa entsprechen könnte, ist das, was ich oben schon beschrieben hatte:

Als "Contextual filters" habe ich gewählt: "Inhalt: Nid".

Eine Option "Vorgabewert bereitstellen" bereitstellen kann ich auch nicht entdecken. Möglicherweise kommt dem wieder folgendes nahe:

When the filter value IS in the URL or a default is provided

Und, wie ich schon oben geschrieben hatte:
Bei der Konfiguration dieses "Contextual filters" habe ich noch " Specify validation criteria " angekreuzt. Daraufhin kann man
eine "Validator " auswählen, und für diesen Validator habe ich "Inhalt" ausgewählt und für diesen Inhalt dann den Inhaltstyp "aufgaben",
also jenen Inhaltstyp, in dem mein Feld "aufgabe_text" gespeichert wird.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schrieb Probier mal

Eingetragen von Christian Winte... (31)
am 18.05.2013 - 13:23 Uhr
Goekmen schrieb

Probier mal folgendes:

Contextual Filters:
Inhalt: Beitrags-ID
--> Vorgabewert bereitstellen:
----> Beitrags-ID aus der URL

Und die Seitennavigation einfach auf 1 Objekt stellen

Auch die Seitennavigation habe ich auf 1 Objekt gestellt. Dann wird in der Tat nur ein Node bei der Ausgabe berücksichtigt,
und das ist immer der erste Node des Inhaltstyps, aber leider eben nicht derjenige, den ich über den "Contextual Filter"
angewählt habe.

Drupal macht einfach einen "SELECT aufgabe_text FROM aufgaben" ohne eine anschließende WHERE-Klausel. Die Frage ist:
wie kann man einem View eine Node-ID übergeben, so daß er sie in seinem SELECT-Statement auch berücksichtigt? Mit dem EVA-Modul geht
das sehr schön, aber der hat keine Möglichkeit des Datenexports...

  • Anmelden oder Registrieren um Kommentare zu schreiben

Auf englisch müsste es so

Eingetragen von Goekmen (1013)
am 18.05.2013 - 13:30 Uhr

Auf englisch müsste es so heißen
Content: Nid

--> Provide default value
und dann: Content ID from URL

Das ist sehr wichtig denn so ermittelt die View die aktuelle Beitrags/NID. Ohne das wird es nicht funktionieren.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schrieb Auf englisch

Eingetragen von Christian Winte... (31)
am 18.05.2013 - 13:52 Uhr
Goekmen schrieb

Auf englisch müsste es so heißen
Content: Nid

--> Provide default value
und dann: Content ID from URL

Das ist sehr wichtig denn so ermittelt die View die aktuelle Beitrags/NID. Ohne das wird es nicht funktionieren.

ja, das hatte ich auch schon ausprobiert. Dann kommt ein SQL-Fehler:

PDOException: SQLSTATE[42S02]: Base table or view not found: 1146 Table 'db466913877.views_data_export_index_27' doesn't exist: SELECT COUNT(*) FROM {views_data_export_index_27}; Array ( ) in views_data_export_plugin_display_export->execute_initial() (Zeile 248 von /homepages/15/d466397277/htdocs/drupal/sites/all/modules/views_data_export/plugins/views_data_export_plugin_display_export.inc).

Es muß irgendwie mit dem Aufruf des Views zusammenhängen. Denn bei diesem Aufruf bekommt der View ja diese Node-URL übergeben - oder sollte es zumindest.

Die Frage ist also, wie man aus der Node heraus den View aufruft! Ich habe das, wie oben schon beschrieben, über ein Link-Feld gemacht, aber dieses Link-Feld ruft
nur die URL "daten-export" auf, also den Namen des Views, der gleichzeitig auch seine URL ist. Anscheinend wird dem View dabei aber nicht die URL des ihn aufrufenden Nodes
übergeben.

Kann man bei der Angabe der URL für das Feld "Link" im Inhaltstyp "aufgaben" statt "daten-export" auch so etwas wie "daten-export/%nid" oder so schreiben?

Oder siehst du eine andere Möglichkeit, diesen ja schon funktionierenden View aus der Node "aufgaben" heraus aufzurufen? Für den Anwender wäre es ja nur sinnvoll, wenn er eine
Node des Inhaltstyps "aufgaben" mit deren Feldern auf dem Bildschirm sieht, dann auch irgendwo auf einen Link oder Button zu klicken, der ihm den View "daten-export" aufruft!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Es gibt hier mehrere

Eingetragen von Goekmen (1013)
am 18.05.2013 - 14:14 Uhr

Es gibt hier mehrere Wege...

Hier ein Vorschlag:
Installiere: Insert View
http://drupal.org/project/insert_view

Erstelle ein neues Textfeld in deinem Content Typ und packe es unter die Aufgabe (oder wo auch immer).
Dann den Code von Insert View reinpacken und deine View-Daten benutzen:
[view:my_view=my_display]

In den Textformat Filtern Insert View aktivieren.
So hast du deine View auch auf der Seite wo die Aufgabe ist.

Ich kann dir leider nicht genau sagen ob alles richtig in deiner View eingestellt ist. Bei einigen Punkten kann ich dir nicht ganz folgen.
In Views gibt es aber unten ein Textfeld wo man die View direkt testen kann bzw. eine BeitragsID selber eintragen. Dann kannst du dort schon mal sehen ob was angezeigt wird.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schrieb Es gibt hier

Eingetragen von Christian Winte... (31)
am 18.05.2013 - 14:24 Uhr
Goekmen schrieb

Es gibt hier mehrere Wege...

..........
In Views gibt es aber unten ein Textfeld wo man die View direkt testen kann bzw. eine BeitragsID selber eintragen. Dann kannst du dort schon mal sehen ob was angezeigt wird.

Danke für die Tips, werde das gleich mal ausprobieren. bei dem Testfeld ganz unten steht:

Preview with contextual filters:

Dorthabe ich mal die Node-Ids verschiedener Nodes des Inhaltstyps "aufgaben" eingegeben. Der View scheint dann auch zu funktionieren, aber er zeigt nur die
Überschrift eines Feldes (also des Textfelds) an, der Inhalt fehlt leider.

Ich werde jetzt aber erst mal diesen zweiten Weg probieren: http://drupal.org/project/insert_view

  • Anmelden oder Registrieren um Kommentare zu schreiben

Insert View Vorschlag

Eingetragen von Christian Winte... (31)
am 18.05.2013 - 23:03 Uhr
Goekmen schrieb

Es gibt hier mehrere Wege...

Hier ein Vorschlag:
Installiere: Insert View
http://drupal.org/project/insert_view

Erstelle ein neues Textfeld in deinem Content Typ und packe es unter die Aufgabe (oder wo auch immer).
Dann den Code von Insert View reinpacken und deine View-Daten benutzen:
[view:my_view=my_display]

Bei dieser Methode besteht nach wie vor das Problem, wie man an den View die Node-ID desjenigen Nodes übergibt, der das Feld enthält, dessen Inhalt letztendlich als Datei
heruntergeladen werden soll. Im README des Insert View Moduls steht zwar die Syntax für die Eingabe:

[view:my_view]
[view:my_view=my_display]
[view:my_view=my_display=arg1/arg2/arg3]
[view:my_view==arg1/arg2/arg3]

Aber die Frage besteht dann immer noch: wie schreibt man die aktuelle Node-ID in das Argument hinein?

Z.B. so: [view:daten-export==34] ??? Aber das führt z.B. zu überhaupt keiner Ausgabe, es wird dann nur der Titel des Feldes mit dem Textformat "Insert View" ausgegeben.
Auch wenn man "==34" wegläßt, wird der View überhaupt nicht ausgegeben.

Gibt man in der View-Definition (Struktur -> Views -> View "daten-export" ) ganz unten aber bei den "Preview with contextual filters: " den Wert 34 ein und klickt auf Update preview, so arbeitet dieser Datenexport-View erfreulicherweise korrekt. Er gibt auch alles korrekt aus , wenn ich seine URL in der Browserzeile direkt eingebe:

http://blabla/drupal/?q=date-export/34

Die Frage, die es eigentlich nur noch zu lösen gilt, lautet daher: wie bekomme ich die Node-Id (oben die 34 z.B.) des Nodes, den ich gerade aktuell auf dem Bildschirm ausgegeben habe,
in den Aufruf (nur in den Aufruf, nicht in irgendwelche Filter oder Felder des Views!) des Datenexport-Views

http://blabla/drupal/?q=date-export/34

hinein???? Wüßte ich das, so könnte ich diesen Wert dann ja als Default-Wert in ein Feld vom Feldtyp "Link" schreiben und hätte damit alles gelöst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Contextual Filters mit

Eingetragen von Goekmen (1013)
am 19.05.2013 - 00:41 Uhr

Contextual Filters mit Vorgabewert: BeitragsID aus der URL
Du musst da nichts weitermachen, wenn die View aktiv ist auf der Seite. Views ermittelt selber die Beitrags-ID.
Da ist egal was oben in der URL steht. Views weiß Bescheid:

Du kannst bei den Feldern zB auch noch die BeitragsID ausgeben und die Ausgabe unterdrücken.
Dann ein weiteres Globales Benutzerdefiniertes Feld erstellen und die Ausgabe selber schreiben.
Du kannst das [nid] Pattern benutzen. Views setzt dann automatisch die aktuelle Beitrags-ID rein.

  • Anmelden oder Registrieren um Kommentare zu schreiben

10MB plain text?

Eingetragen von ronald (3857)
am 19.05.2013 - 08:16 Uhr

Wer soll das lesen?
Das zu laden, dauert ja schon ewig.
10 MB plain text entspricht einem kompletten Buch mit mehr als 2000 Seiten.
Einige WEB-Sites sind nicht größer.

Das Format "TEXT" in mySQL kann bis zu 64 KB aufnehmen.

Das sollt für jede normale Anwendung ausreichen.

Ansonsten muss der Text eben lokal geschrieben und gelesen, und tatsächlich per Up-/Download transportiert werden.

Selbst ein Buch würde man in Kapitel und Abschnitte zerlegen, um es dann Abschnitt für Abschnitt zu laden.

Der Inhalt muss ja auch noch pflegbar bleiben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schriebContextual

Eingetragen von Christian Winte... (31)
am 19.05.2013 - 15:23 Uhr
Goekmen schrieb

Contextual Filters mit Vorgabewert: BeitragsID aus der URL
Du musst da nichts weitermachen, wenn die View aktiv ist auf der Seite. Views ermittelt selber die Beitrags-ID.
Da ist egal was oben in der URL steht. Views weiß Bescheid....

Du kannst bei den Feldern zB auch noch die BeitragsID ausgeben und die Ausgabe unterdrücken.
Dann ein weiteres Globales Benutzerdefiniertes Feld erstellen und die Ausgabe selber schreiben.
Du kannst das [nid] Pattern benutzen. Views setzt dann automatisch die aktuelle Beitrags-ID rein.

Danke für diese Tips. Das, was du im ersten eingescannten Bild gemacht hast, habe ich bei mir genauso gemacht. Ich hatte
zunächst bei diesen "Contextual Filters" das Feld "Inhalt: Nid (The node ID)" eingefügt, habe aber gesehen, daß du ein anderes Feld
genommen hast, nämlich " Content revision: Nid". Das habe ich dann auch genommen und die in deinem Image angezeigten Parameter
genauso eingetragen.

Aus deinen Ausführungen habe ich dann geschlossen, daß danach ein Aufruf der Form "http://blabla/q?=daten-export" dem View die richtige NID übermitteln würde, nämlich diejenige des gerade auf dem Bildschirm angezeigten Nodes des Inhaltstyps "aufgaben". Und zwar ohne das Anhängen von "[nid]". Wie immer man es auch macht, ob aus einem Link-Feld im Inhaltstyp "aufgaben", in welchem man den String
< a href="http://blabla/?q=daten-export"> Download%lt;/a> eingetragen hat oder direkt in der Browser-URL-Zeile (was zugegebenermaßen nicht besonders sinnvoll ist), es kommt immer nur ein SQL-Fehler heraus:

PDOException: SQLSTATE[42S02]: Base table or view not found:.....

Ich habe dann, so wie du es empfohlen hast im zweiten Teil deiner letzten Mail, ein "benutzerdefiniertes Textfeld" erstellt
und dieses dann mit dem erweiterten Aufruf incl "[nid]" gefüllt:

< a href="http://blabla/?q=daten-export/[nid]"> Download < /a>

Ich muß dazu allerdings sagen, daß ich nicht weiß wo (also in welchem inhaltstyp) dieses neue Feld eigentlich erstellt werden sollte.
Ich habe es einfach in den Inhaltstyp "aufgaben" hineingenommen. Außerdem hattest du geraten, die "Beitrags-ID" bei den Feldern auszugeben und ihre Ausgabe zu unterdrücken. Ich gehe davon aus, daß du gemeint hast, das Feld "Inhalt: Node ID" in den View "daten-export" zusätzlich aufzunehmen.
Das habe ich dann auch gemacht, und passiert ist dann folgendes:

  1. Ich rufe einen Satz (eine Node) des Inhaltstyps "aufgaben" auf.
  2. Ich klicke auf das neu hinzugenommene Textfeld mit dem Inhalt
    < a href="http://blabla/?q=daten-export/[nid]"> Download < /a>
  3. Der View wird aufgerufen, meldet sich und ich kann "etwas" in eine Textdatei speichern.

Leider ist diese Textdatei aber leer! Immerhin.....

  • Anmelden oder Registrieren um Kommentare zu schreiben

Goekmen schriebDu kannst bei

Eingetragen von Christian Winte... (31)
am 19.05.2013 - 16:47 Uhr
Goekmen schrieb

Du kannst bei den Feldern zB auch noch die BeitragsID ausgeben und die Ausgabe unterdrücken.
Dann ein weiteres Globales Benutzerdefiniertes Feld erstellen und die Ausgabe selber schreiben.
Du kannst das [nid] Pattern benutzen. Views setzt dann automatisch die aktuelle Beitrags-ID rein.

Anscheinend hast du mit diesem "Globales Benutzerdefiniertes Feld" tatsächlich ein neues Feld in dem
View "daten-export" gemeint. Dort findet man auch die von dir angegebenen Syntax-Erweiterungen,
z.B. "[nid] == Inhalt: Nid".

Nur: warum sollte ich erst in diesem View ein Feld mit einem Link einbauen,
der auf ihn selbst verweist? Davon hätte ich keinen Nutzen. Ich brauche diesen Link ja ein Stufe oben drüber bei dem Node des Inhaltstyps "aufgaben".

Der Sinn des Views "daten-export" ist ja, den gesamten Text eines langen Textfeldes dem Benutzer über
den Download in eine Datei zugänglich zu machen, und nicht eine Zeile mit mehreren Feldspalten auszugeben
(wie es üblicherweise Views ja auch machen).

Wenn es auf Inhaltstyp-Ebene ebenfalls die Möglichkeit gäbe, ein Feld mit diesen zusätzlichen Syntax-Erweiterungen
( wie etwa "[nid] == Inhalt: Nid" ) anzulegen, wäre meine Aufgabe sicher gelöst....

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich glaube dir fehlen noch

Eingetragen von Goekmen (1013)
am 19.05.2013 - 16:58 Uhr

Ich glaube dir fehlen noch ein paar Kenntnisse in Views bzw. wir reden etwas einander vorbei.
Hier noch mal eine kurze Erläuterung. Das ist mein Weg, es gibt sicherlich noch andere Lösungswege.

  • Du hast dein Nodetyp Aufgaben
  • Du hast ein Textfeld wo dein Text drinsteht (die Aufgabe die später als Download angeboten werden soll)
  • Du erstellst eine View und filterst nach Node-Typ: Aufgaben
  • Die Anzahl der Elemente stellst du auf "1"
  • Bei den Contextual Filters Beitrags-ID aus der URL einstellen (siehe Screenshot1). Das ist sehr wichtig!
  • Bei den Ausgabefiltern die NID erstellen und gleich wieder die Ausgabe excluden
  • Ein weiteres neues Globales Benutzerdefiniertes Feld erstellen und dort den Link anpassen:
  • < a href="http://blabla/?q=daten-export/[nid]"> Download < /a>
  • Damit man die View aktiv wird, muss es auf der gleichen Seite wie die Aufgabe erscheinen, ansonsten kannst die Beitrags-ID nicht ermittelt werden.
  • Da könnte man zB Insert View integrieren.

Ich schaue es mir auch gerne mal an wenn du willst. Ansonsten wird es mit der Schreiberei etwas zu viel.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vorgehensweise

Eingetragen von Christian Winte... (31)
am 19.05.2013 - 18:08 Uhr
Goekmen schrieb

Ich glaube dir fehlen noch ein paar Kenntnisse in Views bzw. wir reden etwas einander vorbei.
Hier noch mal eine kurze Erläuterung. Das ist mein Weg, es gibt sicherlich noch andere Lösungswege.

  • Du hast dein Nodetyp Aufgaben
  • Du hast ein Textfeld wo dein Text drinsteht (die Aufgabe die später als Download angeboten werden soll)
  • Du erstellst eine View und filterst nach Node-Typ: Aufgaben
  • Die Anzahl der Elemente stellst du auf "1"
  • Bei den Contextual Filters Beitrags-ID aus der URL einstellen (siehe Screenshot1). Das ist sehr wichtig!
  • Bei den Ausgabefiltern die NID erstellen und gleich wieder die Ausgabe excluden
  • Ein weiteres neues Globales Benutzerdefiniertes Feld erstellen und dort den Link anpassen:
  • < a href="http://blabla/?q=daten-export/[nid]"> Download < /a>
  • Damit man die View aktiv wird, muss es auf der gleichen Seite wie die Aufgabe erscheinen, ansonsten kannst die Beitrags-ID nicht ermittelt werden.
  • Da könnte man zB Insert View integrieren.

Ich schaue es mir auch gerne mal an wenn du willst. Ansonsten wird es mit der Schreiberei etwas zu viel.

Tja, das habe ich alles so gemacht, aber es sind noch sehr viele Fragen vom Typ "was bedeutet es, wenn du sagst..." zu klären.

Wie könnte man es machen, daß du Zugriff auf die Seite bekommst? Per E-Mail Passwort verschicken?

Die Seite ist:

http://math-lib.de/drupal/?q=node/18 (das ist ein typischer Aufgaben-Node)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Kannst du mir mailen an

Eingetragen von Goekmen (1013)
am 19.05.2013 - 18:46 Uhr

Kannst du mir mailen an kontakt@webtransformer.de
Heute schaffe ich es zeitlich nicht, aber morgen könnte ich mal reinschauen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

PS: Ich brauche vollen

Eingetragen von Goekmen (1013)
am 19.05.2013 - 19:27 Uhr

PS: Ich brauche vollen Adminzugriff, ansonsten kann ich kaum was machen bzw. der Ursache auf den Grund gehen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

geht jetzt

Eingetragen von Christian Winte... (31)
am 19.05.2013 - 19:45 Uhr

Müßte jetzt eigentlich funktionieren!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Okay...ist alles etwas

Eingetragen von Goekmen (1013)
am 19.05.2013 - 20:31 Uhr

Okay...ist alles etwas komplizierter geworden, aber unter der Aufgabe ist jetzt ein Download Link.
Hier und da muss man noch einiges machen, aber es scheint zu funktionieren.
Der Download ist ein Block, kannst du auch woanders hin schieben.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Donnerknall

Eingetragen von Christian Winte... (31)
am 19.05.2013 - 20:45 Uhr

Ich schaus mir mal an, ob ich es verstehe. Ich werde mir aber wohl doch mal ein Buch über Views kaufen müssen. Ich komme von der Datenbank-Seite (Informix) her und habe
im Berufsleben natürlich viel mit SQL-Views zutun gehabt, auch bei MySQL ist das Thema ziemlich einfach. Drupal ist allerdings eine höhere Zugriffsschicht mit einer ganz eigenen Sprache,
da muß man sich erst mal dran gewöhnen.

Es gibt hier: http://www.amazon.de/Drupal-Views-Cookbook-Ayen-Green/dp/1849514348/ref=sr_1_1?ie=UTF8&qid=1368992577&sr=8-1&keywords=drupal+views
ein Buch über Views. Kennst du das zufällig? Scheint mir recht ausführlich zu sein, und als E-Book für 13 Euro auch preiswert!

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich kenne das Buch nicht, es

Eingetragen von Goekmen (1013)
am 19.05.2013 - 21:02 Uhr

Ich kenne das Buch nicht, es macht aber einen guten Eindruck.
Im Moment werden auf deiner Seite 2 verschiedene Views verwendet.
Die erste für den Export und die zweite View um einen Download Block mit der aktuellen BeitragsID zu erzeugen.
Den Dateinamen etc. des Downloads kannst du anpassen, aber das wäre dann jetzt doch zu komplex.

Du kannst den Block auch über den Inhalt oder in ein Seitenblock packen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Aha!

Eingetragen von Christian Winte... (31)
am 19.05.2013 - 21:31 Uhr

Und ich suche die ganze Zeit, wie Goekmen bloß diesen Block erzeugt hat.... Klar, jetzt sehe ich auch, daß da ein 2.View
aufgaben-export-block existiert, den werde ich mir noch ansehen. Nochmals vielen Dank für die Hilfe!

  • 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 2 Wochen 2 Tagen
  • Hey danke
    vor 2 Wochen 3 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 3 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 3 Wochen 5 Tagen
  • In der entsprechenden View
    vor 3 Wochen 5 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 5 Tagen
  • gelöst
    vor 6 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20454

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» 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 34 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