Views PHP -> Oder Operator liefert falsche Werte

am 02.05.2014 - 18:05 Uhr in
Hallo,
ich würde gerne mit Views PHP einen Link ausgeben, wenn 1 von 2 Werten nicht leer ist.
Kurze Beschreibung:
Ich habe in einem contenttypen unter anderem ein normales Textfeld ( body ) und eine Bildergalerie. Jetzt würde ich gerne in meiner View einen Link zum gesamten Inhalt der Node haben, wenn mindestens einer der beiden Felder einen Inhalt hat. Es kommt aber auch vor, das beide Felder keinen Inhalt haben. Dann brauche ich auch keinen Link. Bis jetzt habe ich folgenden Code:
<?php
$node = node_load($data->nid);
$var1 = $node->body[LANGUAGE_NONE][0]['value'];
$var2 = $node->field_bilder_f_r_die_galerie_2[LANGUAGE_NONE][0]['value'] ;
if((isset($var1)) || (isset($var2))){
echo "link";
}
else{
echo "nolink";
}
?>
Als Ergebnis liefert er mir immer "link" zurück, auch wenn beide Felder leer sind . Wenn beide Felder leer sind, sollte eigentlich "nolink" ausgewertet werden.
Wenn ich aus Testzwecken den or - Operator mit einem and - Operator austausche, wertet er alles wie erwartet richtig aus !!!
Wo habe ich denn meinen Denkfehler ?
Vielen Dank
Bav
- Anmelden oder Registrieren um Kommentare zu schreiben
denke daran
am 02.05.2014 - 19:15 Uhr
isset liefert auch true, wenn ein Space enthalten ist.
Or liefert true, wenn einer von beiden etwas enthält, während and nur dann true liefert, wenn beide etwas enthalten.
Grüße
Ronald
CKEditor
am 03.05.2014 - 12:11 Uhr
Danke für Deine Antwort. Habe den Fehler auch gefunden. Über den CKEditor hat sich irgendwie noch ein p-tag eingeschlichen. War natürlich nur per Quellcodeanzeige ersichtlich.
So führte meine Abfrage natürlich zu einen falschen Ergebnis. Jeglichen Code aus dem CKEditor geschmissen und die Ergebnisse stimmen.
Allerdings bekomme ich jetzt noch folgende Fehlermeldung:
Notice: Undefined index: und in __lambda_func() (Zeile 2 von /home/bavramor/data/Webdesign/Webseiten/feuerwehr-germendorf/sites/all/modules/views_php/plugins/views/views_php_handler_field.inc(198) : runtime-created function).
Notice: Undefined index: und in __lambda_func() (Zeile 3 von /home/bavramor/data/Webdesign/Webseiten/feuerwehr-germendorf/sites/all/modules/views_php/plugins/views/views_php_handler_field.inc(198) : runtime-created function).
Der Fehler selber scheint immer geworfen zu werden, wenn das Ergebnis "NULL" ist. Allerdings enthalten die Felder ja auch keinen Inhalt.
Das wäre die Codezeile 198:
$this->php_output_lamda_function = create_function('$view, $handler, &$static, $row, $data, $value', ' ?>' . $this->options['php_output'] . '<?php ');
Und ein paar Zeilen mehr als ausschnitt:
/**
* Implements views_handler_field#pre_render().
*/
function pre_render(&$values) {
if (!empty($this->options['php_output'])) {
$this->php_output_lamda_function = create_function('$view, $handler, &$static, $row, $data, $value', ' ?>' . $this->options['php_output'] . '<?php ');
}
}
/**
* Implements views_handler_field#render().
*/
function render($values) {
// Execute output PHP code.
if (!empty($this->options['php_output']) && isset($this->php_output_lamda_function)) {
$normalized_row = new stdClass;
foreach ($this->view->style_plugin->rendered_fields{$this->view->row_index} as $field => $value) {
$normalized_row->$field = $value;
}
$function = $this->php_output_lamda_function;
ob_start();
$function($this->view, $this, $this->php_static_variable, $normalized_row, $values, isset($values->{$this->field_alias}) ? $values->{$this->field_alias} : NULL);
$value = ob_get_clean();
}
else {
$value = check_plain($values->{$this->field_alias});
}
return $value;
}
}
Wäre für einen Workaround sehr dankbar.
Gruß Bav