Page 1 of 2

Individuelle Darstellung für versch. Kategorien

Posted: Sat Feb 24, 2007 6:13 pm
by radarin
hallo zusammen
ich hab die 'entries.tpl' so angepasst, dass vor dem titel in kleines symbol erscheint. nun möchte ich aber das symbol der kategorie anpassen. wie kriege ich das hin? bekomme ständig fehlermeldungen von der smarty template. php seite includen funktioniert, aber mit der ausgabe klemmt es dann wieder...

gruss rene

Posted: Mon Feb 26, 2007 6:37 am
by radarin
ist das wirklich so kompliziert..? :roll:

Posted: Mon Feb 26, 2007 10:19 am
by garvinhicking
Hi!

Welches Icon genau meinst Du denn?

Wenn Du fehlermeldungen bekommst, würde dir evtl. eher jemand helfen wenn Du diese Meldungen mitteilst, genauso wie die Änderungen die Du versucht hast zu machen.

Grüße,
Garvin

Posted: Tue Feb 27, 2007 8:29 pm
by radarin
Ich habe in meiner 'entries.tpl' vor dem Titel des Beitrages ein kleines Bildchen eingefügt. (Pinnadel) Das wird bei allen Beirägen angezeigt. In der Kategorie 'Tagebuch' soll ein anderes Icon angezeigtwerden (Kalenderblatt).

Das Datum wird unter dem Titel angezeigt. Und eben wieder in der Kategorie 'Tagebuch' soll das Datum anders, nämlich vor dem Titel auf der selben Zeile ausgegeben werden.

Mein Problem ist nun die SMARTY Template Engine. Wie kann ich da direkt 'IF Kategorie gleich Tagebuch, sonst' einbauen?
Ich kann zwar auch eine PHP-Seite ins Template includen, aber dann hane ich die Variablen im Smarty-Format nicht mehr zur Verfügung.

Posted: Wed Feb 28, 2007 9:06 am
by garvinhicking
Hi!

Das kannst Du mit Smarty so machen:

Code: Select all

{if $category == 2}
Kategorie 2!
{else}
Nicht Kategorie 2
{/if}
Viele Grüße,
Garvin

Posted: Wed Feb 28, 2007 11:38 pm
by radarin
danke für die antwort, aber das funktioniert nur für den ersten eintrag. gebe ich zur kontrolle {$category} aus, habe ich im ersten eintrag eine '6', in allen folgenden bekomme ich 'Array', und so funzt das IF natürlich nicht mehr.
ich habe versucht die kategorie aus der url zu übernehmen. {$_GET['QUERY_STRING']} führt zum fehler 'syntax error: unrecognized tag: $_GET['QUERY_STRING'] (Smarty_Compiler.class.php, line 436) '

der versuch es mit dem namen der kategorie umzuseten funktioniert im ersten eintrag nicht, da die variable '{$category.category_name}' am anfang gesetzt noch leer ist, am ende dann aber den korrekten inhalt hat. wenn ein eintrag der kategorie 'tagebuch' zugeordnet ist, dann müsste das doch überall bei der ausgabe innerhalb des '{foreach from=$dategroup.entries item="entry"}' vorhanden sein. irgendwie blick ich da nicht mehr durch...

gruss rene

Posted: Wed Feb 28, 2007 11:58 pm
by radarin
<!-- ENTRIES START -->
{serendipity_hookPlugin hook="entries_header" addData="$entry_id"}

{foreach from=$entries item="dategroup"}<!--Eintrag-->
{foreach from=$dategroup.entries item="entry"}

<div class="post">
<!--Titel: -->
<table border="0" cellspacing="0" cellpadding="0">
<tr>
<td rowspan="2" valign="bottom"><!--ICON-->{if $category == 6}<img src = "templates/darin/images/icon/kalender.jpg" border = "0">{else}<img src = "templates/darin/images/icon/pin.gif" border = "0">{/if}</td>
<td><h2 id="post-{$entry.id}"><!--TITEL, tlw. mit Datum-->{if $category == 6 OR $category == 10 OR $category == 11}{$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}: {/if}<a href="{$entry.link}">{$entry.title}</a></h2></td>
</tr>
<tr>
<td>{if !$is_single_entry}<small><!--Zeile unter Titel --> Kat: {$category}, {$category.category_name|@escape} (ist im 1. DS hier leer), {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}</small>{/if}</td>
</tr>
</table>



{if $entry.categories}
<span class="categoryIcon">
{foreach from=$entry.categories item="category"}
{if $category.category_icon}
<a href="{$category.category_link}"><img class="categoryIcon" title="{$category.category_name|@escape}{$category.category_description|@emptyPrefix}" alt="{$category.category_name|@escape}" src="{$category.category_icon}" /></a>
{/if}
{/foreach}
</span>
{/if}

<div class="entrytext">
<p>
{$entry.body}
{if $is_single_entry}
<a id="extended"></a>{$entry.extended}
{/if}
</p>

{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}

<p class="postmetadata{if $is_single_entry} graybox{/if}">
<small><!--Fusszeile:-->
{if $is_single_entry}
<!--Einzelanzeige-->
{$CONST.ENTRY_POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY} {$CONST.AT} {$entry.timestamp|@formatTime:"%H:%M"}.
{if $entry.categories}
{$CONST.FILED_UNDER} {foreach from=$entry.categories item="category" name="categories"}<a href="{$category.category_link}">{$category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}.
{/if}
{if $entry.allow_comments}
{$CONST.LEAVE_RESPONSE|sprintf:'<a href="#serendipity_CommentForm">':'</a>':"<a href=\"$entry[link]\">":'</a>'}
{if $entry.moderate_comments}
{$CONST.SUBJECT_TO_MODERATION}
{/if}
{else}
{$CONST.COMMENTS_CLOSED}
{/if}

{else}
<!--Geschrieben von--><!--{$CONST.POSTED_BY}-->Autor: <!--Liste--><a href="{$entry.link_author}">{$entry.author}</a><!-- Ende Autor -->
{if $entry.categories}
{$CONST.IN} {foreach from=$entry.categories item="category" name="categories"}Kategorie: <a href="{$category.category_link}">{$category.category_name|@escape} (an dieser stelle mit inhalt)</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}
{/if}

Code: Select all

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

    {foreach from=$entries item="dategroup"}<!--Eintrag-->
        {foreach from=$dategroup.entries item="entry"}
         
		<div class="post">
            <!--Titel: -->
			<table border="0" cellspacing="0" cellpadding="0">
              <tr> 
                <td rowspan="2" valign="bottom"><!--ICON-->{if $category == 6}<img src = "templates/darin/images/icon/kalender.jpg" border = "0">{else}<img src = "templates/darin/images/icon/pin.gif" border = "0">{/if}</td>
                <td><h2 id="post-{$entry.id}"><!--TITEL, tlw. mit Datum-->{if $category == 6 OR $category == 10 OR $category == 11}{$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}: {/if}<a href="{$entry.link}">{$entry.title}</a></h2></td>
              </tr>
              <tr> 
                 <td>{if !$is_single_entry}<small><!--Zeile unter Titel --> Kat: {$category}, {$category.category_name|@escape},   {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY}</small>{/if}</td>
              </tr>
            </table>
			
            

            {if $entry.categories}
            <span class="categoryIcon">
            {foreach from=$entry.categories item="category"}
                {if $category.category_icon}
                    <a href="{$category.category_link}"><img class="categoryIcon" title="{$category.category_name|@escape}{$category.category_description|@emptyPrefix}" alt="{$category.category_name|@escape}" src="{$category.category_icon}" /></a>
                {/if}
            {/foreach}
            </span>
            {/if}

            <div class="entrytext">
                <p>
                {$entry.body}
                {if $is_single_entry}
                <a id="extended"></a>{$entry.extended}
                {/if}
                </p>

                {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}

            <p class="postmetadata{if $is_single_entry} graybox{/if}">
                <small><!--Fusszeile:-->
                {if $is_single_entry}
                <!--Einzelanzeige-->
				{$CONST.ENTRY_POSTED_BY} <a href="{$entry.link_author}">{$entry.author}</a> {$CONST.ON} {$entry.timestamp|@formatTime:DATE_FORMAT_ENTRY} {$CONST.AT} {$entry.timestamp|@formatTime:"%H:%M"}.
                {if $entry.categories}
                   {$CONST.FILED_UNDER} {foreach from=$entry.categories item="category" name="categories"}<a href="{$category.category_link}">{$category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}.
                {/if}
                {if $entry.allow_comments}
                    {$CONST.LEAVE_RESPONSE|sprintf:'<a href="#serendipity_CommentForm">':'</a>':"<a href=\"$entry[link]\">":'</a>'}
                    {if $entry.moderate_comments}
                        {$CONST.SUBJECT_TO_MODERATION}
                    {/if}
                {else}
                    {$CONST.COMMENTS_CLOSED}
                {/if}

                {else}
                <!--Geschrieben von--><!--{$CONST.POSTED_BY}-->Autor: <!--Liste--><a href="{$entry.link_author}">{$entry.author}</a><!-- Ende Autor -->
                {if $entry.categories}
                   {$CONST.IN} {foreach from=$entry.categories item="category" name="categories"}Kategorie: <a href="{$category.category_link}">{$category.category_name|@escape}</a>{if not $smarty.foreach.categories.last}, {/if}{/foreach}
                {/if}

Posted: Thu Mar 01, 2007 11:48 am
by garvinhicking
Hi!

In einem deiner foreach-loops wird anscheinend $category neu belegt. Suche mal nach "item='category'" und ändere das dann in "item='single_category'. Danach ersetzt du innerhalb dieses foreach's $category durch $single_category.

Dann müsste dein eigenes $category überall wieder klappen.

Grüße,
Garvin

Posted: Sat Mar 03, 2007 7:05 pm
by radarin
ist in meinem template nicht zu finden. ich versuch es jetzt mal mit dem modifizieren des 'default' templates...

Posted: Sat Mar 03, 2007 11:40 pm
by garvinhicking
Hi!

In der entries.tpl müsste $category drin sein. Das wird vom default ordner genommen wenn dein ordner keine eigene hat.

Grüße,
Garvin

Posted: Mon Mar 12, 2007 3:39 am
by radarin
ich hab das problem noch immer nicht gelöst. die entries.tpl gibt mir die einträge nach 2 foreach aus:

Code: Select all

{foreach from=$entries item="dategroup"}
{foreach from=$dategroup.entries item="entry"}
gleich danach gebe ich den titel {$entry.title} und die kategorie {$category}, {$entry_category.category_name} aus.

beim aufruf der einträge einer kategorie habe ich in {$category} ab dem 1. eintrag die kategoriennummer drinn, {$entry_category.category_name} ist im 1. eintrag leer, ab dem 2. eintrag steht der name der kategorie drinn.

rufe ich alle kategorien auf, ist {$category} in allen einträgen leer. {$entry_category.category_name} ist im 1. eintrag ebenfalls leer, im 2. eintrag steht der name des 1. eintrag drinn, im 3. eintrag der name des 2. eintrages. etc. immer um eines verschoben.

unter dem text des eintrages wird die kategorie so ausgegeben:

Code: Select all

{if $entry.categories}
{foreach from=$entry.categories item="entry_category" name="categories"}
{$entry_category.category_name|@escape}{/foreach}
{/if}
was hat es denn damit auf sich? ein ds hat ja nur 1 kategorie, warum also ein foreach?

als ausgangslage habe ich das defaulttemplate genommen. ich benötige einfach direkt nach dem 2. foreach den namen oder die nummer der katogorie, zuverlässig, egal ob ich eine oder alle kategorien anzeige.

"item='category'" oder "item='single_category'" ist im template nirgens zu finden.

Posted: Mon Mar 12, 2007 9:30 am
by garvinhicking
Hi!

Wie kommst Du auf $entry_category.category_name? Du müsstest $category benutzen. $entry_category wird ja nur in der Schleife gesetzt in der die Kategorien zugehörig zu einem Eintrag ausgegeben werden.

Was genau willst Du jetzt benutzen/prüfen:

A. Die Kategorien die einem Eintrag zugeordnet sind ($entry.categories, abhängig von einem Eintrag)

B. Die AKTUELL GEWÄHLTE Kategorie ($category, total unabhängig von einem Eintrag)

Viele Grüße,
Garvin

Posted: Mon Mar 12, 2007 5:58 pm
by radarin
eigentlich generell die kategorie jedes einzelnen eintrages, egal ob nur eine kategorie aufgerufen wird oder alle.

ich will für die kat. tagebuch eine andere darstellung als für die restlichen. beim tagebuch ist das datum wichtig in der darstellung, sonst eher nebensächlich...

gruss rene

Posted: Tue Mar 13, 2007 10:24 am
by garvinhicking
Hi!

Wenn Du für eine Kategorie ein anderes Template nutzen willst, beutze das Plugin "Erweiterte Optionen für Kategorien", dann kannst Du pro Kategorie ein eigenes Template setzen.

Wenn Du dann im Kateogorie-Plugin eine Kategorie auswählst, werden alle Artikel dort in deinem gewählten Template dargestellt.

Ansonsten prüfst du in der entries.tpl einfach:

Code: Select all

{if (in_array('5', $entry['categories']))}
...hier das datum etc....
{/if}
Die '5' ersetzt Du mit deiner Kategorie.

Das kannst Du ERST dann prüfen wenn Du die <h3 class='serendipity_date'>... HTML Snippets innerhalb des {foreach from=$dategroup.entries item="entry"} loops packst, und deine abfrage darunter. Ausserhalb des foreach loops ist $entry nämlich nicht gesetzt und du kannst es ergo nicht abfragen.

Viele Grüße,
Garvin

Posted: Tue Mar 13, 2007 8:37 pm
by radarin
ich hab NACH (und innerhalb) <h3 class='serendipity_date'> und
{foreach from=$dategroup.entries item="entry"} das if in array gesetzt, bekomme aber diesen fehler:

Fatal error: Smarty error: [in file:/home/darinch/public_html/blog/templates/darin03/entries.tpl line 24]: syntax error: unbalanced parenthesis in if statement (Smarty_Compiler.class.php, line 1256) in /home/darinch/public_html/blog/bundled-libs/Smarty/libs/Smarty.class.php on line 1088