[gelöst] Textfeld gestalten
am 13.09.2010 - 23:41 Uhr in
Hallo,
habe mit cck ein Textfeld in einem Inhaltstyp erstellt. Dieses Textfeld möchte ich jetzt gerne in meinem eigenen Theme individuell gestalten (d. h. ich möchte einen <div>
um die Ausgabe des Textfelds legen)
Habe mir hierfür die content-field.tpl.php kopiert. Allerdings muss ich gestehen ich verstehe nur Bahnhof. Als Ausgabe erhalte ich meinem Text um den sich 4 <div>
legen, wovon 3 jedoch leer sind. Auf 3 davon könnte ich also gut verzichten, jedoch weiss ich nicht im geringsten wie ich diese Datei entsprechend ändern müsste. Diese Datei ist wahrlich nicht sehr lang und vielleicht kann jemand von Euch etwas Licht ins Dunkel bringen und erläutern was dort im Detail passiert???
<?php if (!$field_empty) : ?>
<div class="field field-type-<?php print $field_type_css ?> field-<?php print $field_name_css ?>">
<?php if ($label_display == 'above') : ?> // was bedeuted das 'above' zum Beispiel?
<div class="field-label"><?php print t($label) ?>: </div>
<?php endif;?>
<div class="field-items">
<?php $count = 1;
foreach ($items as $delta => $item) :
if (!$item['empty']) : ?>
<div class="field-item <?php print ($count % 2 ? 'odd' : 'even') ?>"> // diese Zeile ist mir auch sehr unklar
<?php if ($label_display == 'inline') { ?> // diese auch
<div class="field-label-inline<?php print($delta ? '' : '-first')?>"> // was bedeutet hier z. B. -first?
<?php print t($label) ?>: </div>
<?php } ?>
<?php print $item['view'] ?> // was ist view?
</div>
<?php $count++;
endif;
endforeach;?>
</div>
</div>
<?php endif; ?>
--edit(stBorchert)--
code-Tags ergänzt
- Anmelden oder Registrieren um Kommentare zu schreiben
Frei kopiert aus:
am 14.09.2010 - 08:51 Uhr
Frei kopiert aus: api.drupal.org
Actually, control over CCK fields can be gained using CCK's own templates. Copy content-field.tpl.php to your theme directory and copy it again for each field whose mark-up you wish to alter, naming it field-field_name.tpl.php.
So, if I have a field called field_my_field in CCK and I want to modify the mark-up for that field, I copy content-field.tpl.php to my theme directory and then make *another* copy named content-field-field_my_field.tpl.php. I can then change the mark-up in content-field-field_my_field.tpl.php and it will alter the output of that specific CCK field.
Alternativ kannst du CCK-Felder auch in der page.tpl.php einfügen. Hier ein Beispiel mit einem DIV drumrum:
<?php
print (!empty($node->FELDNAME[0]['value'])) ? '<div>'.$node->FELDNAME[0]['value'].'</div>' : '';
?>
Zu deinen Fragen im Code
<?php if ($label_display == 'above') : ?>
Wenn das Label oberhalb angezeigt werden soll, dann ...<?php if ($label_display == 'inline') { ?>
Wenn das Label inline angezeigt werden soll, dann ...<div class="field-item <?php print ($count % 2 ? 'odd' : 'even') ?>">
fügt eine Klasseodd
odereven
hinzu.<div class="field-label-inline<?php print($delta ? '' : '-first')?>">
"-first" wird an die Klasse angehängt.<?php print $item['view'] ?>
Best guess: gib die View-Version des Items aus.Problem gelöst? Dann [gelöst] im Titel des Beitrags ergänzen.
Theming in Drupal
am 14.09.2010 - 09:12 Uhr
Dazu braucht es folgende Kenntnisse
Ein CCK-Feld in Drupal hat ein Label, das über Felder anzeigen auf hidden, above und inline gestellt werden kann (Punkt 4). Daraus ergibt sich, das das Label auch irgendwann tatsächlich ausgegeben werden muß => die Zeilen mit den $label_display.
Ein CCK-Feld kann mehrfach Werte beinhalten (Punkt 4). Die foreach-Schleife sorgt dafür das bei Mehrfachwerten alle ausgegeben werden. Die werden gerne untereinander mit wechselnden Hintergründen ausgegeben. Die Hintergründe sind CSS, aber es braucht passende Klassen, damit man das anwenden kann (odd/even). Ach ja,
$count % 2
ist die Modulo Operation und liefert genau das.Falls das Label "inline" dargestellt werden soll, bekommt das erste label die Klasse "field-label-inline-first", die anderen nur "field-label-inline". Der Wert $delta beginnt bei 0 (Zählung der Werte) und der ?-Operator in PHP geht: Bedingung ? wahr : falsch. Hier: 0 =>falsch, andere Zahl => wahr
<?php print $item['view'] ?>
ist die eigentliche Ausgabe des Feldes für den jeweiligen Wert.Du solltest Dich mit der Basis des Themings noch ein bischen befassen, sonst wirst Du es schwer haben mit den Template-Files.
Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
Ihr seid ja super! Dank Euch
am 14.09.2010 - 10:41 Uhr
Ihr seid ja super! Dank Euch verstehe ich jetzt worum es hier geht.
<?php
print (!empty($node->FELDNAME[0]['value'])) ? '<div>'.$node->FELDNAME[0]['value'].'</div>' : '';
?>
genau so eine einfache Lösung habe ich gesucht - und sie funktioniert auch bei mir (man muss halt nur wissen wie es geht)!
Danke auch Dir Werner für Deine ausführliche Erklärung die wahrlich Licht in das große Dunkel gebracht hat. Davon werden sicherlich auch andere Drupal-Anwender profitieren.