Feld auf leer abfragen
![](http://www.drupalcenter.de/files/noavatar_mini.gif)
am 10.12.2008 - 11:31 Uhr in
Hallo,
php Anfängerfrage: Ich habe ein Textfeld in meinem Inhaltstyp. Dies ist kein Pflichtfeld. In meinem Template möchte ich das Feld nur andrucken wenn es auch gefüllt wurde. Mein Versuch das Feld auf Inhalt abzuprüfen schlug leider fehl.
Hat femand einen Tipp für mich?
Danke und Gruß
lierai
<?php if ($node->field_projekt[0]['value'] != "" { ?> <h1>Projekt: <?php print $node->field_projekt[0]['value'] } ?></h1>
- Anmelden oder Registrieren um Kommentare zu schreiben
nicht so schöne Lösung
am 10.12.2008 - 11:43 Uhr
Hallo,
habe eine Lösung gefunden die aber nicht schön ist.
Eventuell hat ja jemand einen Tipp für mich wie das schöner zu machen ist.
Danke
lierai
<?php $myVariable = $node->field_projekt[0]['value'] ?>
<?php print $myVariable ?>
<?php if($myVariable != "") { ?>nicht leer <?php } ?>
isset
am 10.12.2008 - 12:27 Uhr
Moin!
Ähm, php-Grundlagen.
<?php
if (isset($node->field_project[0]['value'])) {
print 'nicht leer';
}
?>
http://de.php.net/isset
hth,
Stefan
Eine schöne Übersicht
am 10.12.2008 - 12:30 Uhr
Eine schöne Übersicht über die diversen Vergleichsmöglichkeiten und ihre teils unterschiedlichen Ergebnisse in PHP gibt es hier: http://www.php.net/manual/de/types.comparisons.php
leer
am 10.12.2008 - 13:07 Uhr
Ups, er wollte ja testen, ob der Inhalt leer ist. Nicht, ob das Attribut existiert. Da war die Hand wieder schneller als das Auge :-)
<?php
if (isset($node->field_project[0]['value']) && $node->field_project[0]['value']) {
print 'nicht leer';
}
?>
siehe http://lists.drupal.org/pipermail/development/2005-October/010768.html
Stefan
Danke für die Hilfe
am 10.12.2008 - 15:46 Uhr
Danke für die Hilfe
@lierai09, das was Du machst ist doch paradox.
am 10.12.2008 - 18:07 Uhr
Bezugnehmend auf Deinen PHP Code aus dem Eroeffnungspost des Thread. Ich verstehe nicht was Du ueberhaupt erreichen willst.
Das was Du machst ist doch paradox:
In meinem Template möchte ich das Feld nur andrucken wenn es auch gefüllt wurde.
Wenn das Feld Inhalt hat dann wird der Inhalt angezeigt. Da muss man vorher nicht pruefen. Das ist einfach so.
Wenn das Feld keinen Inhalt hat wird es nicht angezeigt. Da muss man vorher nicht pruefen. Das ist einfach so.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
@quiptime: Grundsätzlich
am 10.12.2008 - 18:17 Uhr
@quiptime:
Grundsätzlich hast du Recht, aber in der Regel geht es ja nicht um reine Plaintext-Ausgabe, sondern es gibt rundherum um den Wert des Feldes Markup. Eben diesen muss man ja nicht zwingend auswerfen und leer dastehen lassen, daher macht die Frage danach, wie man abfragt ob ein Feld einen Wert hat, durchaus auch Sinn.
Wenn "Projekt" das Label des CCK Feldes ist muss man nicht ...
am 10.12.2008 - 18:38 Uhr
Ich bleibe im Falle dieses Thread bei meiner Aussage.
Das will er ausgeben:
<h1>Projekt: <?php print $node->field_projekt[0]['value'] } ?></h1>
Jetzt soll Niemand sagen das "Projekt:" der zusaetzliche Output ist der die Inhaltspruefung begruendet. Auch das h1 Tag kann es nicht sein.
Um diese beiden Dinge anzuzeigen oder nicht bedarf es keiner Pruefung. Wenn "Projekt" das Label des CCK Feldes ist muss man nicht auf existierenden Feldinhalt pruefen denn es wird ja nur angezeigt wenn das Feld Inhalt hat. Der Rest wie die durch h1 entehende Schriftgroesse etc. kann man mittels CSS pimpen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Wo ich nichts ausgebe, muss
am 10.12.2008 - 18:50 Uhr
Wo ich nichts ausgebe, muss ich nichts pimpen und doe "offiziellen" Feldbezeichner benutze ich in der Regel selbst auch nicht.. Drupal erzeugt ohne entsprechende Maßnahmen massig Code, der einem viel Flexibilität lässt. Aber Redundanz fängt ganz bestimmt dort an, wo Code für nicht vorhandenen Content ausgespuckt wird ;-)
@Alexander, verblueffende Logik.
am 10.12.2008 - 19:06 Uhr
@Alexander,
verblueffende Logik. Wenn man diesem Gedanken folgt: Sehe Dir 'ne Standard Theme style.css mit ihren vielen Formatierunge an und frage Dich mal wie man bei jeder Anzeige einer einzelnen Webseite dynamisch CSS Code zum Browser schaufelt der immer nur exakt die Formatierungen enthaelt die auch als HTML Element auf der gerade angezeigten Seite existieren.
Das waere das Optimum. Was aber hinfaellig wird wenn man bedenkt das der Browser CSS Code im Cache ablegt.
Aber Redundanz fängt ganz bestimmt dort an, wo Code für nicht vorhandenen Content ausgespuckt wird
Was hat das mit meiner Aussage ueber das Label eines CCK Feldes und seines Inhaltes zu tun?
Du hast vermutlich etwas missverstanden.
Wenn ein CCK Feld keinen Inhalt hat so wird nicht nur der Inhalt nicht angezeigt sondern auch die zu diesem Feld gehoerenden HTML/CSS Elemente werden nicht angezeigt. Das ist eigentlich bereits optimal.
Nicht optimal dagegen ist wenn man extra ein Nodetype Template mit nicht benoetigtem Code versieht der Funktionaliataeten realisiert die von Drupal bereits ohne zusaetzlichen Code realisierbar sind.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Lösung?
am 18.06.2009 - 11:52 Uhr
Der Thread ist zwar schon etwas älter, aber ich bin genau über diesen Sachverhalt gestolpert. Wie löst man das am saubersten - ohne im Template eventuelle Beschriftungen nach dem Motto
<h1>Projekt: <?php print $node->field_projekt[0]['view'] ?></h1>
auf leeren Inhalt abfragen zu müssen?Die Argumentation, dass diese Variante nicht sinnvoll ist, habe ich verstanden. Allerdings hat sich mir auch keine Lösung aus den voran gegangenen Threads ergeben. Kann mir jemand auf die Sprünge helfen?