Verwendung: News/Nachrichten in Rocksolid Columns

jan.kout's Avatar

jan.kout

24 Aug, 2015 06:17 AM

Produkt: Oneo Contao

Guten Tag,

ich würde gerne letzte Nachrichten in Spalten mittels Ihrer Erweiterung Rocksolid Columns ausgeben und positionieren lassen. Dafür habe ich die Template mod_newslist angepasst, damit es keinen Umschlag um die Nachrichtengruppe gibt. Allerdings erkennt Ihre Erweiterung nicht, dass es sich um einzelne Inhaltselemente handelt - siehe beigefügtes Bild, wie ich es im Backend einfügte.

Gibt es eine Möglichkeit das mit Ihrer Erweiterung so zu gestalten?

Schon jetzt danke ich Ihnen für Ihre Antwort und wünsche Ihnen noch einen schönen Tag.

Mit freundlichen Grüßen,

Jan Kout

  1. Support Staff 1 Posted by RockSolid Theme... on 24 Aug, 2015 08:11 AM

    RockSolid Themes's Avatar

    Vielen Dank für Ihre Frage.

    Der Spaltenumschlag kann nur einzelne Inhaltselemente erkennen, deshalb wird das Inhaltselement Nachrichtenliste als ein einzelnes Element erkannt und nur eine Spalte erzeugt.

    Nachrichten in Spalten dargestellt finden Sie in der Demo-Seite „News Boxed“, dort wird das Template templates/oneo/news_boxed.html5 eingesetzt.

  2. 2 Posted by jan.kout on 26 Aug, 2015 10:10 AM

    jan.kout's Avatar

    Für alle, die nur nur 3 Spalten auf dem Desktop, 2 auf Tablet und 1 auf Mobil haben möchten, gibt es folgende Lösung.

    Etwa so?

    <?php
        $config = array(
            'large' => array('-large-col-3-1 -large-first', '-large-col-3-1', '-large-col-3-1', '-large-col-3-1 -large-last'),
            'medium' => array('-medium-col-2-1 -medium-first', '-medium-col-2-1 -medium-last'),
            'small' => array('-small-col-1-1 -small-first -small-last'),
        );
        $classes = array('rs-column');
        foreach ($config as $name => $media) {
            $classes[] = $media[($this->count - 0) % count($media)];
            if ($this->count - 0 < count($media)) {
                $classes[] = '-' . $name . '-first-row';
            }
        }
        $this->class .= ' ' . implode(' ', $classes);
    ?>
    
  3. Support Staff 3 Posted by RockSolid Theme... on 26 Aug, 2015 02:02 PM

    RockSolid Themes's Avatar

    Der Code scheint korrekt zu sein bis auf einen Punkt, das large-Array sollte nur drei Elemente beinhalten:

    array('-large-col-3-1 -large-first', '-large-col-3-1', '-large-col-3-1 -large-last')
    
  4. 4 Posted by jan.kout on 26 Aug, 2015 03:39 PM

    jan.kout's Avatar

    Das funktioniert aber dann nicht. Dann wird die dritte Spalte nicht als dritte erkannt. In Ihrer Template steht es für die 4 Spalten auch so.

  5. Support Staff 5 Posted by RockSolid Theme... on 27 Aug, 2015 07:31 AM

    RockSolid Themes's Avatar

    Ja, für vier Spalten müssen vier Einträge im Array stehen, bei drei Spalten jedoch nur drei. Eventuell sind die Klassen noch um jeweils ein Element verschoben, weil Sie $this->count - 1 in $this->count - 0 geändert haben.

  6. 6 Posted by jan.kout on 27 Aug, 2015 07:52 AM

    jan.kout's Avatar

    Alles klar, jetzt verstehe ich es. Vielen Dank. :-)

    Liebe Grüße,

    Jan

  7. 7 Posted by Tobi on 03 Sep, 2015 10:53 PM

    Tobi's Avatar

    Moin,

    ich würde meine Nachrichten auch gern in Spalten anzeigen lassen und dachte, dass ich die Rocksolid Columns dafür nutzen kann.
    Müsste ich nun den Code in die mod_newslist eintragen oder muss ich das Oneo-Theme kaufen, damit ich »News Boxed« nutzen kann?

    Vielen Dank!

  8. 8 Posted by jan.kout on 04 Sep, 2015 05:57 AM

    jan.kout's Avatar

    Hier ist der ganze Code, einfach kopieren bzw. noch anpassen (es geht um die Vorlage news_latest)

    <?php
        $config = array(
            'large' => array('-large-col-3-1 -large-first', '-large-col-3-1', '-large-col-3-1 -large-last'),
            'medium' => array('-medium-col-2-1 -medium-first', '-medium-col-2-1 -medium-last'),
            'small' => array('-small-col-1-1 -small-first -small-last'),
        );
        $classes = array('rs-column');
        foreach ($config as $name => $media) {
            $classes[] = $media[($this->count - 1) % count($media)];
            if ($this->count - 1 < count($media)) {
                $classes[] = '-' . $name . '-first-row';
            }
        }
        $this->class .= ' ' . implode(' ', $classes);
    ?>
    <div class="layout_latest block <?= $this->class ?>">
      <?php if ($this->addImage): ?>
        <figure class="image_container attachment-misc-thumb wp-post-image<?= $this->floatClass ?>"<?php if ($this->margin): ?> style="<?= $this->margin ?>"<?php endif; ?>>
            <a href="<?= $this->link ?>"<?= $this->attributes ?> title="<?= $this->alt ?>">
          <?php $this->insert('picture_default', $this->picture); ?>
            </a>
          <?php if ($this->caption): ?>
            <figcaption class="caption"><?= $this->caption ?></figcaption>
          <?php endif; ?>
        </figure>
      <?php endif; ?>
      <h3><?= $this->linkHeadline ?></h3>
      <span class="title-divider"></span>


    <?php if ($this->teaser): ?> <div class="teaser"> <?php echo $this->teaser ?> </div> <?php endif; ?> <?php if ($this->hasMetaFields): ?> <p class="date">gepostet am <time datetime="<?= $this->datetime ?>"><?= $this->date ?></time></p> <?php endif; ?> </div>
  9. 9 Posted by Tobi on 06 Sep, 2015 11:54 AM

    Tobi's Avatar

    Top!
    Vielen Dank!

  10. 10 Posted by jan.kout on 17 Oct, 2015 03:29 PM

    jan.kout's Avatar

    Guten Tag,

    ich habe es mit dieser Anweisung auch bei Events probiert, allerdings scheint es nicht zu funktionieren - es wird nur eine Spalte erstellt. Was ist muss man da beachten?

    <?php
        $config = array(
            'large' => array('-large-col-4-1 -large-first', '-large-col-4-1', '-large-col-4-1', '-large-col-4-1 -large-last'),
            'medium' => array('-medium-col-2-1 -medium-first', '-medium-col-2-1 -medium-last'),
            'small' => array('-small-col-1-1 -small-first -small-last'),
        );
        $classes = array('rs-column');
        foreach ($config as $name => $media) {
            $classes[] = $media[($this->count - 1) % count($media)];
            if ($this->count - 1 < count($media)) {
                $classes[] = '-' . $name . '-first-row';
            }
        }
        $this->class .= ' ' . implode(' ', $classes);
    ?>
    <div class="event layout_teaser block <?= $this->class ?>">
    <?php if ($this->addImage): ?>
        <figure class="image_container<?php echo $this->floatClass; ?>"<?php if ($this->margin || $this->float): ?> style="<?php echo trim($this->margin . $this->float); ?>"<?php endif; ?>>
          <?php if ($this->href): ?>
            <a href="<?php echo $this->href; ?>"<?php echo $this->attributes; ?> title="<?php echo $this->alt; ?>">
          <?php endif; ?>
          <?php $this->insert('picture_default', $this->picture); ?>
          <?php if ($this->href): ?>
            </a>
          <?php endif; ?>
          <?php if ($this->caption): ?>
            <figcaption class="caption" style="width:<?php echo $this->arrSize[0]; ?>px"><?php echo $this->caption; ?></figcaption>
          <?php endif; ?>
        </figure>
      <?php endif; ?>
      <div class="header<?php echo $this->classHeader; ?>">
        <div class="time-wrapper"><span class="date"><?php echo $this->date; ?></span> <?php if ($this->time): ?>
        <span class="time"><?php echo $this->time  . " Uhr"; ?></span>
      <?php endif; ?></div>
      <p class="location"><?php echo $this->location; ?></p>
        <?php if ($this->showTags): ?>
        <?php if (count($this->taglist)): ?>
        <ul class="tag-chain">
        <?php $counter = 0; foreach ($this->taglist as $tag): ?>
        <li class="tag-chain-item<?php if ($counter == 0) echo ' first'; ?><?php if ($counter == count($this->taglist)-1) echo ' last'; ?><?php if ($this->showTagClass) echo ' ' . $tag['class']; ?>"><?php echo $tag['url']; ?></li>
        <?php $counter++; endforeach; ?>
        </ul>
        <?php endif; ?>
    <?php endif; ?>
    </div>
      <?php if ($this->details): ?>
        <h2><a href="<?php echo $this->href; ?>" title="<?php echo $this->title; ?> (<?php if ($this->day): echo $this->day; ?>, <?php endif; echo $this->date; if ($this->time): ?>, <?php echo $this->time; endif; ?>)"<?php echo $this->target; ?>><?php echo $this->link; ?></a></h2>
      <?php else: ?>
        <h2><?php echo $this->title; ?></h2>
      <?php endif; ?>
      <div class="teaser">
        <?php echo $this->teaser; ?>
      </div>
      <?php if ($this->details): ?>
        <p class="more"><a href="<?php echo $this->href; ?>" title="<?php echo $this->readMore; ?>"<?php echo $this->target; ?>><?php echo $this->more; ?> <span class="invisible"><?php echo $this->link; ?></span></a></p>
      <?php endif; ?>
    </div>
    
  11. Support Staff 11 Posted by RockSolid Theme... on 19 Oct, 2015 08:27 AM

    RockSolid Themes's Avatar

    Vielen Dank für Ihre Frage.

    Die Variable $this->count existiert im Events-Template nicht, deshalb können die Spalten nicht über eine Template-Anpassung eingebaut werden.

  12. 12 Posted by jan.kout on 19 Oct, 2015 11:29 AM

    jan.kout's Avatar

    ich danke Ihnen sehr für Ihre Antwort.

    Ich habe schon die Contao-Entwickler um die Implementierung gebeten. In 4.1 wird es wohl schon sein, in 3.5 wahrscheinlich nicht.

    Meine Frage ist noch trotzdem: Gäbe es noch eine andere Möglichkeit, das in 3.5 umzusetzen?

    Mit freundlichen Grüßen,
    Jan Kout

  13. Support Staff 13 Posted by RockSolid Theme... on 19 Oct, 2015 01:02 PM

    RockSolid Themes's Avatar

    Vermutlich ist es möglich $this->count nachzurüsten indem man das Events-Modul anpasst, oder ein eigenes Modul erzeugt das vom Events-Modul ableitet. Sollten Sie Unterstützung bei der Anpassung benötigen, stehen Ihnen unsere Partner gerne zur Verfügung. Eine Auswahl an Agenturen und Freelancer finden Sie in unserem Partnernetzwerk: http://rocksolidthemes.com/de/contao/service/agenturen

  14. 14 Posted by jan.kout on 18 Sep, 2018 09:14 AM

    jan.kout's Avatar

    Hallo,

    seit 4.6 ist es nun möglich, auch Events zählen zu lassen. Das sollte durch die Variable eventCount möglich sein (siehe https://github.com/contao/calendar-bundle/pull/32/files). Ich habe den Code schon dementsprechend angepasst. Leider scheint es immer noch nicht zu funktionieren. Wahrscheinlich mache ich noch etwas falsch. Können Sie mir bitte helfen? Danke.

    <?php
        $config = array(
            'large' => array('-large-col-3-1 -large-first', '-large-col-3-1', '-large-col-3-1 -large-last'),
            'medium' => array('-medium-col-2-1 -medium-first', '-medium-col-2-1 -medium-last'),
            'small' => array('-small-col-1-1 -small-first -small-last'),
        );
        $classes = array('rs-column');
        foreach ($config as $name => $media) {
            $classes[] = $media[($this->eventCount - 1) % count($media)];
            if ($this->eventCount - 1 < count($media)) {
                $classes[] = '-' . $name . '-first-row';
            }
        }
        $this->class .= ' ' . implode(' ', $classes);
    ?>
    
  15. Support Staff 15 Posted by RockSolid Theme... on 18 Sep, 2018 02:48 PM

    RockSolid Themes's Avatar

    Bei $this->eventCount handelt es sich um Gesamtanzahl an Events und diese Variable ist auch nur im Haupt-Template (mod_eventlist.html5) verfügbar, nicht im event_-Template.

  16. 16 Posted by jan.kout on 18 Sep, 2018 03:16 PM

    jan.kout's Avatar

    Das heißt, dass die Logik nicht funktionieren wird, wie es bei News der Fall ist? Verstehe ich es richtig. Oder muss ich die PHP-Anweisung nur in mod_eventlist.html5-Template packen und dann im event_-Template ausgeben lassen?

  17. Support Staff 17 Posted by RockSolid Theme... on 19 Sep, 2018 01:53 PM

    RockSolid Themes's Avatar

    Das heißt, dass die Logik nicht funktionieren wird, wie es bei News der Fall ist?

    Korrekt. Das Event-Modul ist anders aufgebaut als die News-Liste.

  18. 18 Posted by jan.kout on 20 Sep, 2018 09:51 AM

    jan.kout's Avatar

    Ok, ich habe das Contao-Team gebeten, die neue Variable auch für die event_-Templates zur Verfügung zu stellen. https://github.com/contao/contao/issues/74

Reply to this discussion

Internal reply

Formatting help / Preview (switch to plain text) No formatting (switch to Markdown)

Attaching KB article:

»

Already uploaded files

  • Snímek_obrazovky_2015-08-24_v 8.17.30.png 84.8 KB

Attached Files

You can attach files up to 10MB

If you don't have an account yet, we need to confirm you're human and not a machine trying to post spam.

Keyboard shortcuts

Generic

? Show this help
ESC Blurs the current field

Comment Form

r Focus the comment reply box
^ + ↩ Submit the comment

You can use Command ⌘ instead of Control ^ on Mac

Recent Discussions

18 Oct, 2018 06:44 AM