Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 13. November 2010 23:56

mcsonne
Gast

[GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Hallo,

schön, dass es jetzt ein deutsches Forum gibt.

Ich habe eine Frage zum Feedmaker. Er gibt mir in der Ausgabe immer alle Einträge ausm dem CGBlog aus. Ich würde das jedoch gerne auf die letzten zehn Beiträge begrenzen. Bekomme das aber nicht hin.

Hier mein Feed-Code:

{* original rss feed template *}
<?xml version="1.0"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
  {* note: if you have not configured pretty urls or mod rewrite, the next line may fail when trying to validate the feed *}
  <atom:link href="{$feed_url}" rel="self" type="application/rss+xml" />
    <title>{$feed.title}</title>
    {if isset($feed.link) && !empty($feed.link)}<link>{$feed.link}</link>{/if}
    {if isset($feed.description) && !empty($feed.description)}<description>{$feed.description}</description>{/if}
    {if isset($feed.copyright) && !empty($feed.copyright)}<copyright>{$feed.copyright}</copyright>{/if}
    {if isset($generator)}<generator>{$generator}</generator>{/if}
    <managingEditor>{$admin_email} (Alex Hesse)</managingEditor>
    {if isset($admin_email)}<webMaster>{$admin_email} (Alex Hesse)</webMaster>{/if}


    {* an example of how to create a feed from a call to the news module *}
    {* you can use any smarty variable that is available in the news summary template *}
    {* you can substitute this logic with output from any module that supports a summary
       view, or possibly get artistic and mix output from different modules *}
    {CGBlog assign='junk'}

    {foreach from=$items item='entry'}
    <item>
      <title>{$entry->title|cms_html_entity_decode}</title>
      <link>{$entry->detail_url}</link>
      <description><![CDATA[{$entry->content}]]></description>
      <pubDate>{$entry->postdate|rfc_date}</pubDate>
      <guid>{$entry->detail_url}</guid>
    </item>
    {/foreach}
  </channel>
</rss>

Ich nutze CMSMS 1.8.2

Vielleicht kann mir jemand dabei helfen.

Beitrag geändert von mcsonne (14. November 2010 22:16)

#2 14. November 2010 19:44

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Hab mal kurz in die Dokumentation bzw. in den Code geschaut ... soweit ich es auf die Schnelle gesehen habe, ist diese Möglichkeit nicht vorgesehen - man müsste also den Code modifizieren.

Ist also die Frage, inwieweit du das kannst bzw. möchtest ...

Offline

#3 14. November 2010 20:23

piratos
Gast

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Im Template selbst begrenzen

{foreach from=$items item=entry name=zahl}
 {if $smarty.foreach.zahl.iteration < 10}
    <item>
      <title>{$entry->title|cms_html_entity_decode}</title>
      <link>{$entry->detail_url}</link>
      <description><![CDATA[{$entry->content}]]></description>
      <pubDate>{$entry->postdate|rfc_date}</pubDate>
      <guid>{$entry->detail_url}</guid>
    </item>
{/if}
    {/foreach}

#4 14. November 2010 22:15

mcsonne
Gast

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Danke euch zwei für die Antworten. Die Begrenzung direkt im Template hat geklappt. Vielen Dank!

#5 15. November 2010 08:59

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Hmm, so funktioniert es auch ... hatte eher an die Begrenzung des Inputs für den Feedmaker gedacht.

Denn bei 500 Feed-Einträgen wird die Schleife auch 500 mal durchlaufen, um schlußendlich nur 10 Einträge auszugeben ...

Offline

#6 15. November 2010 13:14

piratos
Gast

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Sicher ist es unwirtschaftlich , aber tatsächlich ist das Module in der Hinsicht zu billig programmiert.

Ich würde einfach die Sql ändern in action.default.php vom Module

$query = 'SELECT * FROM '.cms_db_prefix().'module_cgfeedmaker WHERE name = ? LIMIT 0,10';

#7 15. November 2010 13:41

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Genau das meinte ich, womit aber wieder das Problem besteht, dass es bei der nächsten Modul-Aktualisierung weg ist ... weswegen ich erst mal vorsichtig nachgefragt habe  cool .

Offline

#8 16. November 2010 16:26

mcsonne
Gast

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Inwiefern ist diese Lösung denn besser? Kenne mich nicht so mit der Programmierung aus.

#9 16. November 2010 21:42

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.018
Webseite

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Ich bin in meinem Beispiel mal von einem aktiv betriebenen Blog ausgegangen, wo im Laufe von 1-3 Jahren so an die 500 Beiträge zusammen kommen big_smile .

Du möchtest jedoch nur die letzten 10 Beiträge im Feed ausgeben und erledigst das mit der ersten Lösung im Template, indem du dessen Ausführung des Templates nach dem 10. Durchlauf abbrichst. Die übergeordnete foreach-Schleife wird jedoch so oft durchlaufen, solange Beiträge vorhanden sind (eben 500 Mal) ... auch, wenn es ansonsten im Template nix zu tun gibt. Das heisst, es wird sinnlos Performance "verheizt" (die Webseite wird langsamer). Und seit Google die Ladegeschwindigkeit einer Webseite in die Seitenbewertung einfließen lässt, sollte jede Chance genutzt werden, die Performance zu verbessern.

Daher der zweite Vorschlag mit der Änderung der Datenbankabfrage, wo du mit dem zweiten Parameter nach LIMIT festlegen kannst, wie viele Einträge geladen werden sollen - nicht mehr und nicht weniger. Wenn du jedoch irgendwann das Modul aktualisierst, wird diese Code-Veränderung überschrieben, die Änderung im Template jedoch nicht.

Offline

#10 16. November 2010 22:03

mcsonne
Gast

Re: [GELÖST] CG Feedmaker Beiträge im Feed begrenzen

Dann bedeutet das also weniger Rechenarbeit für die Abfrage. Ok. Du hast vollkommen Recht, das sehr viele Beiträge zu Stande kommen.

Ich habe jetzt die zweite Variante ausprobiert, geändert, und überschrieben. Er gibt mir jetzt jedoch wieder alle Feedeinträge aus...