Einen Flexinode-Inhaltstyp "Superstatik" mit passendem Template erstellen
Eingetragen von quiptime (4972)
am 16.06.2006 - 14:28 Uhr in
am 16.06.2006 - 14:28 Uhr in
Bitte hier die Erfahrungen, Tips und Hinweise zum Flexinode-Inhaltstyp "Superstatik" posten. Danke.
"Superstatik" ist hier
http://www.drupalcenter.de/node/1213
zu finden.
-------------
quiptime
- Anmelden oder Registrieren um Kommentare zu schreiben
Fehlermeldung
am 27.06.2006 - 00:45 Uhr
Erst einmal vielen Dank für die ausführliche Beschreibung.
Leider erscheint nach dem vorgehen kein superstatischer Inhalt. Ich habe den Fehler im Template "node-flexinode-1.tpl.php" ausgemacht:
Die If-Anweisung müsste auf 'page == 1' prüfen und das Ende des If Blocks müsste zwischen den zwei schließenden div-tags sein.
Nach den Änderungen sehe ich zwar den Inhalt, aber in Begleitung folgender Fehlermeldungen:
--------------------
* user warning: Unknown column 'Object' in 'where clause' query: SELECT timestamp FROM history WHERE uid = '1' AND nid = Object in includes\database.mysql.inc on line 120.
* warning: Illegal offset type in modules\node.module on line 113.
* warning: Illegal offset type in modules\node.module on line 116.
* user warning: Unknown column 'Object' in 'field list' query: INSERT INTO history (uid, nid, timestamp) VALUES (1, Object, 1151365077) in includes\database.mysql.inc on line 120.
--------------------
Leider habe ich erst mit Drupal neu angefangen und komme demzufolge jetzt nicht so recht weiter. Anscheinend will drupal den Aufruf in die Tabelle 'history' speichern, aber dort wo sich die nid befinden sollte, versucht er ein Object zu speichern (?).
Du hast Drupal 4.7? Bevor Du
am 27.06.2006 - 08:27 Uhr
Du hast Drupal 4.7?
Bevor Du mit Superstatik arbeitest, teste doch mal die Funktion von Flexinode ohne ein Template zu dem Inhaltstypen, den Du erstellt hast. Es ist ja nicht so, daß man nur mit einem Template Inhalte sehen kann.
Also ganz normal einen Flexinode-Inhaltstypen erstellen.
Dann noch die entsprechenden Konfigurationen für den Inhaltstypen vornehmen.
Und dann einen Betrag mit dem Inhaltstyp schreiben.
Erst wenn bei dieser Verwendung keine Fehler eintreten und der mit dem Flexinode-Inhaltstyp geschriebene Beitrag normal zu sehen ist, wende Dich einem Template wie z. Bsp. Superstatik zu.
Wenn Du an diesen Punkt gekommen bist, sehen wir weiter, was bei Dir die Fehlerursachen bei der Verwendung von Superstatik sind.
-------------
quiptime
Flexinode funktioniert normal
am 27.06.2006 - 23:02 Uhr
Ich verwende die aktuelle Drupal 4.7.2 Version auf Apache 2.0.53 und MySQL 4.1.11.
Andere Flexinode-typen funktionieren und wenn ich die template-Datei für den superstatik-Typ umbenenne sehe ich ebenfalls den Inhalt ohne Fehlermeldungen.
Testweise habe ich für den zweiten Flexinodetyp ebenfalls eine Templatedatei angelegt (mit den im ersten Beitrag von mir genannten Änderungen): Der Inhalt wird auch hier von den gleichen Fehlermeldungen begleitet.
Wenn ich mich mehr mit Drupal auskenne, kann ich vielleicht bessere Tests durchführen. Einige HowTo's und FAQs warten ja noch auf mich. ;-)
Verwendest Du die
am 28.06.2006 - 00:24 Uhr
Verwendest Du die zusätzliche function flexinode_load_data in der "template.php"?
Ist "template.php" eine PHP-Datei?
Wieviel Zeilen gibt es bei Dir in der function flexinode_load_data zwischen den einschließenden Funktionsklammern?
Es müsssen 2 Zeilen sein.
Eine mit "$data = ..."
Die Zweite mit "return ..."
-------------
quiptime
Fehler gefunden
am 29.06.2006 - 00:18 Uhr
Nach einigen Tests habe ich jetzt den Fehler gefunden.
Beim Laden der flexinode-Daten hast du im Template "node-flexinode-1.tpl.php" den vorhandenen node->nid überschrieben:
$area_.$node->nid = flexinode_load_data($node->nid, 5);
print $area_.$node->nid->textual_data;
Dadurch wird $node->nid zum Daten-Array (der Rückgabe-Wert von flexinode_load_data). Ich habe jetzt stattdessen eine temporäre Variable verwendet:
$superstaticContent = flexinode_load_data($node->nid, 1);
print $superstaticContent->textual_data;
und es klappt. :-)
Fein. Noch etwas zu
am 29.06.2006 - 13:32 Uhr
Fein.
Noch etwas zu
Die If-Anweisung müsste auf 'page == 1' prüfen
page == 0 entspricht der Teaseranzeige
page == 1 entspricht der Anzeige des vollen Beitrages
Da beim Aufruf einer Superstatikseite gleich bei der Teaseranzeige der volle Text des Beitrages gezeigt wird und es auch kein "weiterlesen" zur Anzeige des vollen Beitrages existiert, ist "page == 0" richtig.
Wichtig
Es gibt in diesem Zusammenhang allerdings bei der Konfiguration des Feldes "Textarea" noch eine Option:
"im Teaser anzeigen"
Das bedeutet, das Textfeld muss im Teaser angezeigt werden und deswegen muss diese Option gewählt werden.
Ich werde diesen Punkt in der Superstatik-Doku noch entsprechend hervorheben.
-------------
quiptime
Danke
am 29.06.2006 - 21:40 Uhr
Ach so ist das mit der page-variable.
Wieder was dazugelernt. :-)
Danke für die Erklärungen!