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

Statt des node Titels den Inhalt eines oder mehrerer CKK Felder anzeigen

Eingetragen von LJR (132)
am 13.09.2010 - 16:12 Uhr in
  • Views
  • Drupal 6.x

Ich würde gerne für manche Inhaltstypen eigene node.tpl.php erstellen, in denen statt des Titels der Inhalt eines ckk Feldes angezeigt wird. Ich würde also gerne $title durch einen entsprechenden String ersetzen. Gibt es da eine Möglichkeit?

‹ Formular erstellen extra Token benötigt [gelöst] CCK: Node Reference Feld liefert nur vollständiges HTML ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Automatic Nodetitles hilft da

Eingetragen von tiger (415)
am 13.09.2010 - 16:18 Uhr

Automatic Nodetitles hilft da weiter.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Automatic Nodetitle. Da

Eingetragen von caw (2762)
am 13.09.2010 - 16:24 Uhr

Automatic Nodetitle. Da brauchst du keine eigenen Templates anlegen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ich merke, ich habe mich

Eingetragen von LJR (132)
am 13.09.2010 - 16:35 Uhr

Ich merke, ich habe mich nicht klar genug ausgedrückt. Ist auch ein bißchen kompliziert.
Ich benutze schon Automatic nodetitels, weil sich der Titel, um das Feld eindeutig zu idendifizieren, aus mehreren ckk Feldern zusammensetzt. Das liegt daran, dass sich bei vielen ckk Feldern der Inhalt wiederholt und so viele NodeTitel identisch wären. So bleibt jeder Titel trotzdem einmalig und das hilft mir beim Verwalten der Inhalte.
Dadurch wird der Titel aber unnötig lang, und das sieht nicht gut aus im Layout.
Lange Rede kurzer Sinn, es soll eben nicht der Titel als Solches angezeigt werden, sondern nur ein bestimmtes CKK Feld im Kopfbereich des nodes, als Titel erscheinen. So können manche Nodes angezeigt werden, als hätten Sie den selben Titel, für mich haben sie ihn aber beim Verwalten nicht.
Automatic Node Titels hilft mir hier nur teilweise weiter, weil es immer den tatsächlichen Titel anzeigt. Der soll aber verborgen werden.
Zur Not könnte ich ihn auch einfach im Template auskommentieren. Aber es sähe besser aus, wenn ein kurzer Titel in größeren Buchstaben da steht.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Automatic Nodetitle reicht

Eingetragen von torfnase (1525)
am 13.09.2010 - 16:39 Uhr

Automatic Nodetitle reicht noch nicht ganz aus, du brauchst für die Muster auch noch das token Modul, aber damit klappt es dann ganz ausgezeichnet.
btw: in meinem neuestesn Video (Klick) stelle ich übrigens genau das vor :-)

mußte mal reinschauen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Konkretes Beispiel

Eingetragen von LJR (132)
am 13.09.2010 - 16:54 Uhr

Ich habe, glaube ich, zu umständlich und abstrakt mein Problem dargestellt. Hier ein konkretes Beispiel.
Es handelt sich bei der Seite unter anderem um einen Veranstaltungskalender für Theaterinszenierung. Man soll zum Beispiel eingeben können, wo wird über all Hamlet gespielt, und er zeigt an, in Köln, Dortumund und Berlin. Nun gibt es einen Inhaltstyp Inszenierungen. Dort können in einem Formular Angaben zur Inszenierung gemacht werden, unter anderem den Namen des Theaters, der Stadt und der Regiesseurs. Aus diesen Angaben setzte ich mit Automatic NodeTitles den Titel der Nodes zusammen. Der Node heißt also zum Beispiel "Hamlet - Pfalztheater Kaiserslautern - Johannes Reitmeier" und in Berlin und Dortmund dementsprechend anders. So sehe ich beim Verwalten des Inhalts immer um welche Inszenierung es sich genau handelt.
Soweit so gut. Im fertigen Node sieht dieser Wasserkopf aber blöd aus, zumal all die Angaben untendrunter im Node gleich nochmal stehen. Das wirkt allbern. Dort soll bei allen drei Anzeigen als Kopf nur in großen Buchstaben "Hamlet" stehen.
Würden aber alle Nodes tatsächlich nur Hamlet heißen, wüsste ich bei der Inhaltsverwaltung nicht auf den ersten Blick um welche Hamletinszenierung es sich bei den jeweiligen Nodes handelt.
Dort wo der Node Titel angezeigt wird, soll also nicht der Titel des Nodes erscheinen, sondern das CKK Feld, dass den Inhalt des CKK Feldes "Stücktitel" Stücks anzeigt.
Automatic Nodetitel stößt hier an die Grenze. Es geht auch nicht um den Titel als solches, sonderen um das, was an entsprechender Stelle angezeigt wird, und das soll nicht der Titel sein.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst im Template statt

Eingetragen von tiger (415)
am 13.09.2010 - 17:05 Uhr

Du kannst im Template statt der Variable einfach dein gewünschtes Feld ausgeben.

<?php
$field_name
= 'mein-Titelfeld';
if (
$node->content && is_array($node->content[$field_name]) && isset($node->content[$field_name]['#children'])) {
    print
$node->content[$field_name]['#children'];
}
?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Dann bleibt Dir wirklich

Eingetragen von wla (9461)
am 13.09.2010 - 17:10 Uhr

Dann bleibt Dir wirklich nichts anderes, als einen eigenen Template-File für diesen Nodetyp zu basteln. Ein ganz einfacher könnte z.b. so ausehen:

  <div class="node<?php if (!$status) { print " node-unpublished"; } ?>">
   
    <?php if ($page == 0) : ?>
      <h2 class="nodeTitle">
        <a href="<?php print $node_url; ?>">
          <?php print $title; ?>
        </a>
      </h2>
    <?php endif; ?>
   
    <div class="foto">
      <div class="bild"><?php print $node->field_bild[0][view]; ?></div>
      <div class="fototext"><?php print $node->field_bild[0][data][description]; ?></div>
    </div>
   
    <?php if ($links) : ?>
      <div class="links">
        <?php print $links; ?>
      </div>
    <?php endif; ?>
   
  </div>

Das ist einfach der Standard node.tpl.php aus dem Theme (oder aus dem Node-Modul) zusammengestrichen und für einen speziellen Zweck geändert.
Ob und was Du wegstreichst oder zufügst mußt Du selbst wissen. Es hilft, die $node-Struktur ausgeben um nachzusehen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Nur für das Protokoll:Falls

Eingetragen von torfnase (1525)
am 13.09.2010 - 21:12 Uhr

Nur für das Protokoll:
Falls jemand auf den Thread stößt und als Titel in der Tat nur einen Teil eines CCK-Feldes haben möchte, dann würde das folgende Code-Schnippsel in das Feld

Pattern for the title:

funktionieren....

(angenommen, das Feld hat die Bezeichnung field_vorname und es sollen die ersten 5 Zeichen als Titel genommen werden)

<?php
print (substr($node->field_vorname[0]['value'],0,5));
?>

Ich habe es noch mal reingeschrieben, weil auch die Syntax etwas anders ist, als bei der Anzeige im Template

liebe Grüße
Berthold

  • Anmelden oder Registrieren um Kommentare zu schreiben

Erst mal vielen Dank für die

Eingetragen von LJR (132)
am 14.09.2010 - 09:08 Uhr

Erst mal vielen Dank für die prombten, zahlreichen Antworten.
Ich habe es jetzt nach dem Vorschlag von tiger mal gewagt. Ich habe die folgenden Zeilen in ein template speziell für den entspechenden Inhaltstyp eingefügt:

<?php
$field_name
= 'mein-Titelfeld';
if (
$node->content && is_array($node->content[$field_name]) && isset($node->content[$field_name]['#children'])) {
    print
$node->content[$field_name]['#children'];
}
?>

wobei ich natürlich 'mein-titelfeld' durch den Namen des gewünschten Feldes ersetzt habe. 'field_werktitel'. Anschließend habe ich $title durch $field_name ersetzt.

Nun zeigt er aber statt des Inhalts des Feldes den Titel des Feldes an, und alle entsprechenden Artikel haben als Überschrift field_werktitel.

Wie bringe ich ihn aber dazu den Inhalt des Feldes anzuzeigen?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Gib doch mal mit print_r den

Eingetragen von tiger (415)
am 14.09.2010 - 09:37 Uhr

Gib doch mal mit print_r den Inhalt deines nodes an. Im Quelltext siehst du dann genau, wie du dein Feld ansprechen musst.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie geht das?

Eingetragen von LJR (132)
am 14.09.2010 - 10:46 Uhr

Bin leider absoluter Anfänger was php angeht. Wie mache ich das? Gebe ich das an der shell ein? Und wenn ja wie?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ein Blick auf php.net hätte

Eingetragen von torfnase (1525)
am 14.09.2010 - 10:58 Uhr

ein Blick auf php.net hätte da genügt :-)

klick - Funktion print-r

  • Anmelden oder Registrieren um Kommentare zu schreiben

Von dieser Handbuchseite

Eingetragen von aschiwi (1113)
am 14.09.2010 - 11:00 Uhr

Von dieser Handbuchseite genommen: http://drupal.org/node/11816

$node (object)
The node object. To view all of the properties of a current $node object, put the following line of code in your node.tpl.php:

<pre><?php print_r($node); ?></pre>

Also o.g. Code in deine node.tpl.php Datei schmeißen, dann kriegst du ne wild aussehende Anzeige :)

P.S. Ein Blick auf php.net bringt PHP-Anfängern nichts, weil da der Zusammenhang zu Drupal fehlt.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Der spukct tatsächlich 'ne

Eingetragen von LJR (132)
am 14.09.2010 - 11:57 Uhr

Der spukct tatsächlich 'ne ganze Menge aus. Ich weiß aber nicht, was ich davon bei $field_name = 'mein-Titelfeld'; eintragen soll.
Ich habe die Ausgabe hier als Datei angehängt. Wer Lust und Zeit hat, wäre nett, wenn er mal drauf guckt.

AnhangGröße
Ausgabe print_r.txt 68.44 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Wieso genau meinst du, dass

Eingetragen von aschiwi (1113)
am 14.09.2010 - 12:05 Uhr

Wieso genau meinst du, dass automatic nodetitles nichts für dich ist? Damit kannst du doch CCK-Felder anstelle des Titels zeigen. Dann wird auch bei der Eingabe kein Titel-Feld angezeigt. Oder ist es so, dass du den Titel doch brauchst und eingeben willst, und nur an einer Stelle die CCK-Felder statt Titel willst?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Vielleicht habe ich was falsch verstanden.

Eingetragen von LJR (132)
am 14.09.2010 - 12:46 Uhr

Ich benutze ja automatic nodetitels. Vielleicht habe ich auch was nicht verstanden, aber automatic nodetitels zeigt nicht ckk-Felder anstelle des Titels an, sondern erstellt einen Titel aus ckk Feldern und zeigt diesen an. Ich möchte aber, das nicht der Originaltitel angezeigt wird, sonern nur ein bestimmtes Feld. Das ist ein wenig unüblich und erweist sich als schwieriger als gedacht. Zumindest für einen Anfänger wie mich.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Ersetze einfach die Variable

Eingetragen von tiger (415)
am 14.09.2010 - 13:14 Uhr

Ersetze einfach die Variable $title in deinem Template mit $node->field_werktitel[0]['value']

  • Anmelden oder Registrieren um Kommentare zu schreiben

LJR schrieb Ich benutze ja

Eingetragen von aschiwi (1113)
am 14.09.2010 - 13:21 Uhr
LJR schrieb

Ich benutze ja automatic nodetitels. Vielleicht habe ich auch was nicht verstanden, aber automatic nodetitels zeigt nicht ckk-Felder anstelle des Titels an, sondern erstellt einen Titel aus ckk Feldern und zeigt diesen an. Ich möchte aber, das nicht der Originaltitel angezeigt wird, sonern nur ein bestimmtes Feld. Das ist ein wenig unüblich und erweist sich als schwieriger als gedacht. Zumindest für einen Anfänger wie mich.

Das hast du richtig verstanden. Hätte jetzt nicht gedacht, dass das ein Problem für dich ist. Dann kannst du wirklich im Node Template einfach die Titel-Variable entfernen und mit dem CCK-Feld ersetzen. Das dürfte bei der Teaser-Ansicht aber nicht funktionieren, um das gleich dazuzusagen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

$node->field_werktitel[0]['va

Eingetragen von LJR (132)
am 14.09.2010 - 13:34 Uhr

$node->field_werktitel[0]['value'] hat gefunzt. Super.
Das dürfte bei der Teaser-Ansicht aber nicht funktionieren, um das gleich dazuzusagen.
Stimmt leider auch. Warum eigentlich?

  • Anmelden oder Registrieren um Kommentare zu schreiben

Du kannst die Ansicht ja

Eingetragen von tiger (415)
am 14.09.2010 - 13:41 Uhr

Du kannst die Ansicht ja anpassen und als Zeilendesign Felder wählen statt Beitrag.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Weil an der Stelle nicht das

Eingetragen von aschiwi (1113)
am 14.09.2010 - 13:42 Uhr

Weil an der Stelle nicht das Node Template greift, sondern page.tpl.php. Umgehen kannst du das, indem du deine Übersichtsseiten, auf denen Teaser vorkommen, mit Views anlegst. Und zwar mit Feld-Displays statt Node-Displays. Denn wenn mich nicht alles täuscht, kannst du die page.tpl.php nicht so überlisten wie die node.tpl.php, weil dir dort das Node Objekt nicht zur Verfügung steht.

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

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

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 1 Benutzer und 13 Gäste online.

Benutzer online

  • wla

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