Page 1 of 2

Einträge in Kategorieansicht kürzen

Posted: Wed Sep 01, 2010 10:41 am
by u1amo01
Moin moin.

Wenn in meinem Blog eine Kategorie aufgerufen wird, sollen nur Titel und der Anfang der Artikel gezeigt werden.

Das müsste irgendwie [TM] mit {... |@truncate:200:'...'} gehen in einer entsprechenden tpl-Datei. Wie müsste die heißen? Ich glaube auch, das schonmal gesehen zu haben, aber in welchem Template? (Dann könnte ich mir das dort ansehen)

Vielen Dank.

Re: Einträge in Kategorieansicht kürzen

Posted: Wed Sep 01, 2010 11:00 am
by yellowled
u1amo01 wrote:Wenn in meinem Blog eine Kategorie aufgerufen wird, sollen nur Titel und der Anfang der Artikel gezeigt werden.

Das müsste irgendwie [TM] mit {... |@truncate:200:'...'} gehen in einer entsprechenden tpl-Datei. Wie müsste die heißen? Ich glaube auch, das schonmal gesehen zu haben, aber in welchem Template? (Dann könnte ich mir das dort ansehen)
Wie in der meisten Fällen: Mimbo. :mrgreen: (Nehme ich an. Unter anderem.)

Allerdings wird es dort nicht in Kategorien-Ansicht, sondern für die Teaser auf der Startseite verwendet. Die Kürzung des Eintragstextes sieht so aus:

Code: Select all

{$entry.body|strip_tags|truncate:400:" ..."}
strip_tags ist wichtig, weil Du Dir ansonsten evtl. invaliden Code einfängst. $entry.body enthält nicht nur den reinen Eintragstext, sondern ggf. auch HTML-Elemente zur Auszeichnung, etwa <p></p>. Wird $entry.body nun etwa bei 400 Zeichen (wie im obigen Code-Beispiel) abgeschnitten, kann es sein, dass das schließende </p>-Element die Zeichen 401-403 wären, somit hättest Du einen nicht geschlossenen Absatz und damit Ärger mit dem Validator. Das abschließende " ..." wird an den gekürzten & gestrippten $entry.body angehängt, um die Kürzung zu signalisieren. (Kann geändert werden, aber die "" müssen sein.)

Damit das nur in Kategorienansicht geschieht, baust Du am besten in die entries.tpl eine Abfrage ein:

Code: Select all

{if $view == 'categories'}
    [gekürzter $entry.body]
{else}
    [voller $entry.body]
{/if}
Bei Fragen fragen.

YL

Re: Einträge in Kategorieansicht kürzen

Posted: Wed Sep 01, 2010 11:18 am
by u1amo01
Danke für die ausführliche Erläuterung :-)

Funktioniert wunderbar.

Jetzt muss ich das nur noch ein bischen aufhübschen, weil ich natürlich die Metadaten in der Kategorieansiche weghaben will. Und einen zusätzlichen Link nach dem " ..." zur Artikelansicht haben möchte. Ich denke das kriege ich hin, mal sehen.

Danke!

Re: Einträge in Kategorieansicht kürzen

Posted: Wed Sep 01, 2010 2:33 pm
by u1amo01
Dideldum, dideldei ... macht immer wieder Spaß, Serendipity :-)

To whom it may concern
meine Komplettlösung:

Ergänzung in entries.tpl

Code: Select all

{if $view == 'categories'}
      {$entry.body|strip_tags|truncate:200:" ..."}
      <p class="floatr"><a href="{$entry.link}" title="{$entry.title}">{$CONST.BASE_READON}</a></p>
  {else}
     {$entry.body}
{/if}
Eintrag in lang_de.inc.php

Code: Select all

@define('BASE_READON', 'weiterlesen &#187;');
Eintrag in lang_en.inc.php

Code: Select all

@define('BASE_READON', 'continue &#187;');
Die Dateien in /UTF-8 ebenfalls entsprechend ergänzen.

Voilà. :-)

Danke!

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Feb 22, 2011 4:23 pm
by Frankenstein
Hallo Ihr Spezialisten,

ich habe das Problem, daß wenn ich den Code wie angegeben einbaue, der erste Teil wie gewünscht abgeschnitten wird, dann aber der komplette Text noch einmal hintenangestellt wird.
Dieses ist aber nur die halbe Wahrheit - auf der Startseite wird der komplette Text einfach zwei Mal hintereinander ausgegeben.
Was habe ich falsch gemacht? Weiterhin würde mich interessieren, ob es eine Möglichkeit gibt, diese Funktion lediglich auf die Startseite zu beschränken.

Das Problem ist hier zu besichtigen http://tiny.cc/8nc1y

Vielen Dank für Eure Hilfe.


Frank

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Feb 22, 2011 9:48 pm
by yellowled
Frankenstein wrote:ich habe das Problem, daß wenn ich den Code wie angegeben einbaue, der erste Teil wie gewünscht abgeschnitten wird, dann aber der komplette Text noch einmal hintenangestellt wird.
Zeig mal bitte den Anfang Deiner entries.tpl, also den Teil vor „<rdf:RDF“.

YL

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Feb 22, 2011 10:30 pm
by Frankenstein
yellowled wrote:
Frankenstein wrote:ich habe das Problem, daß wenn ich den Code wie angegeben einbaue, der erste Teil wie gewünscht abgeschnitten wird, dann aber der komplette Text noch einmal hintenangestellt wird.
Zeig mal bitte den Anfang Deiner entries.tpl, also den Teil vor „<rdf:RDF“.

YL

OK, das ist alles was davor steht

Code: Select all

<!-- ENTRIES START -->
    {serendipity_hookPlugin hook="entries_header" addData="$entry_id"}

    {foreach from=$entries item="dategroup"}
    <div class="serendipity_Entry_Date">


        {foreach from=$dategroup.entries item="entry"}
        <h4 class="serendipity_title"><a href="{$entry.link}">{$entry.title}</a></h4>
                {if $dategroup.is_sticky}
        <h3 class="serendipity_date">{$CONST.STICKY_POSTINGS}</h3>
        {else}
        <h3 class="serendipity_date">{$dategroup.date|@formatTime:DATE_FORMAT_ENTRY}</h3>
        {/if}

        <div class="serendipity_entry serendipity_entry_author_{$entry.author|@makeFilename} {if $entry.is_entry_owner}serendipity_entry_author_self{/if}">
            {if $entry.categories}
<!--
            <span class="serendipity_entryIcon">
            {foreach from=$entry.categories item="entry_category"}
                {if $entry_category.category_icon}
                    <a href="{$entry_category.category_link}"><img class="serendipity_entryIcon" title="{$entry_category.category_name|@escape}{$entry_category.category_description|@emptyPrefix}" alt="{$entry_category.category_name|@escape}" src="{$entry_category.category_icon}" /></a>
                {/if}
            {/foreach}
            </span>
-->
            
    {if $view == 'categories'}
          {$entry.body|strip_tags|truncate:200:" ..."}
          <p class="floatr"><a href="{$entry.link}" title="{$entry.title}">{$CONST.BASE_READON}
</a></p>
      {else}
         {$entry.body}
    {/if}

            {/if}

            <div class="serendipity_entry_body">
                {$entry.body}
            </div>

            {if $entry.is_extended}
            <div class="serendipity_entry_extended"><a id="extended"></a>{$entry.extended}</div>
            {/if}

            {if $entry.has_extended and not $is_single_entry and not $entry.is_extended}
            <br /><a href="{$entry.link}#extended">{$CONST.VIEW_EXTENDED_ENTRY|@sprintf:$entry.title}</a><br /><br />
            {/if}

            <div class='serendipity_entryFooter'>
                {$CONST.POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a>
                {if $entry.categories}
                   {$CONST.IN} {foreach from=$entry.categories item="entry_category" name="categories"}<a href="{$entry_category.category_link}">{$entry_category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}
                {/if}

                {if $dategroup.is_sticky}
                    {$CONST.ON}
                {else}
                    {$CONST.AT}
                {/if} <a href="{$entry.link}">{if $dategroup.is_sticky}{$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY} {/if}{$entry.timestamp|@formatTime:'%H:%M'}</a>

                {if $entry.has_comments}
                    {if $use_popups}
                        | <a href="{$entry.link_popup_comments}" onclick="window.open(this.href, 'comments', 'width=480,height=480,scrollbars=yes'); return false;">{$entry.label_comments} ({$entry.comments})</a>
                    {else}
                        | <a href="{$entry.link}#comments">{$entry.label_comments} ({$entry.comments})</a>
                    {/if}
                {/if}

                {if $entry.has_trackbacks}
                    {if $use_popups}
                        | <a href="{$entry.link_popup_trackbacks}" onclick="window.open(this.href, 'comments', 'width=480,height=480,scrollbars=yes'); return false;">{$entry.label_trackbacks} ({$entry.trackbacks})</a>
                    {else}
                        | <a href="{$entry.link}#trackbacks">{$entry.label_trackbacks} ({$entry.trackbacks})</a>
                    {/if}
                {/if}

                {if $entry.is_entry_owner and not $is_preview}
                        | <a href="{$entry.link_edit}">{$CONST.EDIT_ENTRY}</a>
                {/if}

                {$entry.add_footer}
            </div>
        </div>
Frank

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Feb 22, 2011 11:11 pm
by yellowled
Frankenstein wrote:

Code: Select all

{if $view == 'categories'}
    {$entry.body|strip_tags|truncate:200:" ..."}
    <p class="floatr"><a href="{$entry.link}" title="{$entry.title}">{$CONST.BASE_READON}
</a></p>
{else}
    {$entry.body}
{/if}

{/if}

<div class="serendipity_entry_body">
{$entry.body}
</div>
Abgesehen davon, dass das 2. {/if} (zusammen mit dem {if $entry.categories} vor dem auskommentierten Teil) überflüssig ist, macht das Template genau, was Du anweist: „falls Kategorienansicht, gib den gekürzten Eintrag und den Weiterlesen-Link aus, falls nicht, den Eintragskörper; gib danach nochmals den Eintragskörper in einem Container aus“.

Code: Select all

<div class="serendipity_entry_body">
{if $view == 'categories'}
    {$entry.body|strip_tags|truncate:200:" ..."}
    <p class="floatr"><a href="{$entry.link}" title="{$entry.title}">{$CONST.BASE_READON}
</a></p>
{else}
    {$entry.body}
{/if}
</div>
gibt das aus, was Du möchtest (wenn ich Dich richtig verstehe). Die Zeilen 17 bis 40 Deines Codes sind dann überflüssig.

YL

Re: Einträge in Kategorieansicht kürzen

Posted: Wed Feb 23, 2011 10:33 am
by Frankenstein
Super, das genau war der Groschen der mir an der Mark fehlte :D - jetzt funktioniert alles prima.

Vielen Dank.

Eine Frage hätte ich da noch, gibt es eine Möglichkeit diese Funktion lediglich auf die Startseite zu beschränken und in der Kategorieansicht die "normale Ansicht" zu haben?

Frank

Re: Einträge in Kategorieansicht kürzen

Posted: Wed Feb 23, 2011 5:03 pm
by yellowled
Frankenstein wrote:Eine Frage hätte ich da noch, gibt es eine Möglichkeit diese Funktion lediglich auf die Startseite zu beschränken und in der Kategorieansicht die "normale Ansicht" zu haben?
Natürlich. Ersetze {if $view == 'categories'} durch {if $view == 'start'}.

(Dir ist schon bewusst, dass Du diese Funktionalität auch hinbekommen hättest, ohne im Template rumzuklöppeln, indem Du einfach erweiterte Einträge benutzt?)

YL

Re: Einträge in Kategorieansicht kürzen

Posted: Wed Feb 23, 2011 5:11 pm
by Frankenstein
yellowled wrote:
Frankenstein wrote:Eine Frage hätte ich da noch, gibt es eine Möglichkeit diese Funktion lediglich auf die Startseite zu beschränken und in der Kategorieansicht die "normale Ansicht" zu haben?
Natürlich. Ersetze {if $view == 'categories'} durch {if $view == 'start'}.

(Dir ist schon bewusst, dass Du diese Funktionalität auch hinbekommen hättest, ohne im Template rumzuklöppeln, indem Du einfach erweiterte Einträge benutzt?)

YL

Danke für die Info und "nein" das war mir nicht bewusst, das es auch anders geht. Wenn es so gewesen wäre, hätte ich mir dieses hier ja sparen können (außerdem klöppel ich doch so gerne :) )

Danke für deine Hilfe.


Frank

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Mar 08, 2011 5:07 pm
by Frankenstein
Ich hätte da noch einmal eine Frage bezüglich der verkürzten Kategorieansicht, bevor ich evtl. wieder alles etwas zu kompliziert mache.

Gibt es eine Möglichkeit in der verkürzten Ansicht ein Bild anzuzeigen und bei Aufruf des gesamten Artikel ein anderes Bild? Momentan ist es ja so, daß die eingefügten Bilder lediglich bei Ansicht des gesamten Artikels angezeigt werden, aber im verkürzten Teil dann garnichts erscheint.

Vielen Dank für Eure Hilfe.

Frank

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Mar 08, 2011 6:44 pm
by yellowled
Frankenstein wrote:Gibt es eine Möglichkeit in der verkürzten Ansicht ein Bild anzuzeigen und bei Aufruf des gesamten Artikel ein anderes Bild?
Grundsätzlich: Ja.

Simpel und einfach: Nein. (Disclaimer: Mir fällt keine simple und einfache Lösung ein. Freiwillige vor.)

Kompliziert: Anpassung des Templates analog zum Mimbo-Template, einbinden von Schmuckbildern für Artikel über das Plugin „Erweiterte Eigenschaften von Einträgen“ -- dort eines für die Kurzansicht, eines für die Artikelansicht einbauen, wie es in Mimbo gemacht wird. Alternative funktioniert es evtl. auch, nur eines für die Kurzansicht zu definieren, in der Kurzansicht in den Artikel eingebundene Bilder zu unterbinden und das Bild für die Artikelansicht klassisch in den Artikel einzubinden.

Detailliert: Habe ich zumindest aktuell keine Zeit dazu, müsste man auch definitiv mehr über Dein Template wissen bzw. erfragen.

YL

Re: Einträge in Kategorieansicht kürzen

Posted: Tue Mar 08, 2011 8:51 pm
by Frankenstein
yellowled wrote:
Frankenstein wrote:Gibt es eine Möglichkeit in der verkürzten Ansicht ein Bild anzuzeigen und bei Aufruf des gesamten Artikel ein anderes Bild?
Grundsätzlich: Ja.

Simpel und einfach: Nein. (Disclaimer: Mir fällt keine simple und einfache Lösung ein. Freiwillige vor.)

Kompliziert: Anpassung des Templates analog zum Mimbo-Template, einbinden von Schmuckbildern für Artikel über das Plugin „Erweiterte Eigenschaften von Einträgen“ -- dort eines für die Kurzansicht, eines für die Artikelansicht einbauen, wie es in Mimbo gemacht wird. Alternative funktioniert es evtl. auch, nur eines für die Kurzansicht zu definieren, in der Kurzansicht in den Artikel eingebundene Bilder zu unterbinden und das Bild für die Artikelansicht klassisch in den Artikel einzubinden.

Detailliert: Habe ich zumindest aktuell keine Zeit dazu, müsste man auch definitiv mehr über Dein Template wissen bzw. erfragen.

YL

OK, vielen Dank für die Antwort. Wenn Du Lust und vor allem mehr Zeit hast, kannst Du ja Bescheid sagen, dann können wir uns im Detail noch einmal darüber unterhalten. Wer weiß, vielleicht fällt Dir ja noch eine einfachere Lösung dazu ein.

Frank

Re: Einträge in Kategorieansicht kürzen

Posted: Fri Mar 02, 2012 8:42 am
by montebianco
yellowled wrote:
Frankenstein wrote:

Code: Select all

{if $view == 'categories'}
    {$entry.body|strip_tags|truncate:200:" ..."}
    <p class="floatr"><a href="{$entry.link}" title="{$entry.title}">{$CONST.BASE_READON}
</a></p>
{else}
    {$entry.body}
{/if}

{/if}

<div class="serendipity_entry_body">
{$entry.body}
</div>
Abgesehen davon, dass das 2. {/if} (zusammen mit dem {if $entry.categories} vor dem auskommentierten Teil) überflüssig ist, macht das Template genau, was Du anweist: „falls Kategorienansicht, gib den gekürzten Eintrag und den Weiterlesen-Link aus, falls nicht, den Eintragskörper; gib danach nochmals den Eintragskörper in einem Container aus“.

Code: Select all

<div class="serendipity_entry_body">
{if $view == 'categories'}
    {$entry.body|strip_tags|truncate:200:" ..."}
    <p class="floatr"><a href="{$entry.link}" title="{$entry.title}">{$CONST.BASE_READON}
</a></p>
{else}
    {$entry.body}
{/if}
</div>
gibt das aus, was Du möchtest (wenn ich Dich richtig verstehe). Die Zeilen 17 bis 40 Deines Codes sind dann überflüssig.

YL
Wenn ich das richtig verstehe, gibt diese Anweisung in JEDEM Fall einen "weiterlesen"-Link aus... Wie muss ich den Teil da oben verändern, dass s9y das NUR bei Artikeln macht, die auch tatsächlich abgeschnitten wurden (d.h. länger als die - in diesem Fall - 200 Zeichen sind)??
Macht ja keinen Sinn, unter Einträgen, die nur aus einem Satz bestehen, noch einen "Weiterlesen"-Link stehen zu haben....

lg, montebianco