News-Modul: Wenn nur 1 News da ist....

Hilfe zu Modulen und Tags
Post Reply
syl3x
Forum Members
Forum Members
Posts: 17
Joined: Tue May 11, 2010 7:27 am

News-Modul: Wenn nur 1 News da ist....

Post by syl3x »

Hallo zusammen...  ich suche eine Möglichkeit um im News-Modul, wenn nur eine News (in der jeweiligen Kategorie) vorhanden ist, direkt die Detailansicht anzuzeigen.

Vielleicht kann mir jemand helfen.. =) denn die Suche hat "bisher" noch nichts ergeben..
NaN

Re: News-Modul: Wenn nur 1 News da ist....

Post by NaN »

Sollte eigentlich ganz einfach sein.
Kommt drauf an, ob die Artikel ID mit im Zusammenfassungs-Template enthalten ist.
Im Zusammenfassungs-Template gibt es eine Variable "$count" oder so.
Die gibt die Anzahl der anzuzeigenden Artikel an.
Jetzt musst du nur in der foreach-Schleife prüfen ob die Anzahl der Artikel gleich 1 ist.
Wenn ja, dann ruf einfach nochmal das NewsModul auf aber mit dem Parameter action=detail und der Artikel ID des anzuzeigenden Artikels.
Anderenfalls kommt eben die Zusammenfassung.
syl3x
Forum Members
Forum Members
Posts: 17
Joined: Tue May 11, 2010 7:27 am

Re: News-Modul: Wenn nur 1 News da ist....

Post by syl3x »

Also nur um Missverständnisse vorzubeugen...

Das News-Template soll dies für mich automatisch machen.. also sobald nur eine News Aktiv ist soll diese eine als Detail angezeigt werden. Wenn 2 oder mehr News vorhanden sind dann sollen die News als Vorschau angezeigt werden...

Das Template sieht folgendermaßen aus!

Code: Select all

{count_news_items}
{if isset($entry->canonical)}
  {assign var='canonical' value=$entry->canonical}
{/if}
{assign var='autodescription' value=$entry->title}
<!-- Start News Display Template -->
{foreach from=$items item=entry}
<div class="NewsSummary">
<div class="NewsSummaryLink">
<h3><a href="{$entry->moreurl}" title="{$entry->title}"  class="white invert">{$entry->title|escape}</a></h3>
</div>
{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">
        {if $field->type == 'file'}
         <img class="newsimg" alt="" src="{$entry->file_location}/{$field->value}"/>
        {else}
          {$field->name}: {eval var=$field->value}
        {/if}
     </div>
  {/foreach}
{/if}

{if $entry->summary}
	<div class="NewsSummarySummary">
		{eval var=$entry->summary}
	</div>
{else if $entry->content}
	<div class="NewsSummaryContent">
		{eval var=$entry->content}
	</div>
{/if}
<br />	<div class="NewsSummaryMorelink">
		<p><a href="{$entry->moreurl}" title="Ganzen Artikel lesen: {$entry->title}">Zum Artikel: {$entry->title}</a></p>
	</div>
</div>
<hr class="kghr"/>
<br />
{/foreach}
<!-- End News Display Template -->
jetzt sollte ich sowas schreiben wie:

Code: Select all

 {if {count_news_items} == "1"}
{if $entry->content}
	<div class="NewsSummaryContent">
		{eval var=$entry->content}
	</div>
{/if}
{/if}
{ else if .......
und hier das normale Template hinter?!?!?!?!

Das Problem ist.. das wenn ich den tag {count_news_items} mal auf einer leeren Seite einfügen schmeißt er mir absolut nichts raus..

Das zweite Problem ist das ich nicht wirklich schlau aus den ganzen Tags werde.. ich verstehen zwar oft den Sinn, so das ich das Template umstellen und umbauen kann, aber wirklich begriffen hab ich das nicht.. gibt’s da nicht irgendwo ne Möglichkeit die Syntax zu erlernen?
Last edited by syl3x on Thu Jul 01, 2010 11:53 am, edited 1 time in total.
NaN

Re: News-Modul: Wenn nur 1 News da ist....

Post by NaN »

Warum müsst ihr immer so um die Ecke denken?
Was bitte ist denn {count_news_items} ???
Und wieso sollte der Dir irgendwas ausgeben, wenn Du ihn einfach so völlig losgelöst vom NewsModul irgendwo auf einer leeren Seite platzierst?

Im mitgelieferten Zusammenfassungs-Template steht doch alles in folgender Bedingung:

Code: Select all


{if $itemcount>0}
...
{/if}

{$itemcount} Enthält also die Anzahl der anzuzeigenden News-Artikel.
Und der ganze Spaß soll nur angezeigt werden, wenn es mindestens einen News-Artikel gibt.

Und dann werden alle News-Artikel durchgegangen:

Code: Select all


{foreach from=$items item=entry}

...

{/foreach}

Wenn man da jetzt einfach folgendes ändert:

Code: Select all


{foreach from=$items item=entry}

{if $itemcount == 1}

{news action="detail" articleid="$entry->id" ... }

{else}

...

{/if}
{/foreach}

Sollte das Problem eigentlich gelöst sein.
Last edited by NaN on Thu Jul 01, 2010 12:28 pm, edited 1 time in total.
syl3x
Forum Members
Forum Members
Posts: 17
Joined: Tue May 11, 2010 7:27 am

Re: News-Modul: Wenn nur 1 News da ist....

Post by syl3x »

Sooo... ich hab das jetzt folgendermaßen gelöst.... ich habe das ganze über 2 Templates gemacht...

Code: Select all

if isset($entry->canonical)}
  {assign var='canonical' value=$entry->canonical}
{/if}
{assign var='autodescription' value=$entry->title}
<!-- Start News Display Template -->

{if $itemcount == 1}

{news category='LesBar' lang="de_DE" summarytemplate="carpeNewskurzdetail"}

{else}

{foreach from=$items item=entry}
<div class="NewsSummary">
<div class="NewsSummaryLink">
<h3><a href="{$entry->moreurl}" title="{$entry->title}"  class="white invert">{$entry->title|escape}</a></h3>
</div>
{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">
        {if $field->type == 'file'}
         <img class="newsimg" alt="" src="{$entry->file_location}/{$field->value}"/>
        {else}
          {$field->name}: {eval var=$field->value}
        {/if}
     </div>
  {/foreach}
{/if}

{if $entry->summary}
	<div class="NewsSummarySummary">
		{eval var=$entry->summary}
	</div>
{else if $entry->content}
	<div class="NewsSummaryContent">
		{eval var=$entry->content}
	</div>
{/if}
<br />	<div class="NewsSummaryMorelink">
		<p><a href="{$entry->moreurl}" title="Ganzen Artikel lesen: {$entry->title}">Zum Artikel: {$entry->title}</a></p>
	</div>
</div>
<hr class="kghr"/>
<br />
{/foreach}
{/if}
<!-- End News Display Template -->
der Eintrag:

Code: Select all

{if $itemcount == 1}

{news category='LesBar' lang="de_DE" summarytemplate="carpeNewskurzdetail"}

{else}


verweist auf das andere Template:

Code: Select all

{if isset($entry->canonical)}
  {assign var='canonical' value=$entry->canonical}
{/if}
{assign var='autodescription' value=$entry->title}
<!-- Start News Display Template -->
{foreach from=$items item=entry}

{if $entry->content}
	<div class="NewsSummaryContent">
		{eval var=$entry->content}
	</div>
{/if}
<hr class="kghr"/>
<br />
{/foreach}
<!-- End News Display Template -->
DICKES DANKE für deine Hilfe... Ohne wäre ich im Leben nicht darauf gekommen!!!!
Last edited by syl3x on Thu Jul 01, 2010 1:47 pm, edited 1 time in total.
syl3x
Forum Members
Forum Members
Posts: 17
Joined: Tue May 11, 2010 7:27 am

Re: News-Modul: Wenn nur 1 News da ist....

Post by syl3x »

habs jetzt noch einfacher gelöst...

Code: Select all

{if isset($entry->canonical)}
  {assign var='canonical' value=$entry->canonical}
{/if}
{assign var='autodescription' value=$entry->title}
<!-- Start News Display Template -->
{foreach from=$items item=entry}

{if $itemcount == 1}

{if $entry->content}
	
<h4>{$entry->title}</h4>
{$entry->content}
	
{/if}

{else}


<div class="NewsSummary">
<div class="NewsSummaryLink">
<h3><a href="{$entry->moreurl}" title="{$entry->title}"  class="white invert">{$entry->title|escape}</a></h3>
</div>
{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">
        {if $field->type == 'file'}
         <img class="newsimg" alt="" src="{$entry->file_location}/{$field->value}"/>
        {else}
          {$field->name}: {eval var=$field->value}
        {/if}
     </div>
  {/foreach}
{/if}

{if $entry->summary}
	<div class="NewsSummarySummary">
		{eval var=$entry->summary}
	</div>
{else if $entry->content}
	<div class="NewsSummaryContent">
		{eval var=$entry->content}
	</div>
{/if}
<br />	<div class="NewsSummaryMorelink">
		<p><a href="{$entry->moreurl}" title="Ganzen Artikel lesen: {$entry->title}">Zum Artikel: {$entry->title}</a></p>
	</div>
</div>
<hr class="kghr"/>
<br />
{/if}
{/foreach}

<!-- End News Display Template -->
Sollte eigentlich ganz einfach sein.
Kommt drauf an, ob die Artikel ID mit im Zusammenfassungs-Template enthalten ist.

Ich glaube nicht... und ich weiss auch nicht wie ich sie da hinein bekomme.... 
darum meine Alternativ-Lösungen...welche ich ganz in Ordnung finde. Nur, das ich den Titel  noch nicht ganz oben hab... was aber auch so sollte da der User schließlich auf „XXX“ geklickt hat und nicht auf „XYZ“  ...
Last edited by syl3x on Mon Jul 05, 2010 7:45 am, edited 1 time in total.
NaN

Re: News-Modul: Wenn nur 1 News da ist....

Post by NaN »

syl3x wrote:
Sollte eigentlich ganz einfach sein.
Kommt drauf an, ob die Artikel ID mit im Zusammenfassungs-Template enthalten ist.
Ich glaube nicht... und ich weiss auch nicht wie ich sie da hinein bekomme....
{$entry->id} Wie oben beschrieben ;)
syl3x wrote: Nur, das ich den Titel  noch nicht ganz oben hab...
"Ganz oben" steht in Deinem Seiten-Template vermutlich auch nur {title}.
Da Du das News-Module aber erst nach dem Titel aufrufst, kannst Du den ja nicht mehr ändern. Versuch stattdessen mal das News-Modul vor dem Titel aufzurufen, aber die Ausgabe des News-Moduls mit Hilfe von {capture} einer Variablen zuzuweisen (anstatt es anzuzeigen).
Dann kannst Du in der Zeile wo {title} steht prüfen, ob es einen News-Titel gibt:

Code: Select all


{if isset($newstitle)}
   {$newstitle}
{else}
   {title}
{/if}

Dazu musst Du nur in Deinem Zusammanfassungs-Template den News-Titel der Variable "newstitle" zuweisen:

Code: Select all


{if $entry->content}
   {assign var="newstitle" value=$entry->title}
   <h4>{$entry->title}</h4>
   {$entry->content}
{/if}

owr_bgld

Re: News-Modul: Wenn nur 1 News da ist....

Post by owr_bgld »

Betreffs Titel könnte dir eventuell dieser "Trick" allgemein weiterhelfen (Wie zeige ich den Titel der News als Überschrift an): http://forum.cmsmadesimple.org/index.ph ... 475.0.html
syl3x
Forum Members
Forum Members
Posts: 17
Joined: Tue May 11, 2010 7:27 am

Re: News-Modul: Wenn nur 1 News da ist....

Post by syl3x »

Betreffs Titel könnte dir eventuell dieser "Trick" allgemein weiterhelfen (Wie zeige ich den Titel der News als Überschrift an): http://forum.cmsmadesimple.org/index.ph ... 475.0.html
Das läuft für die normale News Detail anzeige schon..
Quote from: syl3x on Today at 03:33

Quote
Sollte eigentlich ganz einfach sein.
Kommt drauf an, ob die Artikel ID mit im Zusammenfassungs-Template enthalten ist.

Ich glaube nicht... und ich weiss auch nicht wie ich sie da hinein bekomme....


{$entry->id} Wie oben beschrieben Wink
das weiss ich doch.. allerdings hauts bei mir mit deiner Version gar nicht hin.. mir wird nichts angezeigt... 

und so wie ich das jetzt verstanden habe müsste ich auch für jede Kategorie ein Template anlegen.. was mir zu unübersichtlich werden würde.. (so hätte ich das zumindest mit meiner ersten version machn müssen..)
NaN

Re: News-Modul: Wenn nur 1 News da ist....

Post by NaN »

syl3x wrote:
{$entry->id} Wie oben beschrieben Wink
das weiss ich doch.. allerdings hauts bei mir mit deiner Version gar nicht hin.. mir wird nichts angezeigt... 
Deine Idee ist ja auch nicht schlecht.
Finde ich sogar noch besser als diese Gefrickel mit verschachtelten Modulaufrufen.
syl3x wrote: und so wie ich das jetzt verstanden habe müsste ich auch für jede Kategorie ein Template anlegen.. was mir zu unübersichtlich werden würde.. (so hätte ich das zumindest mit meiner ersten version machn müssen..)
Eigentlich müsste ein Template reichen.
Aber wenn es eh nicht funktioniert, dann lassen wir diesen Ansatz lieber.
War ja nur eine Idee ;)
Post Reply

Return to “Module und Tags”