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

#1 27. Oktober 2014 10:31

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

[GELÖST] ListIt2 - Kategorie verbergen

Hallo Ihr Guten,

das Kategorietemplate von Listit2 zeigt immer alle Kategorien. Ich würde gern eine Kategorie von der Anzeige auschließen. Der Parameter exclude_category scheint sich nur auf Einträge zu beziehen, nicht auf die Kategorieanzeige selbst.

Hintergrund: ich habe 12 Kategorien (Monatsnamen) für einen Veranstaltungsplan. Ganz bestimmte wenige Termine sollen an anderer Stelle archiviert werden. Da dies keiner Regelmäßigkeit unterliegt, kann ich die normale Archivfunktion nicht nutzen - denn die archiviert alles.

Also dachte ich mir, ich füge eine 13. Kategorie "Archiv" hinzu. Wenn ein Termin dort hineingeschoben werden soll, muss nur die Kategorie nachträglich bearbeitet werden (oder ich erlaube von vornherein mehrere Kategorien).

Würde auch funktionieren - bis auf diesen einen Schönheitsfehler.

Offline

#2 27. Oktober 2014 10:42

rage_all
kennt CMS/ms
Ort: Augsburg
Registriert: 09. März 2011
Beiträge: 288

Re: [GELÖST] ListIt2 - Kategorie verbergen

Ich glaube ich habs ca. 43 Mal erwähnt: I'm a designer, not a coder.  big_smile

Aber ich versuche jetzt trotzdem mal mein Glück:

[== Smarty / Template ==]
{if $fielddef.type == 'Categories' && ($fielddef.value != 'archiv')}
... do-this ...
{/if}

Offline

#3 27. Oktober 2014 11:23

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: [GELÖST] ListIt2 - Kategorie verbergen

Hehe - geht mir genauso.:)

Das entspricht in etwa meinem ersten missglückten Versuch.

Das klappt aber nicht, da die Bedingung übergeordnet ist. Sie bewirkt, dass die Kategorien insgesamt nur dann angezeigt werden, wenn der Wert eines Feldes nicht "Archiv" ist. Andernfalls werden sie alle ausgeblendet. Der Wert der Kategorie Archiv ist aber immer Archiv.

Es sei denn ich habe dich missverstanden.

Beitrag geändert von antibart (27. Oktober 2014 11:26)

Offline

#4 27. Oktober 2014 11:49

rage_all
kennt CMS/ms
Ort: Augsburg
Registriert: 09. März 2011
Beiträge: 288

Re: [GELÖST] ListIt2 - Kategorie verbergen

Ach so, alles ist "archiv".
Ich habe verstanden: 12 Kategorien (meinetwegen Jan, Feb, Mar, ...) und 1 extra Kategorie "archiv".

Dann würde es auch via einem Extra Feld gehen, z.B.

[== Smarty / Template ==]
{if $fielddef.name == 'EXAMPLE' && $item->fielddefs.EXAMPLE.value == '1'}
 {$item->........}
{/if}

oder, wahrscheinlich sinniger, anders herum:

[== Smarty / Template ==]
{if $fielddef.name == 'EXAMPLE' && $item->fielddefs.EXAMPLE.value != '1'}
 {$item->........}
{/if}

Ich habe neulich festgestellt, dass beim Rendern der Einträge die Reihenfolge der Extra-Felder eine immense Rolle spielt.
Bei der Ausgabe des Code kam ein Wert zuerst, obwohl ich ihn im Template nachgeordnet hatte. Mir ging das nicht in den Kopf, warum. Ich dachte immer: Hier kommt A im Template und erst danach wird B abgefragt, also muss auch in der HTML-Ausgabe erst A kommen und danach B.

Ich hab mir zusammenkonstruiert, dass das Template halt n Mal durchläuft, sooft wie Felder in der Datenbank sind, undzwar in der Reihenfolge wie sie in der DB stehen. Sprich: Lauf 1: Feld 1 im ListIt, im Template zwar ganz unten, aber in der HTML-Ausgabe ganz vorn, weil alle anderen Bedingungen beim Durchgang nicht erfüllt waren; Lauf 2: Feld 2, im Template ganz vorn, aber eben erst an zweiter Stelle in der DB und deswegen erst nachrangig in der HTML-Ausgabe.

Vielleicht kommt bei Dir das Problem auch daher. Ich hab noch nicht mit den Kateorien gearbeitet - in welcher Reihenfolge werden die abgefragt?

Offline

#5 27. Oktober 2014 12:02

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: [GELÖST] ListIt2 - Kategorie verbergen

Danke schonmal.

die Idee mit den zusätzlichen Extrafeld hatte ich tatsächlich auch. Allerdings wollte ich kein Textfeld, sondern eher ein "Häkchen" oder radiobutton.

Ich habe aber keine Ahnung, wie man "Häkchen abfragt". Es funktioniert nicht über den value, der mit dem Häkchen übergeben werden soll (zb: Ja). Es muss sowas geben wie on/off.

Reihenfolle: Wie in deinem Beispiel: chronologisch. Archiv ganz unten.

Beitrag geändert von antibart (27. Oktober 2014 12:03)

Offline

#6 27. Oktober 2014 13:03

rage_all
kennt CMS/ms
Ort: Augsburg
Registriert: 09. März 2011
Beiträge: 288

Re: [GELÖST] ListIt2 - Kategorie verbergen

Also, beim Häkchen ist der Wert tatsächlich "1" oder "0" — exakt wie in meinem Beispiel eben.

Ansonsten, was passiert, wenn Du dieses Template hier nimmst?

[== Smarty / Template ==]
{if $items|@count > 0}

 {foreach from=$items item=item}

 {if $fielddef.type == 'Categories' && ($fielddef.value != 'archiv')}

 <div class="veranstaltung"> <!-- item -->
  <h4 class="veranstaltung-titel">{$item->title}</h4>
  {if !empty($item->fielddefs)}
  <!-- field definitions -->
  <div class="veranstaltung-details">
   {foreach from=$item->fielddefs item=fielddef}

   {if $fielddef.value && $fielddef.type != 'Categories'}

    {if $fielddef.type == 'SelectFile'}
     {$fielddef.name}: <a href="{$fielddef->GetImagePath(true)}/{$fielddef.value}">{$fielddef.value}</a><br />
    {elseif $fielddef.type == 'FileUpload'}
     <a class="img-responsive lightbox" href="{$fielddef->GetImagePath(true)}/{$fielddef.value}" title="{$item->title}">
       {CGSmartImage src="{$fielddef->GetImagePath(true)}/{$fielddef.value}" width="200" height="200" alt="{$item->title}"}
     </a>
    {elseif $fielddef.type == 'SelectDateTime'}
     {$fielddef.name}: {$fielddef.value|cms_date_format}<br />
    {elseif $fielddef.name == 'Beschreibung'}
     <p><b>Beschreibung:</b></p>
     {$item->fielddefs.beschreibung.value}
                {else}
     {$fielddef.name}: {$fielddef.value}<br />
    {/if}

   {/if}{* eof NOT category *}
   {/foreach}
  </div><!-- eof item properties //-->
  {/if}
 </div><!-- eof this item //-->

 {/foreach}<!-- eof all items //-->

{/if}{* eof items count *}

Ein Fehler, alle Veranstaltungen, alle außer denen aus der Kategorie "archiv" oder...?

Offline

#7 27. Oktober 2014 14:47

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: [GELÖST] ListIt2 - Kategorie verbergen

Ich habe es etwas simplifiziert so gemacht:

Im normalen Summary-Template:

[== smarty ==]
{if $item->fielddefs.archiv.value == '1'}

nüscht

{else}
gedöns
{/if}

bzw im Archiv-Template eben genau umgekehrt. Das ging im Prinzip.

Ich stoße jetzt aber wieder auf ein Problem, was ich schon einmal mit dieser Installation hatte. Ich bin mir nicht sicher, ob das Absicht ist oder nicht doch eher ein Bug.

Das Category-Template gibt auch Monate (=Kategorien) mit abglaufenen Items aus. Also im Prinzip Kategorien ohne Inhalt. Erst wenn ich die Einträge deaktiviere oder lösche, wird auch die Kategorie ausgeblendet.

Gelöschte oder deaktivierte Einträge kann ich aber nirgendwo darstellen - also auch nicht im (Pseudo)-Archiv.

Beitrag geändert von antibart (27. Oktober 2014 14:58)

Offline

#8 02. Dezember 2014 14:59

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: [GELÖST] ListIt2 - Kategorie verbergen

Etwas verspätet:

Da ich mit keiner Smarty-Lösung so recht weiter kam , habe ich zu einer etwas holzhämmernden Lösung gegriffen.

Im Kategorie -Template

[== html ==]
<li class="archiv" stlye="display:none"><a href....

Offline

#9 02. Dezember 2014 15:14

rage_all
kennt CMS/ms
Ort: Augsburg
Registriert: 09. März 2011
Beiträge: 288

Re: [GELÖST] ListIt2 - Kategorie verbergen

Mit Ablaufdatum ist auch nichts zu reißen?
Ist halt seitens Google blöd, denke ich. Sachen wie weiße Schrift auf weißem Hintergrund und zuviel Content mit "display:none" mögen die (IMHO) nicht besonders.

Offline

#10 02. Dezember 2014 16:17

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: [GELÖST] ListIt2 - Kategorie verbergen

Google ist in diesem Fall nicht so wild. Es ist nur ein einzelnes, irrelevantes Wort auf einer Seite, das verborgen wird.

Mit Ablaufdatum ist nichts zu reißen, da nur einzelne Artikel rausgelöst/archiviert werden sollten. Das folgt keiner Routine oder so. Ein Ablaufdatum haben aber alle.

Und wie schon gesagt: Der Kategoriebaum zeigt auch Kategorien mit abgelaufenen Artikeln an. Um die Kategorie auszublenden, muss der Artikel gelöscht oder deaktiviert werden. Wodurch er aber auch nicht mehr im (Pseudo)Archiv dargestellt werden kann.

Das ist ein Verhalten, was ich nach wie vor nicht so recht nachvollziehen kann. Sinnvoll wäre für mich, wenn abgelaufene  Artikel automatisch im (echten) Archiv landen würden. Das tun sie aber nicht: Archiviert wird alles, was nicht deaktiviert wurde. Daher musste ich als Notlösung eine Kategorie "Archiv" anlegen, in das einzelne Artikel dann verschoben werden.

BTW: Dort (im Pseudo-Archiv) funktioniert übrigens kein alternatives Detailtemplate. Es wird immer das Standardtemplate gewählt.

{Listit2meineinstanz category="archiv" template_detail="archivtemplate"} wird ignoriert. Es sei ich denn, ich stelle es auf "standard".

Beitrag geändert von antibart (02. Dezember 2014 16:32)

Offline

#11 03. Dezember 2014 01:00

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

Re: [GELÖST] ListIt2 - Kategorie verbergen

Damit

antibart schrieb:

[== html ==]
<li class="archiv" stlye="display:none"><a href....

dürfte es aber nicht funktionieren wink ...

Offline

#12 03. Dezember 2014 08:34

antibart
Server-Pate
Registriert: 14. Dezember 2010
Beiträge: 880

Re: [GELÖST] ListIt2 - Kategorie verbergen

Harrr ... smile

Offline