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

#1 16. März 2015 16:00

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

[GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo zusammen,

ich bin momentan mit dem CGCalendar-Modul beschäftigt und habe dabei ein Problem – hoffentlich könnt Ihr mir helfen …
Habe schon hier im Forum und via google viel rumgesucht und auch so Einiges ausprobiert, aber bisher funktioniert nichts. sad

Mein Problem:
Offensichtlich gibt es beim Modul standardmäßig keine Funktion, die einfach alle Kategorien auswirft (beim CGBlog geht das).
Daher wollte ich das selbst irgendwie erweitern, bin bisher aber furchtbar gescheitert.
Bisher ist die Kategorie rein durch die ausgewählte Farbe ersichtlich (es steht ja auch nirgendwo der Kategorie-Name); und ich persönlich benötige diese Farben nicht wirklich (auch wenn ich die Funktion an sich gut finde) – aber man müsste dazu ja im Grunde auch eine Legende anbieten. ;-)

Daher meine Frage:
Wie kann ich mir beim Kalender alle verfügbaren Kategorien ausgeben lassen (z.B. in einer Liste), wobei jede Kategorie mit Link anklickbar ist, bei welchem dann alle Termine (im vorgebenen Zeitraum) innerhalb dieser Kategorie erscheinen?

Als Zusatz wäre es dann natürlich noch schön, wenn bei jedem Termin die Kategorie (als Text und Link) ebenfalls mit angezeigt wird.


Freu mich auf Eure Antworten und sende Euch schon mal herzlichen Dank! big_smile



PS. CMSMS 1.11.13 und CGCalendar 1.14.6 smile

Beitrag geändert von JessyRamon (18. Mai 2015 11:16)

Offline

#2 18. März 2015 08:38

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Die Lösung dürfte recht simpel sein.
Folgender UDT:

if(!$CGC =& cms_utils::get_module('CGCalendar'))
	return;

$categories = \CGCalendar\category::get_categories();

foreach($categories as &$cat)
{
    $cat['category_url'] = $CGC->CreateLink('cnntnt01', 'default', cms_utils::get_current_pageid(), $cat['category_name'], array('category' => $cat['category_name']), '', true);
}

$smarty =& cmsms()->GetSmarty();
$smarty->assign('cgc_categories', $categories);
echo $CGC->ProcessTemplate('category_list.tpl');

(z.B. als "get_cgc_categories" speichern)

und folgendes Template unter "/module_custom/CGCalendar/templates/category_list.tpl" speichern:

{if count($cgc_categories)}
<ul>
{foreach from=$cgc_categories item="cat"}
    <li><a href="{$cat.category_url}">{$cat.category_name}</a></li>
{/foreach}
</ul>
{/if}

Und dann einfach im Template oder Inhalt mit {get_cgc_categories} aufrufen.

Kurz zur Erklärung:
Das Script holt sich alle Kategorien von CGCalendar, geht die alle durch und fügt jeder Kategorie einen Link auf die Standard Modulaktion (das wäre dann die Kalenderansicht) hinzu. Dabei wird als Parameter immer die jeweilige Kategorie übergeben. Dann werden die Kategorien mit dem Namen "cgc_categories" an Smarty übergeben und ein Template namens "category_list.tpl" verarbeitet. In dem Template kannst Du mit {$cgc_categories} auf die Kategorien zugreifen und ausgeben.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 18. März 2015 12:24

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Wow, vielen herzlichen Dank!

Die Linkliste mit den Kategorien funktioniert, ich bin begeistert. big_smile

Da ich beim Kalender generell nur mit Listen (statt Kalender-Tabellen-Ansicht) arbeiten möchte, werde ich nun noch versuchen, dass auch beim Klick auf die Kategorie eine Liste erscheint. smile


Danke nochmal, ich bin ein großes Stück weiter! Denn ohne solch eine Kategorieliste hätte ich wohl sonst komplett auf Kategorien verzichtet und es gäbe einfach nur pure Termine. ;-)


Liebe Grüße
jess smile

Offline

#4 18. März 2015 14:15

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

JessyRamon schrieb:

Da ich beim Kalender generell nur mit Listen (statt Kalender-Tabellen-Ansicht) arbeiten möchte, werde ich nun noch versuchen, dass auch beim Klick auf die Kategorie eine Liste erscheint. smile

Ansetzen musst Du dazu im o.g. Script an dieser Stelle:

$CGC->CreateLink('cnntnt01', 'default', cms_utils::get_current_pageid(), $cat['category_name'], array('category' => $cat['category_name']), '', true);

Das sind die Parameter, die man an das Modul übergeben kann.
Draus z.B. folgendes machen:

$CGC->CreateLink('cnntnt01', 'default', cms_utils::get_current_pageid(), $cat['category_name'], array('category' => $cat['category_name'], 'display' => 'list'), '', true);


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 19. März 2015 15:30

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN,

das ist super! Vielen Dank. smile So schnell hätte ich das niemals gelöst.

Habe inzwischen an dieser Stelle auch noch ein Listentemplate angewählt, damit ich diese Kategorieansicht (pro Monat dargestellt) gesondert editieren kann. Soweit so gut!


Leider bin ich hier aber noch auf ein weiteres Problem gestoßen:

Ich möchte in dieser Übersicht gern in der Überschrift noch einmal die ausgewählte Kategorie als Text anzeigen lassen, gemeinsam mit dem aktuellen Monat.

Das mit dem Monat habe ich bereits hinbekommen, an der Kategorieausgabe (aktuell angeklickte Kategorie) hapert es leider schon wieder. :-/

Irgendwie fehlt mir da eine Variable, auf die ich zugreifen könnte, glaub ich. Ich müsste doch in der {foreach} für alle Kategorien ein {if} einbauen, damit ich nur die aktuelle Kategorie angezeigt bekomme. Soweit jedenfalls meine Denke im Moment …


Also einfach nur so ein Text:
»Termineinträge für die Kategorie [angeklickte Kategorie] im [ausgewählter Monat mit Jahr]«


Dass ich die Kategorie-Angabe innerhalb einer Termin-Detail-Anzeige auch noch anklickbar mache, werde ich mir wohl schenken. Die Komplettliste muss reichen …


Werde mal weiterkämpfen! Never give up, never surrender mad


Danke nochmal, hast mir echt sehr geholfen!
Liebe Grüße
jess smile

Offline

#6 19. März 2015 20:22

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Ich möchte in dieser Übersicht gern in der Überschrift noch einmal die ausgewählte Kategorie als Text anzeigen lassen, gemeinsam mit dem aktuellen Monat.

Die einfachste Variante wäre, im Template die Kategorie über {$smarty.get.cntnt01category|escape:'htmlall'} auszulesen.

Dass ich die Kategorie-Angabe innerhalb einer Termin-Detail-Anzeige auch noch anklickbar mache, werde ich mir wohl schenken. Die Komplettliste muss reichen …

Ist aber auch nicht weiter schwer.
Zwei Möglichkeiten:

1. die Kategorienamen aufsplitten und einen Link draus machen. Kann man sogar direkt im Template:

{$categories=', '|explode:$event.category_names}
<ul>
{foreach from=$categories item="cat"}
<li>{module_action_link module=CGCalendar display=list category=$cat text=$cat}</li>
{/foreach}
</ul>

2.:
Wenn man das jetzt mal weiterspinnt, geht es doch am Ende darum, ein Event im Template um bestimmte Werte/Eigenschaften zu "erweitern". Dazu kommt mir dann folgende Idee: am Anfang des Detail-Templates übergibt man den Event einfach an einen UDT. Der erweitert das Ding und weist es wieder dem Template zu, aber überschreibt dabei das im Template vorhandene Event mit dem geänderten Event.

UDT (extend_cgc_event):

if(!$CGC =& cms_utils::get_module('CGCalendar'))
	return;

# add {$event.category_links}
$categories     = array();
$cat_name_array = explode(', ', $params['event']['category_names']);
foreach($cat_name_array as $cat_name)
	$categories[] = $CGC->CreateLink('cnntnt01', 'default', cms_utils::get_current_pageid(), $cat_name, array('category' => $cat_name));

$params['event']['category_links'] = implode(', ', $categories);

# add full category objects {$event.category_objects} to use all colors
foreach($params['event']['categories'] as $catid)
{
    $params['event']['category_objects'][$catid] = \CGCalendar\category::load($catid);
}

# override smarty variable with modifed event
$smarty =& cmsms()->GetSmarty();
$smarty->assign('event', $params['event']);

Und angewendet wird es dann so:

{extend_cgc_event event=$event}
{$event.category_links}

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#7 20. März 2015 13:46

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN!

Ich kann Dir gar nicht genug danken! Es klappt perfekt. big_smile

NaN schrieb:

Die einfachste Variante wäre, im Template die Kategorie über {$smarty.get.cntnt01category|escape:'htmlall'} auszulesen.

Auf sowas wär ich im Leben nicht gekommen. Aber ich stecke auch nicht wirklich tief im Smarty drin, da erfolgt mein Ansatz wohl immer sehr weit von solch einer Ein-Zeilen-Lösung entfernt.

Zwei Möglichkeiten:

1. die Kategorienamen aufsplitten und einen Link draus machen. Kann man sogar direkt im Template:

Habe jetzt diese erste Version in mein Kalender-Template eingesetzt und es ist wunderbar. smile
In das Detail-Template kommt es gleich auch noch, dann ist alles perfekt.

Habe ansonsten nur noch die Auflistung durch einfache <span>[Kategorielink]</span> ersetzt, da es einzeilig für die kommende Formatierung besser hinkommt. wink
(Das ganze CSS-Styling habe ich lokal vorgearbeitet und wird jetzt nach und nach eingebaut. big_smile)

{$categories=', '|explode:$event.category_names}
<p>Kategorie: 
{foreach from=$categories item="cat" name="komma"}
<span>
{module_action_link module=CGCalendar display=list listtemplate=kalender_kategorie category=$cat text=$cat}
{if $smarty.foreach.komma.last == false}</span>,
{else}</span>
{/if} 
{/foreach}
<p>

Vermutlich nicht ganz elegant, aber es reicht erstmal. Als Bonus könnte ich mir noch eine Abfrage machen, ob es mehr als einen Kategorieeintrag gibt und man oben dann auch „Kategorien“ im Plural hinschreibt, aber das ist dann schon fast Luxus und kommt allenfalls im Feinschliff am Schluss. Die Kommatrennung ist schon mal okay so. wink


Ich bin wirklich begeistert, hätte das ohne Deine Hilfe niemals hinbekommen!


Auf gehts zur nächsten Baustelle, ich hoffe, ich darf dann wieder fragen. glasses
Herzliche Grüße und danke nochmal!
jess smile

Offline

#8 14. Mai 2015 23:23

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN,

ich hoffe, Du kannst mir noch mal helfen!
(Bin aber natürlich über alle Antworten wahnsinnig dankbar!)


Bisher hat mit dem Kalender alles soweit geklappt, nur jetzt, nach vielem Weiterbauen (auch mit anderen Modulen) bin ich auf ein weiteres Problem gestoßen. :-(


Vorab: Ich nutze das Kalendermodul nur mit der Listenansicht.

Und zwar habe ich einerseits den Kalender auf einer normalen (Unter-)Seite, dort wird das Kalender-Summary-Template aufgerufen und man kann auf die einzelnen Termine klicken, um zur jeweiligen Detailansicht zu gelangen.
Auch die Kategorien kann man anklicken (im Summary und im Detail) und es erscheint die Auswahl, alles gut und prima!

Zusätzlich habe ich in einer Sidebar immer die nächsten zwei Termine stehen. Diese sind in dieser Sidebar ständig zu sehen, also egal auf welcher Seite man sich gerade befindet. Als Termin-Ticker quasi.
(Vgl. meine Frage bei http://www.cmsmadesimple.de/forum/viewtopic.php?id=4378 … dort habe ich diese Sidebar auch erwähnt; denn zusätzlich gibt es an dieser Stelle die aktuellen News und Blog-Beiträge (Blog-Kommentare gehen noch nicht), ebenfalls alles ständig sichtbar.)

Auch in dieser Sidebar will ich die Termin-Kategorien anklickbar haben, doch hier erscheint das Problem:
Er lädt zwar die richtige Auswahl, die richtigen Inhalte, allerdings packt er mir das in die aktuelle Seite, auf der ich mich befinde.
Da ich zwei verschiedene Seiten-Templates (Layout-Templates) nutze (bzw. nutzen muss, leider), bekomme ich hier Probleme mit der Darstellung.

Als kleine Hilfestellung:
Ich muss zwei unterschiedliche Layout-Templates nutzen, für Seiten mit und ohne Modulaufruf.
Denn der Inhalts-Div-Container kann nur in den Modul-Templates automatisch „gebaut“ werden, für normale Text-Seiten ist dieser Container in einem zweiten Layout-Template enthalten.

Wenn ich mich also auf irgendeiner Modulseite (egal welcher) befinde, funktioniert alles wunderbar; wenn ich mich auf einer Textseite befinde, erscheint der Inhalts-Div-Container zweimal ineinander (einmal durch das Layout-Template und darin nochmal durch das Modul-Template.) Das bringt natürlich das gesamte Layout durcheinander.

[Ich hatte versucht, alles über ein einziges Layout-Template zu setzen, nur leider müsste ich dort eine Abfrage mit {content} machen und CMSms macht mir da einen Strich durch die Rechnung, da er zweimal {content} nicht duldet. Auch Versuche mit {content assign} waren nicht erfolgreich diesbezüglich.]


Ich habe also versucht, überall wo möglich, dem Kalendermodul zu sagen, dass die detailpage="kalender" sein soll, auch in den Modul-Einstellungen ist die Kalenderseite angewählt.
Doch leider scheint er das komplett zu ignorieren und nimmt immer nur die aktuelle Seite. :-(

Gibt es vielleicht alternativ die Möglichkeit, dem Modul mitzuteilen, welches Seiten-Template (Layout-Template) er nutzen soll?



Irgendwelche Ideen?

Falls noch etwas unklar an meiner Erläuterung sein sollte, gerne meckern. ;-)


Danke Vorab und herzliche Grüße!
jess smile

Offline

#9 14. Mai 2015 16:28

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

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Wie / mit welchem Befehl + Parametern genau rufst du den "Kalender-Ticker" auf?

Offline

#10 18. Mai 2015 11:24

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo cyberman,

cyberman schrieb:

Wie / mit welchem Befehl + Parametern genau rufst du den "Kalender-Ticker" auf?

der Aufruf lautet bei mir wie folgt:

{cms_module module="CGCalendar" detailpage="kalender" display="upcominglist" limit="2" upcominglisttemplate="kalender_summary_aside" eventtemplate="kalender_detail"}

Ich habe dem Modul ja schon übergeben, dass die Information auf der Seite mit Alias „kalender“ erscheinen soll, auch in den Moduleinstellungen ist diese Standardseite angewählt, trotzdem scheint der das in diesem Fall irgendwie zu ignorieren. Er nimmt immer die aktuelle Seite …

Problematisch ist es halt immer dann, wenn das Layouttemplate der aktuellen Seite das falsche ist. sad


Danke für Deine Hilfe und viele Grüße
jess smile

Offline

#11 18. Mai 2015 11:44

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Auch in dieser Sidebar will ich die Termin-Kategorien anklickbar haben, doch hier erscheint das Problem:
Er lädt zwar die richtige Auswahl, die richtigen Inhalte, allerdings packt er mir das in die aktuelle Seite, auf der ich mich befinde.

Woher kommt der Link zur Kategorie?
Ist das ein Link vom Modul, oder ist das einer, den Du selber im Template mit {module_action_link} bzw. per UDT generierst? In den Code-Beispielen hier wird entweder garkeine Seite oder explizit die aktuelle Seite angegeben.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#12 18. Mai 2015 12:59

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN,

danke für die Hilfe!
Ich schicke Dir gerne mal den Ausschnitt.

{$categories=', '|explode:$event.category_names}
<div class="calendar-category">
	{foreach from=$categories item="cat" name="komma"}
		<span class="icon-kategorie">
			{module_action_link module=CGCalendar detailpage="kalender" display=list listtemplate=kalender_kategorie category=$cat text=$cat}
			{if $smarty.foreach.komma.last == false}&nbsp;{/if} 
		</span>
	{/foreach}
</div>

Dieser Code-Abschnitt ist in allen Kalendertemplates enthalten, die die Kategorien mit anzeigen (und verlinken),
also im „kalender_summary_aside“ (bevorstehende Termine), wovon ich vorhin den Aufruf gepostet habe;
im „kalender_summary“ (Zusammenfassung) und „kalender_detail“ (Detailansicht);
und auch im „kalender_kategorie“ selbst ebenfalls!

Es funktioniert überall problemlos – nur eben vom „kalender_summary_aside“ nicht.
Aber dieses Template wird eben (durch die Sidebar) auch auf allen anderen Seiten aufgerufen und nicht nur innerhalb der Kalenderseite selbst.
Vermutlich ist das der Knackpunkt …


Herzlichen Dank für die ganze Hilfe!
jess smile



PS. UDT habe ich angelegt wie Du es vorgeschlagen hattest, viel geändert habe ich dort nicht und eigene UDTs auch nicht geschrieben. Der Vollständigkeit halber setze ich es hier noch mal ein:

get_cgc_categories

if(!$CGC =& cms_utils::get_module('CGCalendar'))
	return;

$categories = \CGCalendar\category::get_categories();

foreach($categories as &$cat)
{
    $cat['category_url'] = $CGC->CreateLink('cnntnt01', 'default', cms_utils::get_current_pageid(), $cat['category_name'], array('category' => $cat['category_name'], 'display' => 'list', 'listtemplate' => 'kalender_kategorie', 'detailpage' => 'kalender'), '', true);
}

$smarty =& cmsms()->GetSmarty();
$smarty->assign('cgc_categories', $categories);
echo $CGC->ProcessTemplate('category_list.tpl');

Offline

#13 18. Mai 2015 14:42

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

$cat['category_url'] = $CGC->CreateLink('cnntnt01', 'default', cms_utils::get_current_pageid(), $cat['category_name'], array('category' => $cat['category_name'], 'display' => 'list', 'listtemplate' => 'kalender_kategorie', 'detailpage' => 'kalender'), '', true);

Mit bissel englisch sollte schnell klar werden, warum das beim UDT nicht funktioniert.
Das was ich da markiert habe, gibt an auf welcher Seite das Ergebnis angezeigt werden soll.
Und da da etwas von "current" steht, wird's auch immer die aktuelle Seite.
Du musst 1. dem UDT im Template sagen, dass er das Ergebnis auf einer bestimmte Seite angeben soll:

{get_cgc_categories returnid="kalender"}

Und 2. im UDT den code so ändern, dass auch die übergebene Seite verwendet wird:

if(!$CGC =& cms_utils::get_module('CGCalendar'))
	return;

$categories = \CGCalendar\category::get_categories();

foreach($categories as &$cat)
{
	$cat['category_url'] = $CGC->CreateLink(
		'cnntnt01', 
		'default', 
		isset($params['returnid']) ? $params['returnid'] : cms_utils::get_current_pageid(), 
		$cat['category_name'], 
		array(
			'category'     => $cat['category_name'], 
			'display'      => 'list', 
			'listtemplate' => 'kalender_kategorie', 
			'detailpage'   => 'kalender'
		), 
		'', 
		true
	);
}

$smarty =& cmsms()->GetSmarty();
$smarty->assign('cgc_categories', $categories);
echo $CGC->ProcessTemplate('category_list.tpl');

Bei dem {module_action_link} weiß ich gerade nicht, ob dort auch eine Möglichkeit existiert, eine Seite mitzugeben.
Schaue ich später mal nach.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#14 18. Mai 2015 14:57

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN,

vielen Dank für Deine Mühe!

NaN schrieb:

Mit bissel englisch sollte schnell klar werden, warum das beim UDT nicht funktioniert.
Das was ich da markiert habe, gibt an auf welcher Seite das Ergebnis angezeigt werden soll.

Ja, das hatte ich tatsächlich sogar entdeckt. Vielleicht hätte ich explizit danach fragen sollen, sorry. :-/

Bin nur leider nicht Programmierer genug, um zu wissen wie und durch welche Syntax ich dieses „get_current_pageid()“ ersetzen könnte, um zu einem festen Seitenalias zu verlinken …


Bei dem {module_action_link} weiß ich gerade nicht, ob dort auch eine Möglichkeit existiert, eine Seite mitzugeben.
Schaue ich später mal nach.

Werde Deine Änderung gleich mal einbauen!

Vielleicht könnte ich ja meinen obigen Code-Abschnitt selbst in einen UDT auslagern und dann diesen in den Templates aufrufen? Wenn das funktioniert, könnte ja Dein Hinweis returnid="kalender" evtl. ausreichen. Ich werde berichten. smile

Liebe Grüße und herzlichen Dank!
jess

Offline

#15 18. Mai 2015 16:38

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Beim {module_action_link} heißt der Parameter 'page':

{module_action_link module=CGCalendar page="kalender" display=list listtemplate=kalender_kategorie category=$cat text=$cat}


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#16 19. Mai 2015 09:22

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN,

NaN schrieb:

Beim {module_action_link} heißt der Parameter 'page':

hahaha! Unglaublich! Diese kleine Änderung hat es gebracht, nun funktioniert es! Unfassbar. :-D
Herzlichen Dank, manchmal liegt die Lösung so nahe. wink

{get_cgc_categories returnid="kalender"}

Das hier allerdings geht nicht, da lande ich im Backend. %)
Habe weiteres probiert, wenn, dann muss ich bei der returnid wirklich die ID der Zielseite eingeben, bei mir wäre das

{get_cgc_categories returnid="69"}

Da ich aber die Kategorie-Komplett-Liste nur auf der Kalenderseite selbst anzeigen lasse, brauche ich den Zusatz nicht, es funktioniert dort auch ohne.


Perfekt! \o/
Tausend Dank!
jess smile

Offline

#17 19. Mai 2015 10:50

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Das hier allerdings geht nicht, da lande ich im Backend

Ah, stimmt, da muss die ID rein, nicht das Alias.
Da müsste man vorher die Seiten-ID ermitteln falls mit dem Alias gearbeitet werden soll.
Ich hatte gehofft, CMSms macht das automatisch neutral

Für den Fall der Fälle, du musst nicht die Links des UDTs verwenden. Du kannst den UDT auch so abändern, dass er lediglich die Kategorien dem verwendeten Template zuweist und nichts weiter ausgibt. Dazu musst Du nur die letzte Zeile im UDT entfernen ( "echo $CGC->ProcessTemplate('category_list.tpl');" ). Das Template "/module_custom/CGCalendar/templates/category_list.tpl" wird dann nicht benötigt.

Und im Template gehst Du die Liste einfach durch und erstellst den Link mit dem {module_action_link} (so wie im Detail-Template):

{get_cgc_categories}
{foreach from=$cgc_categories item="cat" name="komma"}
	<span class="icon-kategorie">
		{module_action_link module=CGCalendar ... category=$cat.category_name}
		{if $smarty.foreach.komma.last == false}&nbsp;{/if} 
	</span>
{/foreach}

Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#18 19. Mai 2015 11:15

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

NaN schrieb:

Für den Fall der Fälle, du musst nicht die Links des UDTs verwenden. Du kannst den UDT auch so abändern, dass er lediglich die Kategorien dem verwendeten Template zuweist und nichts weiter ausgibt. Dazu musst Du nur die letzte Zeile im UDT entfernen ( "echo $CGC->ProcessTemplate('category_list.tpl');" ). Das Template "/module_custom/CGCalendar/templates/category_list.tpl" wird dann nicht benötigt.

Danke für den Hinweis! Mit dem {module_action_link} schau ich mir dann nochmal an.

Das Template nutze ich aber schon, für eine Komplettauswahl in einem Drop-Down-Menue. Allerdings wird das nur auf der Kalenderseite selbst genutzt – in der Sidebar hat man dann zusätzlich diese Auswahl. smile
Sowas habe ich übrigens auch für die Blogkategorien und die Newskategorien, die erscheinen in der Sidebar immer nur auf der jeweiligen Modulseite.

{if count($cgc_categories)}
	<select onchange="window.location=this.options[this.selectedIndex].value">
		<option value="-1">Kategorieauswahl</option>
		{foreach from=$cgc_categories item="cat"}
			<option value="{$cat.category_url}"> {$cat.category_name} </option>
		{/foreach}
	</select>
{/if}

Vielleicht nicht ganz elegant, aber es tut was es soll. wink

So weit, so prima! \o/


Jetzt muss ich wohl an die nächste Baustelle … roll
Werde wohl als nächstes die Variablen im CGC-UDT umbenennen. Kalender und Blog überschreiben sich nämlich gegenseitig $categories und/oder $category. (Wenn ich auf der Blogübersichts-Seite (Blog-Summary) in der Sidebar die nächsten Kalendereinträge mit Kategorienangabe habe, gibt es im Blog keine Kategorienangaben mehr.)
Da werde ich jetzt wühlen und prüfen gehen.

jess smile

Offline

#19 19. Mai 2015 11:24

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.437

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Das Template nutze ich aber schon, für eine Komplettauswahl in einem Drop-Down-Menue.

Auch nicht schlecht.
Ich sehe, Du lernst schnell big_smile

Kalender und Blog überschreiben sich nämlich gegenseitig $categories und/oder $category.

Um dem vorzubeugen hab ich im UDT bereits den eigentlich selten benutzten Namen "cgc_categories" verwendet  wink


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#20 19. Mai 2015 11:41

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

NaN schrieb:

Auch nicht schlecht.
Ich sehe, Du lernst schnell big_smile

Hihi, danke, es geht und es wird immer besser. smile
Ich mag das CMSms ja sehr, es ist in sich so wunderbar logisch aufgebaut, auch wenn die Module natürlich alle etwas unterschiedlich daherkommen und man sich da erst reinfrickeln muss.
Ist auch nicht mein erstes Projekt damit; aber das mit Abstand größe und aufwendigste bisher.
Und Smarty auch, finde die Möglichkeiten fantastisch, obwohl ich mich eigentlich dauernd durch die Anleitungen wühle. ;-) Aber ich bin eben kein echter Programmierer. cool

NaN schrieb:

Kalender und Blog überschreiben sich nämlich gegenseitig $categories und/oder $category.

Um dem vorzubeugen hab ich im UDT bereits den eigentlich selten benutzten Namen "cgc_categories" verwendet  wink

Schon klar, ja. Bin mir auch noch nicht so ganz sicher, was genau da sich da in die Quere kommt.
Meine Hoffnung ist ja, dass ich das im UDT fixen kann. Denn wenn ich im Modulquellcode ändern müsste, würde ich drauf verzichten. Das ist erstens etwas heikel und zweitens kann man dann nicht gut updaten. .)
Allerdings kommen ja beide Module vom gleichen Programmierer …

Ich werde dem schon noch auf die Schliche kommen.
Wenn es wirklich nicht geht, werde ich auf die Kategorienanzeige des Kalenders in der Sidebar verzichten, dann klappt es nämlich.


Liebe Grüße
jess smile

Offline

#21 19. Mai 2015 12:03

JessyRamon
hat von CMS/ms gehört
Ort: Berlin
Registriert: 16. März 2015
Beiträge: 19

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

Hallo NaN,

okay, ich habs gefunden, ich bin ja auch ein Depp. wink

Bei

{$cgc_categories=', '|explode:$event.category_names}
[…]
{foreach from=$cgc_categories item="cat" name="komma"}

im Sidebar-Kalender-Template (kalender_summary_aside) war es einfach falsch drin. Da stand $categories, herrjeh …
Jaaa, und diese Variable nutzt der Blog eben auch. ;-)

Fantastisch! Manchmal sieht man wirklich den Wald vor lauter Bäumen nicht …

\o/ \o/
jess big_smile

Offline

#22 19. Mai 2015 13:38

nockenfell
Moderator
Ort: Gontenschwil, Schweiz
Registriert: 09. November 2010
Beiträge: 2.934
Webseite

Re: [GELÖST] CGCalendar – alle verfügbaren Kategorien ausgeben

NaN schrieb:

Ah, stimmt, da muss die ID rein, nicht das Alias.
Da müsste man vorher die Seiten-ID ermitteln falls mit dem Alias gearbeitet werden soll.
Ich hatte gehofft, CMSms macht das automatisch neutral

Das macht CMSMS nicht wirklich. In der ToolBox nutze ich dazu jeweils folgende Funktion:

	private static final function getAlias($alias)
	{
		$gCms = cmsms();

		$manager = $gCms->GetHierarchyManager();
		$node = $manager->sureGetNodeByAlias($alias);
    	if (!isset($node)) {
			$node = $manager->sureGetNodeById($alias);
			if (isset($node))
				$alias = $node->get_tag($alias);
			else
				return false;
		}
		return $alias;
	}

[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog  /   Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox

Offline