Ergebnis 1 bis 6 von 6

Thema: "Details"-Link - If-Abfrage

  1. #1
    Contao-Nutzer
    Registriert seit
    14.08.2010.
    Ort
    Hannover-Linden
    Beiträge
    23

    Standard "Details"-Link - If-Abfrage

    Guten Morgen,
    ich verwende das tpl simpletable und möchte, dass der Details link nur angezeigt wird. Wenn auch das Feld "einsatzbeschreibung" (feldtyp: langtext) ausgefüllt wurde.
    Jem. eine Idee?

    gruß und einen guten start in den tag

    unix_agent

  2. #2
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Na, dann mach das doch *g*
    Hier mal wieder der Hinweis zum Template bearbeiten: http://de.contaowiki.org/Catalog_Templates_anpassen

    Grob gesagt:
    Lass in der Liste auch das Feld 'einsatzbeschreibung' ausgeben. Im Template sorgst du dann dafür das der Inhalt nicht ausgegeben wird. Dort prüfst du dann ob da Inhalt drinn ist und lässt dann bei bedarf den Link zu Details erzeugen.

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  3. #3
    Contao-Nutzer
    Registriert seit
    14.08.2010.
    Ort
    Hannover-Linden
    Beiträge
    23

    Standard

    moin, danke für die schnelle antwort.
    Mein template sieht momentan folgendermaßen aus:
    PHP-Code:
    <?php if (count($this->entries)): ?>

    <table class="layout_simpletable" summary="Catalog Items" cellspacing="0" cellpadding="5">

    <thead class="header">
    <tr>
    <?php list($field$heading) = each($this->entries); ?>
    <?php 
    foreach ($heading['data'] as $field=>$data): ?>
    <?php 
    if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <th class="field <?php echo $field?>"><?php echo $data['label']; ?></th>
    <?php endif; ?>
    <?php 
    endforeach; ?>
    </tr>
    </thead>

    <tbody class="body<?php echo $entry['class'] ? ' '.$entry['class'] : ''?>">
    <?php foreach ($this->entries as $entry): ?>
    <tr class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''?>">
    <?php foreach ($entry['data'] as $field=>$data): ?>
    <?php 
    if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
        <td class="field <?php echo $field?>"><?php if (strlen($data['value'])): ?>
    <?php 
    echo $data['value']; ?>
    <?php 
    endif; ?>
    </td>
    <?php endif; ?>
    <?php 
    endforeach; ?>
    <?php 
    if ($entry['showLink'] && $entry['link']):  ?>
    <td class="link"><div class="link"><?php echo $entry['link']; ?></div></td>
    <?php endif; ?>
    <?php 
    if ($entry['linkEdit']): ?>
    <td class="edit"><div class="linkEdit"><?php echo $entry['linkEdit']; ?></div></td>
    <?php endif; ?>
    </tr>
    <?php endforeach; ?>
    </tbody>
    </table>

    <?php else: ?>

    <?php if ($this->condition): ?>
    <div class="condition"><?php echo $this->condition?></div>
    <?php else: ?>
    <p class="info">There are no entries matching your search.</p>
    <?php endif; ?>

    <?php endif; ?>
    wie muss die if-abfrage aussehen und wo füge ich sie ein? Desweiteren blende ich nun wie die "einsatzbeschreibung" aus?

  4. #4
    Contao-Nutzer
    Registriert seit
    14.08.2010.
    Ort
    Hannover-Linden
    Beiträge
    23

    Standard

    Problem gelöst.

    Danke.

    PHP-Code:
    <?php if (count($this->entries)): ?>

    <table class="layout_simpletable" summary="Catalog Items" cellspacing="0" cellpadding="5">

    <thead class="header">
    <tr>
    <?php list($field$heading) = each($this->entries); ?>
    <?php 
    foreach ($heading['data'] as $field=>$data): ?>
    <?php 
    if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <th class="field <?php echo $field?>"><?php echo $data['label']; ?></th>
    <?php endif; ?>
    <?php 
    endforeach; ?>
    </tr>
    </thead>

    <tbody class="body<?php echo $entry['class'] ? ' '.$entry['class'] : ''?>">
    <?php foreach ($this->entries as $entry): ?>
    <tr class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''?>">
    <?php if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
        
    <td class="field einsatzdatum">
    <?php echo $entry['data']['einsatzdatum']['value']; ?>
    </td>

    <td class="field einsatzart">
    <?php echo $entry['data']['einsatzart']['value']; ?>
    </td>

    <td class="field strasse">
    <?php echo $entry['data']['strasse']['value']; ?>
    </td>

    <?php endif; ?>
    <?php 
    if ($entry['data']['einsatzbeschreibung']['value'] && $entry['link']):  ?>
    <td class="link"><div class="link"><?php echo $entry['link']; ?></div></td>
    <?php endif; ?>
    <?php 
    if ($entry['linkEdit']): ?>
    <td class="edit"><div class="linkEdit"><?php echo $entry['linkEdit']; ?></div></td>
    <?php endif; ?>
    </tr>
    <?php endforeach; ?>
    </tbody>
    </table>

    <?php else: ?>

    <?php if ($this->condition): ?>
    <div class="condition"><?php echo $this->condition?></div>
    <?php else: ?>
    <p class="info">There are no entries matching your search.</p>
    <?php endif; ?>

    <?php endif; ?>
    ABER

    Um das Label Einsatzbeschreibung auszublenden bin ich nun so vorgegangen
    PHP-Code:
    <thead class="header">
    <tr>
    <?php list($field$heading) = each($this->entries); ?>
    <?php 
    foreach ($heading['data'] as $field=>$data ): ?>
    <?php 
    if (!in_array($field, array('catalog_name','parentJumpTo'))): ?>
    <th class="field einsatzdatum"><?php echo $heading['data']['einsatzdatum']['label'?></th>
    <th class="field einsatzart"><?php echo $heading['data']['einsatzart']['label'?></th>
    <th class="field strasse"><?php echo $heading['data']['strasse']['label'?></th>
    <?php endif; ?>
    <?php 
    endforeach; ?>
    </tr>
    </thead>
    Das Problem ist, dass er mir nun alles 4x anzeigt. Ich kriege die schleife einfach nicht raus.
    Geändert von unix_agent (06.10.2010 um 14:46 Uhr)

  5. #5
    Contao-Yoda Avatar von MacKP
    Registriert seit
    15.06.2009.
    Ort
    Duisburg
    Beiträge
    13.292
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo unix_agent,
    wenn du nicht alles automatisch ausgeben lassen willst, sondern alles selbst bestimmen willst (so wie in deinem Code) musst du das foreach entfernen und die Ausgaben anpassen:
    <?php foreach ($heading['data'] as $field=>$data ): ?>

    Viele Grüße
    Contao Pool | C-C-A | MetaModels | [Internetseite -> Mediendepot Ruhr]
    [Arbeitet bei -> Paus Design & Medien]
    "I can EXPLAIN it to you, but I can't UNDERSTAND it for you."

  6. #6
    Contao-Nutzer
    Registriert seit
    20.06.2009.
    Ort
    Wien
    Beiträge
    189

    Standard

    Wollte mich hier nur kurz anhängen, weil ich gerade vor demselben Problem stand. Allerdings mit dem catalog_simple template und mit "Standard-Link überschreiben" angehakt. Und dank MacKPs stets freundlicher Hilfe zur Selbsthilfe hab ich mich auch brav durch den Code gequält.

    Ausgangssituation: ich möchte, dass alle Katalogeinträge in der Katalogliste mit ihrem Titel (und sonst nix) aufscheinen, aber nur jene, die mit Inhalt befüllt sind, mit einem Link zur Detailansicht versehen sind. Habe dazu im Katalog ein Checkbox-Feld mit dem Namen "details" angelegt. Wenn das angehakt ist, ist der Titel in der Listenansicht verlinkt, wenn nicht, erscheint der Titel nur als Text.

    Code:
    <div class="layout_simple">
    <?php foreach ($this->entries as $entry): ?>
    <?php if($entry['data']['details']['value']):?>  // hier wird abgefragt, ob meine Checkbox details angehakt ist
    <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
    <div class="value"><?php echo $entry['data']['Titel']['value']; ?></div> // hier wird der Titel mit Link ausgegeben
    </div>
    <?php else: ?>
    <div class="item<?php echo $entry['class'] ? ' '.$entry['class'] : ''; ?>">
    <div class="value"><?php echo $entry['data']['Titel']['raw']; ?></div>  // hier wird der Titel als reiner Text ausgegeben
    </div>
    <?php endif;?>
    <?php endforeach; ?>
    </div>
    Ob das jetzt super-elegant ist, weiss ich nicht (Anmerkungen oder Korrekturen sind natürlich willkommen). Bei mir funktionierts jedenfalls und vielleicht hilfts auch anderen weiter.

    LG
    Sonja

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. Antworten: 6
    Letzter Beitrag: 18.01.2011, 16:27
  2. "Details des Datensatzes ID 1" nach Install richtig aber...
    Von Ria im Forum Installation / Update
    Antworten: 19
    Letzter Beitrag: 10.01.2011, 23:36
  3. Gruppenzuordnung nach "Link" Aktivierungsmail User Registrierung verschwunden!
    Von ChrisP im Forum Geschützte Bereiche/Mitglieder
    Antworten: 0
    Letzter Beitrag: 22.08.2010, 15:50
  4. "parallele" Navigation mit "active" bzw. "trail" Klasse?
    Von Reimi im Forum Layout / Templates / Holy Grail
    Antworten: 6
    Letzter Beitrag: 22.12.2009, 08:57

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •