REX_ARTICLE[] Abfrage ob leer

Wie verwendet man Templates oder erstellt Navigationen und passt diese an.

REX_ARTICLE[] Abfrage ob leer

Beitragvon HaRT » 10. Mär 2011, 18:03

Hallo liebe REDAXO-Gemeinde,

experimentiere gerade mit der Version 4.3.
Geht sowas hier eleganter in kpl. neuer Syntax für die Artikelausgabe mittels REX_ARTICLE[]:
Code: Alles auswählen
      <div id="rechts-block">
        <?
        if ($this->getArticle(1) != "") {
        ?>
          REX_ARTICLE[ctype=2]   
        <?
        } else { 
        ?>
          REX_ARTICLE[id=3]
        <?
        }
        ?>
      </div>
?
Habe schon alles durchsucht - auch die Geschichten mit "ifempty" und "instead" - aber wahrscheinlich stehe ich auf dem berühmten Schlauch.
Dies hier geht jedenfalls nicht:
Code: Alles auswählen
REX_ARTICLE[ctype=2 ifempty='REX_ARTICLE[id=3]']

Kann mich jemand aufklären? Danke.
HaRT
 

Re: REX_ARTICLE[] Abfrage ob leer

Beitragvon Thomas.Blum » 11. Mär 2011, 09:25

Hej,

du musst immer die id mit angeben.

Kleines Bspl.:
Code: Alles auswählen
REX_ARTICLE[id="1" ctype="2" prefix="<p>" suffix="</p>" ifempty="Kein Inhalt vorhanden"]


ein anderes Bspl. bei der Modulausgabe:
Code: Alles auswählen
REX_LINK[id="1" prefix='<a href="' suffix='">']REX_VALUE[id="1" ifempty="mehr..."]REX_LINK[id="1" instead="</a>"]


vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden

Re: REX_ARTICLE[] Abfrage ob leer

Beitragvon HaRT » 11. Mär 2011, 12:06

Hallo Thomas,

danke für deine Antwort.
Meine Fragestellung zielte aber in eine andere Richtung. Ich versuche mal zu konkretisieren:

Allgemein stellt sich mir die Frage, wie man Ausdrücke wie "REX_ARTICLE[]" innerhalb von PHP-Code verwenden kann (mit "echo" oder "print" kommt nicht des Erwartete).

Speziell (bezogen auf mein kleines Beispiel) steht die Frage, wie man Folgendes bewerkstelligen kann:
Wenn Inhalt von ctype 2 des aktuellen Artikels leer ist, dann gebe den Inhalt von Artikel 3 aus.
Das funktioniert so mit meinem Codeschnipsel - aber ich halte das so für nicht wirklich elegant. Außerdem würde ich gerne die alte Form "$this->getArticle()" in der Bedingungsabfrage vermeiden.

vG Harald
HaRT
 

Re: REX_ARTICLE[] Abfrage ob leer

Beitragvon Gregor.Harlan » 11. Mär 2011, 12:16

Hallo Harald,

REX_ARTICLE[] funktioniert nur außerhalb von PHP und lässt sich nicht verschachteln. $this->getArticle() gibt es zwar länger als REX_ARTICLE[], ist aber weiterhin aktuell und die PHP-Variante.

Ich würde das so lösen:
Code: Alles auswählen
<?php
$ctype2 = $this->getArticle(2);
if($ctype2 != '') {
  echo $ctype2;
} else {
  $a = new rex_article(3);
  echo $a->getArticle();
}
?>

Bei deiner Variante würde der Code des Ctype 2 doppelt ausgeführt werden (wenn nicht leer), was teilweise zu unerwünschten Ergebnissen führen kann.

Gruß, Gregor
Zuletzt geändert von Gregor.Harlan am 11. Mär 2011, 12:28, insgesamt 1-mal geändert.
Benutzeravatar
Gregor.Harlan
Entwickler
 
Beiträge: 825
Registriert: 4. Jun 2007, 09:35
Wohnort: Dresden

Re: REX_ARTICLE[] Abfrage ob leer

Beitragvon Thomas.Blum » 11. Mär 2011, 12:22

Hej,

ohne PHP kommst du nicht weiter.

Probier mal das:

Code: Alles auswählen
<?php
$a = new rex_article(3);
$c = htmlspecialchars($a->getArticle());
?>
REX_ARTICLE[ctype="2" ifempty='<?php echo $c; ?>']


vg Thomas
blumbeet - web.studio - Dresden - 0351 217 6225
webbude - Blog über CSS.XHTML.REX
Ein Wunschzettel
Benutzeravatar
Thomas.Blum
Entwickler
 
Beiträge: 4670
Registriert: 24. Aug 2004, 21:11
Wohnort: Dresden


Zurück zu Templates/Navigationen [R4]

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste