Ankündigung

Einklappen
Keine Ankündigung bisher.

Pagination in Newsteaser zerschossen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Pagination in Newsteaser zerschossen

    Hi!

    Ich habe den <?php if ($hasText): ?> Part aus dem news_newslist_v4.html5 Template entfernt, damit auch die News anklickbar sind, welche keine weiteren Inhaltselemente enthalten, sondern nur aus Bild und Teasertext bestehen.

    Dadurch entsteht in der Pagination aber jetzt irgendwie etwas komisches:

    Klicke auf die Grafik für eine vergrößerte Ansicht

Name: screen01.jpg
Ansichten: 158
Größe: 47,7 KB
ID: 26330

    Woran könnte das liegen?

    Grüße,
    mapfei

  • #2
    Hi,
    du hast sicher jetzt ein offenen a-Element. Es sind zwei Stellen zu streichen.

    Ich würde nichts im HTML-Code entfernen. Setz einfach oben die $hasText Variable auf strickt true. Dann hast du das gleiche Ergebnis, ohne etwas löschen zu müssen.

    Angehängte Dateien
    http://www.premium-contao-themes.com

    Kommentar


    • #3
      Zitat von Tim Beitrag anzeigen
      Hi,
      du hast sicher jetzt ein offenen a-Element. Es sind zwei Stellen zu streichen.
      Stimmt, Mist. 😳 Jetzt passt's...

      PHP-Code:
      $hasText true
      ?

      Kommentar


      • #4
        Ja genau. Einfach $hastText = true; hat den gleichen Effekt, dass der Link quasi immer gesetzt wird.
        http://www.premium-contao-themes.com

        Kommentar


        • #5
          Die entsprechenden Beiträge sind dann aber dennoch nicht anklickbar... 🤷‍♂️

          PHP-Code:
          <?php
          $hasText 
          true;
          $teaserMaxLength 165;
          $teaser = \Contao\StringUtil::substrHtml($this->teaser,$teaserMaxLength);
          if( 
          strlen($teaser) != strlen($this->teaser) )
          {
          $teaser rtrim($teaser,'</p>').' ...</p>';
          }
          ?>

          <div class="newslist-v4 block autogrid one_third item <?php echo $this->class?>" itemscope itemtype="http://schema.org/Article">

          <div 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 ($hasText): ?><a href="<?php echo $this->link?><?php echo $this->attributes?> title="<?php echo $this->alt?><?php if($this->target && $this->url): ?>target="_blank" <?php endif; ?>><?php endif; ?>
          <?php 
          if ($this->picture): ?><?php $this->insert('picture_default'$this->picture); ?><?php endif; ?>
          <span class="news-overlay"><i class="fa fa-plus"></i></span>
          <?php if ($hasText): ?></a><?php endif; ?>

          Kommentar


          • #6
            Generiert Contao keinen Link, wenn nichts drinsteht? -> macht ja eigentlich auch Sinn, weil ja kein Inhalt existiert zum Anzeigen im Leser. Was genau soll denn bei Klick passieren?
            http://www.premium-contao-themes.com

            Kommentar


            • #7
              Doch, sorry. Der Link wird jetzt generiert – so wie es sein soll. 👍

              Es betrifft jetzt nur noch die Beiträge, welche kein Bild besitzen. Wie löse ich das am geschicktesten? Lässt sich irgendwie ein Standard-Bild definieren, welches angezeigt wird, wenn kein Bild definiert wurde?

              Klicke auf die Grafik für eine vergrößerte Ansicht

Name: screen01.jpg
Ansichten: 138
Größe: 105,9 KB
ID: 26339

              Kommentar


              • #8
                Ein leeres DIV wäre ne schnelle Möglichkeit im Template oder halt eine Art Fallback Bild.

                Ca. ab Zeile 15

                PHP-Code:
                <?php if ($this->picture): ?>
                <?php $this
                ->insert('picture_default'$this->picture); ?>
                <?php 
                else: ?>
                {{image::MEIN-FALLBACK-BILD}}
                <?php endif; ?>
                http://www.premium-contao-themes.com

                Kommentar


                • #9
                  Perfekt! Wenn ich jetzt noch das Reader-Template dahingehend angepasst bekomme, dass das Artikelbild angezeigt wird, wenn keine weiteren Inhaltselemente vorhanden sind...? 😎

                  Kommentar


                  • #10
                    Zitat von mapfei Beitrag anzeigen
                    Perfekt! Wenn ich jetzt noch das Reader-Template dahingehend angepasst bekomme, dass das Artikelbild angezeigt wird, wenn keine weiteren Inhaltselemente vorhanden sind...? 😎
                    Bei den News, meinst du? Also das Teaser-Bild?
                    http://www.premium-contao-themes.com

                    Kommentar


                    • #11
                      Zitat von Tim Beitrag anzeigen

                      Bei den News, meinst du? Also das Teaser-Bild?
                      Ganz genau.

                      Kommentar


                      • #12
                        Ja, da macht's einem Contao gar nicht so leicht. Im mod_newsreader muss man sich die Infos der jeweiligen aktiven News reinholen

                        mod_newsreader

                        Code:
                        <?php $this->extend('block_searchable'); ?>
                        
                        <?php $this->block('content'); ?>
                        
                        <?php // News Model
                        $objNews = NewsModel::findByAlias( Input::get('items') );
                        ?>
                        
                        <?php // News-Bild
                        if($objNews->addImage && !empty($objNews->singleSRC)): ?>
                        {{picture::<?= $objNews->singleSRC; ?>}}
                        <?php else: ?>
                        {{picture::FALLBACK-BILD}}
                        <?php endif; ?>
                        
                        <h1><?= $objNews->headline; ?></h1>
                        
                        <?= $this->articles ?>
                        
                        <?php if ($this->referer): ?>
                        <!-- indexer::stop -->
                        <p class="back"><a href="<?= $this->referer ?>" title="<?= $this->back ?>"><?= $this->back ?></a></p>
                        <!-- indexer::continue -->
                        <?php endif; ?>
                        
                        <?php if ($this->allowComments): ?>
                        <div class="ce_comments block">
                        <<?= $this->hlc ?>><?= $this->hlcText ?></<?= $this->hlc ?>>
                        <?= implode('', $this->comments) ?>
                        <?= $this->pagination ?>
                        <<?= $this->hlc ?>><?= $this->addComment ?></<?= $this->hlc ?>>
                        <?php $this->insert('mod_comment_form', $this->arrData); ?>
                        </div>
                        <?php endif; ?>
                        
                        <?php $this->endblock(); ?>
                        Long story short:
                        Code:
                        <?php // News Model
                        $objNews = NewsModel::findByAlias( Input::get('items') );
                        ?>
                        
                        <?php // News-Bild
                        if($objNews->addImage && !empty($objNews->singleSRC)): ?>
                        {{picture::<?= $objNews->singleSRC; ?>}}
                        <?php else: ?>
                        {{picture::FALLBACK-BILD}}
                        <?php endif; ?>
                        Zuletzt geändert von Tim; 09.12.2022, 11:16.
                        http://www.premium-contao-themes.com

                        Kommentar


                        • #13
                          Sehr cool, danke! 💪

                          Das Teaserbild wird jetzt aber immer ausgegeben – also auch dann, wenn weitere Inhaltselemente vorhanden sind. Soll nur ausgegeben werden, wenn keine Inhaltselemente vorhanden.

                          Und dann habe ich noch ein (letztes?) Problemchen mit dem Teasertext. Diesen möchte ich im news_newsreader-Template ausgeben (und nur dann), wenn ebenfalls keine weiteren Inhaltselemente vorhanden sind.

                          PHP-Code:
                          <?php if (!$hasText): ?>
                          <?php 
                          echo $this->teaser?>
                          <?php 
                          endif; ?>

                          scheint hier nicht die richtige Lösung zu sein...

                          Kommentar


                          • #14
                            Teilweise werden die Teaserbilder jetzt nicht angezeigt, sondern es steht sowas im Quellcode:

                            Klicke auf die Grafik für eine vergrößerte Ansicht

Name: Bildschirm­foto 2022-12-09 um 13.58.06.png
Ansichten: 129
Größe: 59,5 KB
ID: 26347

                            Kommentar


                            • #15
                              In dem Fall ist es besser nichts am mod_newsreader zu ändern, sondern im news_newsreader Template. Also im Ausgabe-Template der Inhalte. Das geht dann einfach, direkt mit der $hasText. Deine Abfrage auf den Teaser klappt dort auch.

                              News-Bild und Teaser wird ausgegeben, wenn in der News keine Inhalte sind. Ansonsten die normalen Inhalte.

                              news_newsreader

                              Code:
                              <?php // generate structured data
                              \PCT\SEO::writeJSON($this);
                              ?>
                              
                              <?php
                              $hasText = $this->hasText;
                              ?>
                              
                              <div class="newsreader block <?php echo $this->class; ?>" itemscope itemtype="http://schema.org/Article">
                              
                              <?php if(!$hasText): ?>
                              <!-- News-Bild -->
                              <?php $this->insert('picture_default', $this->picture); ?>
                              <!-- Teaser -->
                              <?= $this->teaser; ?>
                              <?php else: ?>
                              
                              <?php if ($this->hasMetaFields): ?>
                              
                              <div class="info"><?php if ($this->date): ?><div class="date" itemprop="datePublished"><?php echo $this->date; ?></div><?php endif; ?><?php if ($this->author): ?><div class="author"><?php echo $this->author; ?></div><?php endif; ?><?php if ($this->commentCount): ?><div class="comments"><?php echo $this->commentCount; ?></div><?php endif; ?></div>
                              
                              <?php endif; ?>
                              <?php if ($this->hasSubHeadline): ?>
                              
                              <?php endif; ?>
                              <?php echo $this->text; ?>
                              <?php if ($this->enclosure): ?>
                              
                              <div class="enclosure">
                              <?php foreach ($this->enclosure as $enclosure): ?>
                              <p><img src="<?php echo $enclosure['icon']; ?>" width="18" height="18" alt="<?php echo $enclosure['title']; ?>" class="mime_icon" /> <a href="<?php echo $enclosure['href']; ?>" title="<?php echo $enclosure['title']; ?>"><?php echo $enclosure['link']; ?> <span class="size">(<?php echo $enclosure['filesize']; ?>)</span></a></p>
                              <?php endforeach; ?>
                              </div>
                              <?php endif; ?>
                              </div>
                              <?php endif; ?>
                              Zuletzt geändert von Tim; 10.12.2022, 08:03.
                              http://www.premium-contao-themes.com

                              Kommentar

                              Lädt...
                              X