# bx:if

Das Tag `if` zeigt seinen Inhalt nur an, wenn eines oder mehrere innere Tags einen Inhalt besitzen.

```xml
<bx:if [type="{any | one | all}"] [trim] [rekursiv="{n}"] ] > Inhalt </bx:if>
<bx:if.1>...<bx:if.2>...<bx:if.else>...</bx:if.else>...</bx:if.2>...<bx:if.else>...</bx:if.else>...</bx:if.1> 
```
Bei mehreren geschachtelten Schleifen kann ein Bezeichner angegeben werden (ab Version 2.6.0.). Die else-Blöcke beziehen sich auf das jeweils direkt übergeordnete if.
Ab Version 2.6.2 kann man auch trim angeben, damit störende Leerzeichen und Umbrüche ignoriert werden (auf die das if sonst anschlagen würde).

| type="any" | Inhalt nur anzeigen, wenn mindestens ein Tag einen Inhalt hat |
| --- | --- |
| type="one" | Inhalt nur anzeigen, wenn genau ein Tag einen Inhalt besitzt |
| type="all" | (Standard) Inhalt nur anzeigen, wenn alle Tags einen Inhalt haben |
| trim | Check Leerzeichen und Umbrüche im zu prüfenden Inhalt (entspricht einem tools.trim um das zu prüfende Tag) |
| rekursiv | Check auch verschachtelte Ebenen, n gibt die Ebene an (siehe Beispiel) |

### Beispiele

```xml
<bx:if recursive="1" type="any">
  <ul>
    <bx:recordfield.alleAnsprechpartner>
      <li><bx:recordfield.Name/></li>
    </bx:recordfield.alleAnsprechpartner>
  </ul>
</bx:if>

Alternativ bisher:
<bx:iF>
  <ul>
    <bx:recordfield.alleAnsprechpartner>
      <bx:if><li><bx:recordfield.Name/></li></bx:if>
    </bx:recordfield.alleAnsprechpartner>
  </ul>
</bx:iF>

```
Ansprechpartner (mit umgebenenden <ul>) soll ausgegeben werden, wenn mindestens ein Ansprechpartner verknüpft ist (ist die Ebene 1)

## 

## if.else

```xml
<bx:if>
 zu prüfende <bx:tags>
 <bx:if.else [showalways]> 
  alternativer Text
 </bx:if.else> 
</bx:if> 

```
Der Inhalt dieses Tags wird immer dann ausgeführt, wenn die Bedingungen des übergeordneten Tests nicht zutreffen.

**Kurzform:**

```xml
<bx:if else=“keine Angabe“><bx:recordfield.Ansprechpartner/></bx:if> 

entspricht:

<bx:if>
  <bx:recordfield.Ansprechpartner/>
  <bx:if.else>
    keine Angabe
  </bx:if.else>
</bx:if> 
```
| showalways | Inhalt des else-Blocks wird immer ausgegeben* (ab *V2.6.1) siehe Beispiel |
| --- | --- |

### Beispiele

```xml
<bx:if>
  <a href="<bx:recordfield.Link />">
  <bx:if.else showalways> 
    <bx:recordfield.Bild />
  </bx:if.else>
  </a>
</bx:if> 
```
Hier wird in jedem Fall das Bild ausgegeben und nur falls `Link` gefüllt ist, wird ein a-Element um das Bild gesetzt.

## if.elseif

```xml
<bx:if>
  zu prüfende <bx:tags>
  <bx:if.elseif> 
    weiterer zu prüfender Inhalt
    <bx:if.else>
      alternativer Inhalt
    </bx:if.else>
  </bx:if.elseif> 
</bx:if> 
```
Statt `bx:if.else` kann auch `bx:if.elseif` verwendet werden. Die Besonderheit liegt darin, dass dieses Tag dann wie eine verschaltete if-Verzweigung wirkt, es startet also eine eigene Auswertung seines Inhalts.

### Beispiele

```xml
<bx:if>
  <bx:recordfield.Telefon/>
  <bx:if.elseif> 
    <bx:recordfield.Handy/>
    <bx:if.else>
      telefonisch nicht erreichbar
    </bx:if.else>
  </bx:if.elseif> 
</bx:if> 
```
Erst wird geprüft, ob eine Telefonnummer angegeben ist und wenn vorhanden ausgegeben. Wenn nicht, wird nach der Handynummer gefragt und wenn diese angegeben ist, ausgegeben. Wenn keine der beiden Felder ausgefüllt ist, wird der Text ausgegeben.

## if.ignore

```xml
<bx:if>
  zu prüfende <bx:tags>
  <bx:if.ignore>
    <bx:recordfield.wird_nicht_geprueft />
  </bx:if.ignore>
</bx:if>
```
Um Bereiche innerhalb eines `bx:if`-Tags von der Inhaltsprüfung auszuschließen, kann `bx:if.ignore` verwendet werden. Der Inhalt dieses Tags wird ganz normal auf der Seite angezeigt.

### Beispiele

```xml
<bx:if>
  <img src="<bx:recordfield.Bild type="path"/>" alt="<bx:if.ignore><bx:recordfield.Alt_Titel/></bx:if.ignore>">
</bx:if>
```
Wenn ein Bild angegeben ist, wird das img-Tag(Bild) angezeigt, der Alt-Titel, der erfahrungsgemäß nicht immer vorhanden ist, wird von der Prüfung ausgeschlossen, d.h. wenn er fehlt, bleibt der alt-Parameter leer, das Bild wird aber trotzdem ausgegeben.

## filter

Um JSP-Bausteine als Filter eines `bx:if`- oder `bx:if.elseif`-Tags zu verwenden, geben Sie als zusätzlichen Parameter `filter="<filtername>"` an. Die Entscheidung, ob der Inhalt ausgegeben wird oder nicht, wird dann dem Script überlassen. Die vorhergehende Auswertung durch das Tag selbst wird im Request-Parameter attrValue übergeben, welche über jenen Parameter auch geändert werden kann.