Ergebnis 1 bis 12 von 12

Thema: Nachrichten-Teaser in 3 Spalten ausgeben?!

  1. #1
    Contao-Nutzer
    Registriert seit
    18.11.2009.
    Ort
    Köln
    Beiträge
    77

    Standard Nachrichten-Teaser in 3 Spalten ausgeben?!

    Hallo,

    ich würde gerne die Teaser der News nicht untereinander sondern in (3) Spalten ausgeben lassen. DIV#links, DIV#mitte, DIV#rechts. Dementsprechend also Nachricht 1,4,7,10,.... in linker Spalte. Da die Bilder/Teaser immer unterschiedlich hoch sind funktioniert das mit dem Floaten nicht und die neue CSS3 Funktion möchte ich nicht nutzen.

    Hat jemand so etwas schon gemacht? bzw. könnte mir einen Tipp geben wie ich es anstellen könnte?

    Thx Swiper
    php 7.2, mySQL 5.7, 4.4.12

  2. #2
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    width: 33%; height: 200px; overflow: hidden; float: left; für die einzelnen Teaser.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  3. #3
    Contao-Nutzer
    Registriert seit
    18.11.2009.
    Ort
    Köln
    Beiträge
    77

    Standard

    @Andreas
    Unbrauchbar! Nachricht 1 in "Div-Container 1", Nachricht 2 in "Div-Container 2" usw.usw.
    Aussserdem meinte ich, dass die Nachrichten-Div's eine variable Höhe haben. Floaten geht NICHT. Zumindest ohne CSS3 nicht. Das will ich nicht weil meine Besucher teilweise noch mit MSIE 6,7 oder so einem Zeug unterwegs sind.
    php 7.2, mySQL 5.7, 4.4.12

  4. #4
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Zeig doch mal die Seite, dann kann man dir besser helfen.

    Ich würde wahrscheinlich den DIVs 1,4,7,10 usw. mit div:nth-child(3n+1) ein clear: both; mitgeben. Damit kannst du dir die feste Höhe sparen. Die alten Browser müssten auch schon das float verstehen, darfst nur die Breite nicht vergessen.

    <cynical>Wenn der User mit IE6|7 unterwegs ist, dann muss es ja nicht genau passen, diese User sind daran gewöhnt, dass die Seiten im Internet schrottig aussehen.</cynical>

    Aber du kannst auch die Templates anpassen, so dass du nach jedem 3. DIV einen Trenner bekommst, oder ne extra Class reingenerierst.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  5. #5
    Contao-Nutzer
    Registriert seit
    18.11.2009.
    Ort
    Köln
    Beiträge
    77

    Standard

    Mag sein das sie MSIE 6 User einiges gewohnt sind. Normalerweise dürfte man sich gar nicht mehr drum kümmern. Aber genau diese besuchen meine Seite
    Schau mal auf http://www.pinterest.com. So ähnlich soll es aussehen.

    Ich würde gerne im Template zählen, aber das geht leider nicht. Dann würde ich einen Counter mitlaufen lassen und via Modulo die News in die Spalten sortieren.
    php 7.2, mySQL 5.7, 4.4.12

  6. #6
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Einen Counter kannst du als globale Variable mitlaufen lassen, falls es anders nicht geht.
    PHP-Code:
    $GLOBALS['myVar'] ++; 
    Die Anordnung wie in deinem Beispiel dürfte schwer zu realisieren sein, da es ja keine Reihen mehr gibt. Jedes Element müsste wahrscheinlich absolut positioniert werden, wobei vorher eine aufwendige Berechnung mit JS stattfinden müsste.

    Vielleicht hilft dir das hier http://masonry.desandro.com/ Suche in den Erweiterungen nach masonry.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  7. #7
    Contao-Urgestein
    Registriert seit
    29.10.2009.
    Ort
    Magdeburg
    Beiträge
    2.020
    Partner-ID
    626
    User beschenken
    Wunschliste

    Standard

    Was man machen könnte die Ausgabe der einzelnen News-Items im Newslist-Template abzugreifen. Dann bekommt man auch so etwas wie Pinterest hin.

    PHP-Code:
    <?php
    $columns 
    = array();
    $count 0;

    foreach(
    $this->items as $item): 
        
    $count = ($count == : ++$count);
        
    $columns[$count] = $item;
    endforeach;

    foreach(
    $columns as $column):
        
    ?><div class="col">
            <?php echo $column?>
        </div>
    <?php endforeach;

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.232
    Partner-ID
    10107

    Standard

    Zitat Zitat von Swiper Beitrag anzeigen
    Schau mal auf http://www.pinterest.com. So ähnlich soll es aussehen.
    Eigentlich willst du es genau nicht wie auf pinterest . Die Elemente auf der Übersichtsseite von pinterest haben eine fixe Höhe, du willst aber eine Variable Höhe der Elemente und eine neue "Zeile" nach jedem 3. Element. Auf Seiten von pinterest, wo die einzelnen Elemente eine variable Höhe haben, gibt es auch kein Konzept von Zeilen. Hier werden einfach alle Elemente gefloated, ohne Rücksicht darauf, wie der Browser diese dann anordnet (aufgrund der variablen Höhe).

  9. #9
    Contao-Nutzer
    Registriert seit
    18.11.2009.
    Ort
    Köln
    Beiträge
    77

    Standard

    Ich habe es lösen können!

    Ins Template habe ich eine globale Var eingefügt.
    PHP-Code:
    $GLOBALS['myVar'] ++; 
    Dann habe ich 3 Module angelegt die 3 verschiedene Templates aufrufen.
    Darin mittels Modulo 0,1,2 die Spalten befüllt.

    Ich weiß, dass es nicht der richtige Weg ist... Aber es funzt.

    Was besseres ist mir nicht eingefallen.

    Thx Swiper
    php 7.2, mySQL 5.7, 4.4.12

  10. #10
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Im Template mod_newslist steht
    PHP-Code:
      <?php foreach ($this->articles as $article) echo $article?>
    Du kannst das auch mal so probieren, ohne globale Variable
    PHP-Code:
    <?php
      $i 
    0;
      foreach (
    $this->articles as $article)
      {
        echo 
    '<span class="news_'.$i++.'">'.$article.'</span>';
      }
    ?>
    mod_newslist ist ja der Wrapper für z.B. news_short, deswegen kannst du in news_short keinen Counter hochzählen, aber in mod_newslist.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    34.232
    Partner-ID
    10107

    Standard

    Ich würde es, bei Benutzung eines Grid Systems (und wenn man es jetzt bspw. nur in #main unterbringen will) zB so machen:

    Template mod_newslist
    PHP-Code:
    <!-- indexer::stop -->
    <div class="<?php echo $this->class?> block"<?php echo $this->cssID?><?php if ($this->style): ?> style="<?php echo $this->style?>"<?php endif; ?>>

      <?php if ($this->headline): ?>
        <<?php echo $this->hl?>><?php echo $this->headline?></<?php echo $this->hl?>>
      <?php endif; ?>
      
      <?php $i 0?>
      <div class="group">
      <?php foreach ($this->articles as $article): ?>
          <div class="span4<?php if ($i == 0) echo " cl"?>">
              <?php echo $article?>
          </div>
          <?php $i++; ?>
      <?php endforeach; ?>
      </div>

      <?php echo $this->pagination?>

    </div>
    <!-- indexer::continue -->
    .group wäre hier gleichzusetzen mit .row (wie es in fertigen Grid Systemen oft verwendet wird). .span4 erstreckt sich über 4 Spalten des 12-Grid Systems (also ein Drittel). Und jeder dritte Artikel, beginnend mit dem ersten, bekommt zusätzlich eine .cl class (die einfach clear:left; hat).

    Statt foreach kann man natürlich auch gleich for verwenden, damit man den counter nicht extra definieren muss.
    Geändert von Spooky (18.09.2013 um 09:12 Uhr)

  12. #12
    Contao-Fan Avatar von jenda
    Registriert seit
    20.06.2009.
    Ort
    Berlin
    Beiträge
    494

    Standard

    Eine Anleitung, wie man es mit der Erweiterung dk_masonry umsetzen kann, findet ihr hier.

Aktive Benutzer

Aktive Benutzer

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

Lesezeichen

Lesezeichen

Berechtigungen

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