Ergebnis 1 bis 11 von 11

Thema: Anzahl der Einträge ermitteln, die in Nachrichtenliste ausgegeben werden

  1. #1
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Frage Anzahl der Einträge ermitteln, die in Nachrichtenliste ausgegeben werden

    hi communtiy,

    ist es irgendwie möglich die Anzahl der Einträge einer Nachrichtenliste innerhalb der zugehörigen Templates zu ermitteln? (z.B. news_simple.tpl)
    sowas in der art von $this->total oder so..

    gruss
    ways

  2. #2
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Eine einfache Zählvariable sollte es tun, die du nach jeder ausgegebenen Nachricht um 1 erhöhst.


    Sent from my iPhone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  3. #3
    Contao-Nutzer Avatar von trilobit
    Registriert seit
    22.07.2011.
    Ort
    Karlsruhe
    Beiträge
    48
    Partner-ID
    7196

    Standard PHP-Funktion "count($array)"

    Hallo,

    die News-Beiträge werden in einem PHP-Array abgelegt, welches im Template "mod_newslist.tpl" in Zeile 11 durchlaufen wird:
    PHP-Code:
    <?php foreach($this->articles as $article) echo $article?>
    Die Anzahl der Einträge in diesem Array kannst du einfach mittels der PHP-Funktion "count" ermittel, also etwa so:
    PHP-Code:
    echo count($this->articles) . ' Newseinträge aktuell'
    Oder du legst dir die Anzahl der Einträge in eine eigene Variable
    PHP-Code:
    $news-items count($this->articles); 
    So kannst du die Anzahl der Newsbeiträge ermitteln auch ohne sie anzeigen zu lassen.

    Hoffe geholfen zu haben ;-)
    Cheerio,
    Alex

  4. #4
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    ich danke erst mal für eure Antworten.
    das mit dem echo count($this->articles) ist natürlich eine gute Möglichkeiten, das Problem an sich ist halt, dass ich die Anzahl nur im template news_simple.php benötige.
    denn ich wollte aus dem template ein <ul> erzeugen... das hätte ich vielleicht erwähnen sollen.

    Der einzige weg ist wohl eine klassenabfrage im mod_news.tpl zu setzen und die ausgabe dann zu steuern, da ich die anzhal der news nicht im news_simple ermitteln kann wie es aussieht.

    PHP-Code:
    if ($this->class== 'classname') echo "<ul>"
     
    foreach(
    $this->articles as $article) echo $article
     
     if (
    $this->classname== 'UL') echo "</ul>"
    dafür dank an lindesbs

    viele Grüße
    ways

  5. #5
    Contao-Nutzer Avatar von trilobit
    Registriert seit
    22.07.2011.
    Ort
    Karlsruhe
    Beiträge
    48
    Partner-ID
    7196

    Frage

    Ich fürchte ich verstehe nicht ganz, was genau du machen möchtest. Wie, erhoffst du dir, wird das ganze dann aussehen?
    Angenommen wir haben 3 News-Einträge, was soll das Konstrukt dann machen? Sowas hier:
    HTML-Code:
    <ul>
      <li>News 1</li>
      <li>News 2</li>
      <li>News 3</li>
    </ul>
    ???

    Cheerio,
    Alex

  6. #6
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von trilobit Beitrag anzeigen
    Ich fürchte ich verstehe nicht ganz, was genau du machen möchtest. Wie, erhoffst du dir, wird das ganze dann aussehen?
    Angenommen wir haben 3 News-Einträge, was soll das Konstrukt dann machen? Sowas hier:
    HTML-Code:
    <ul>
      <li>News 1</li>
      <li>News 2</li>
      <li>News 3</li>
    </ul>
    ???

    Cheerio,
    Alex
    Hi Alex,

    ja genau, das möchte ich erreichen.
    dafür hätte ich, wenns einfach nur in dem ausgewählten Template (news_simple.tpl) passieren soll, die Anzahl der News gebraucht um ein öffnendes und schließendes ul zu erzeugen
    Aber das geht wohl nicht.. daher muss ich das modul template mod_news.tpl bearbeiten.

    ich habe das nun so gelöst:
    PHP-Code:
    <?php if(in_array('KLASSENNAME'explode(' '$this->class))) {echo "<ul class=\"blabla\">";} ?>
     
           <?php foreach($this->articles as $article) echo $article?>
     
    <?php if(in_array('KLASSENNAME'explode(' '$this->class))) {echo "</ul>";} ?>
    dafür muss ich modul nachrichtenliste halt die css klasse "KLASSENNAME" vergeben..

    alles nicht schön.. aber bisher der einzige weg, dass nur mein news_simple.tpl ein <ul> erhält und andere templates davon unberührt bleiben.

    gruss
    olli

  7. #7
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    ?
    Aus dem Grund gibt es doch Templates. Erstell doch einfach eine Kopie vom news_simple, nenne es um, bearbeite es, wähle es in deinem Newsliste Modul aus.

    Eine ul List kannst du auch viel einfacher erzeugen.
    Einfach in das umschließende div ein ul umschließen und die divs der newsbeträge in li ändern.


    Sent from my iPhone using Tapatalk
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  8. #8
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von Tim G Beitrag anzeigen
    ?
    Aus dem Grund gibt es doch Templates. Erstell doch einfach eine Kopie vom news_simple, nenne es um, bearbeite es, wähle es in deinem Newsliste Modul aus.
    Eine ul List kannst du auch viel einfacher erzeugen.
    Einfach in das umschließende div ein ul umschließen und die divs der newsbeträge in li ändern.
    dann hast du nie in die news template geschaut! das news_simple wird durch eine schleife geführt, dass nicht in der news_simple liegt, sonern in dem übergeordneten mod_news.
    somit wäre bei jedem news eintrag ein eigenständiges <ul> ...</ul> hätte ich also 20 einträge, wären es 20 ul´s !

    und genau das ist das Problem, sowas kann niemand wollen und ich will so ein ramschcode auch nicht in meiner seite haben
    und das mod_news.tpl lässt sich nicht auswählen... sondern nur die templates zur Darstellung.

    grus
    ways

  9. #9
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    hast recht. Ich war mal wieder beim catalog

    na dann ne Template-Weiche im mod_newslist.tpl setzen.
    Ich habs dir mal schnell gebaut:

    Du musst eigentlich nur noch sagen auf welcher Seite die gesonderte Darstellung eingesetzt werden soll. Bei mir war es gerade die 78.
    Wenn er nicht auf dieser Seite ist, nutzt er das normale Schema.
    Dann baut er dir eine unsorted List um die News und mit ein bissel str_replace noch aus den <div> <li> machen.
    Die Gesamtanzahl an Eintragen kommt, wie oben erwähnt, mit count($this->articles).


    PHP-Code:
    <?php 

    /**
     * Template switcher for mod_newslist
     * Switch reacts to page id
     */

    global $objPage;
    $page_alias $objPage->alias;
    $page_id $objPage->id;
    ?>


    <?php if($page_id == 78): ?> 

    <!-- 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; ?>

    <div class="total">Anzahl News:<?php echo count($this->articles); ?></div>

    <ul class="newslist">
    <?php
    foreach($this->articles as $article
    {    
        
    // replace <div with <li
        // can also be done with preg_replace
        
    $tmp str_replace('<div''<li'$article);
        
    $article =  str_replace('/div''/li'$tmp);
        echo 
    $article;
    }
    ?>
    </ul>

    <?php echo $this->pagination?>

    </div>
    <!-- indexer::continue -->

    <?php else: ?>

    <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
    foreach($this->articles as $article
    {    
        echo 
    $article;
    }
    ?>
    </ul>

    <?php echo $this->pagination?>

    </div>
    <!-- indexer::continue -->

    <?php endif; ?>
    Grüße,
    Tim
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

  10. #10
    Contao-Urgestein Avatar von ways2web
    Registriert seit
    23.03.2010.
    Ort
    Berlin
    Beiträge
    1.698
    User beschenken
    Wunschliste

    Standard

    hehe... die catalogisten wieder

    alles klar.. werd ich mir mal anschauen, mit meiner Lösung nach id bin ich zwar zufrieden... aber ist ja nun mal nicht das gelbe vom ei..
    wäre da lieber flexibler.. aber vielleicht ist dein Ansatz ja viel besser...

    erst mal unter die lupe nehmen

    danke schom mal

    gruss
    Olli

  11. #11
    Contao-Urgestein Avatar von Tim G
    Registriert seit
    13.02.2010.
    Ort
    Lübeck
    Beiträge
    2.210
    User beschenken
    Wunschliste

    Standard

    Kannst ja auch nach einer Klasse den switch setzen. Das schon recht flexibel,
    Oder aus welchem Archiv die News kommen


    Sent from my iPhone using Tapatalk
    Geändert von Tim G (29.07.2011 um 15:03 Uhr)
    http://www.tim-gatzky.de ˙ auch schon wieder 2 Jahre alt - wie die Zeit vergeht... muss mal umbauen.

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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