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

#1 06. Juni 2011 14:37

micfritschi
Gast

[GELÖST] Wie wird eine URL zusammengesetzt?

Hallo,

hoffe, die Frage passt hier rein. Ich bin an einem Template und brauche dazu die URL als Link. Das Meiste ist mir klar und funktioniert:

<a href="index.php?mact=Album,mff022,default,1&mff022albumid={$album->id}&mff022pictureid={$picture->id}&mff022returnid={$content_id}&page={$page}">

Den Teil mff022 begreiffe ich nicht und musste ihn hardcoden. Das funktioniert aber nur auf einer Installation, denn in der andern Installation müsste mec8c1 stehen. Woher kommt der Teil und kann ich den dynamisch einfügen?

Danke und Grüsse,
michael

#2 06. Juni 2011 15:13

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

Re: [GELÖST] Wie wird eine URL zusammengesetzt?

Das ist die actionID des Moduls - sie wird jedoch nicht von allen Modulen als Smarty-Variable bereit gestellt. Müsstest also mal via {get_template_vars} und {$variable|print_r} schauen ...

Offline

#3 06. Juni 2011 15:23

micfritschi
Gast

Re: [GELÖST] Wie wird eine URL zusammengesetzt?

Danke - da kommt nur der 'Albumbacklink' raus. Und dort steht cntnt01.
Was bedeutet diese Token?
Interessanterweise funktioniert es mit dem cntnt01 und mff022, jedoch mit dem eines andern Servers nicht.

#4 06. Juni 2011 16:40

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

Re: [GELÖST] Wie wird eine URL zusammengesetzt?

Ich zitiere  mich hier mal selbst big_smile

Jede Modulinstanz erhält vom CMS beim Ausführen eine ID.
Diese ID wird als Präfix für das name-Attribut von Inputfeldern oder für Parameternamen in Links bzw. Smarty-Tags verwendet. Damit ist sichergestellt, dass, sollten mehrere Modulinstanzen verwendet werden (z.B. das News Modul mehrmals im Template, aber mit unterschiedlichen Parametern), die Parameter der unterschiedlichen Instanzen sich nicht gegenseitig in die Quere kommen.

Bsp.:

{news detailtemplate="foo"}
{news detailtemplate="bar"}

Ohne diese ID würde immer der jeweils letzte Parameter gelten. D.h. es würde für beide Modulinstanzen dasselbe Detail-Template angezeigt werden.

Mit ID wird beim ersten Aufruf aus "detailtemplate" z.B. "mff022detailtemplate" und aus dem zweiten "mec8c1detailtemplate". Somit kann das CMS die Parameter jeder einzelnen Instanz zuordnen.

Module können ihre Ausgabe auf zwei Wege vornehmen:

1. Sie ersetzen den Inhalt des Standard-Blocks mit ihrer eigenen Ausgabe. D.h. wenn Du ein Modul in Block B hast und irgendwas machst, dann wird das Ergebnis im Standard-Block ausgegeben.
(Bsp.: Rechts eine kleine Ecke mit News-Summaries. Bei einem Klick auf "Mehr" will man die Details nicht auch in der kleine rechten Ecke, sondern schön groß im Inhaltsbereich haben, während rechts in der Ecke immer noch die Summaries stehen sollen.)

2. Sie können ihre Ausgabe auch "inline" vornehmen. D.h. sie ersetzen sich selbst mit ihrem eigenen Output.
(Bsp.: CGCalendar rechts oben. Beim Blättern durch die Monate will man nicht, dass der Kalender doppelt erscheint. Einmal riesig groß im Inhalt und einmal unverändert rechts oben.)

Wenn die Ausgabe bei einem Klick auf einen Link inline erfolgen soll, muss das CMS wissen welche Modulinstanz auf der Seite jetzt diese Ausgabe enthalten soll. Und damit es das weiß, wird die ModulID im Link mitgegeben.
Soll die Ausgabe im Inhalt erfolgen, wird anstelle einer generierten ID der String cntnt01 verwendet (was in etwa so viel bedeutet wie content block 1, womit wiederum der standard Inhaltsblock gemeint ist - ohne den läuft nichts.)

Um zu steuern wie die Ausgabe erfolgen soll, haben einige Module einen Parameter namens inline=true/false den man beim Modul-Aufruf mit übergeben kann.
Fiktives Bsp:

Einige Module haben dazu im Backend sogar eine eigene Option (wie z.B. FormBuilder).

Also ein Modul-Link ist folgendermaßen aufgebaut:

index.php?mact=[Modulename],[ModuleID],[auszufüherende Aktion],[1 = inline / 0 = Inhalt ersetzen]&[ModuleID]parameterName= ...

("mact" bedeutet "module action", es soll also eine Aktion eines bestimmten Moduls ausgeführt werden)

Diese Modul-ID wird generiert und kann nicht im Template hardcoded werden.
Einige Module weisen ihre ID einer Templatevariablen zu. Andere nicht. Dann wird es schwierig.
Wenn Du im Album Modul in der Datei action.default.php vor ProcessTemplate noch diese Zeile einfügst,

$smarty->assign('module_id',$id);

Dann hast Du im Template mit {$module_id} die ModulID und kannst loslegen.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12.2 unter PHP 7:
cmsms-1.12.2-php7.2-diff.tar.gz (nur die geänderten Dateien)
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 06. Juni 2011 17:14

micfritschi
Gast

Re: [GELÖST] Wie wird eine URL zusammengesetzt?

Danke, NaN, für die Ausführung. Es ist immer gut zu wissen, was man macht und nicht einfach nur zu machen. Hat tip-top funktioniert!