Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 01. September 2011 10:16
- Klenkes
- Server-Pate
- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.437
[GELÖST] Wie Werte aus URL in Variablen speichern
Konkretes Beispiel:
Ein Ergebnis von Search liefert mir unter Anderen diese URL:
index.php?mact=speisekarte,cntnt01,default,0&cntnt01what=gerichte&cntnt01alias=muschelsuppe&cntnt01returnid=56
Nun hätte ich gerne die fettgedruckten Werte extrahiert und in Variablen gespeichert um mein Modul mit diesen Parametern(what und alias) aufrufen zu können.
Eine regex könnte so aussehen:
(what=)(\w+)(alias=)(\w+)
(jaja, arg spartanisch...)
Dann hätte ich in $2 gerichte und in $4 muschelsuppe.
Aber wie könnte ich sowas in Smarty angehen?
Offline
#2 01. September 2011 10:31
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Mach einen UDT in welchem du die URL entsprechend auseinander nimmst. Mit $smarty->assign kannst du dann die Werte einer Smarty Variable zuweisen. Dann hast du diese Werte als Smarty Variablen zur Verfügung.
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#3 01. September 2011 11:00
- piratos
- arbeitet mit CMS/ms
- Registriert: 12. August 2011
- Beiträge: 545
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Mach einen UDT in welchem du die URL entsprechend auseinander nimmst. Mit $smarty->assign kannst du dann die Werte einer Smarty Variable zuweisen. Dann hast du diese Werte als Smarty Variablen zur Verfügung.
Oh Oh - alle POST, GET und auch andere Dinge liegen bereits unter Smarty vor und müssen nicht nochmals zugewiesen werden und können nachfolgend verwendet werden.
Siehe auch http://www.smarty.net/docs/en/language. … smarty.tpl
Offline
#4 01. September 2011 11:02
- Andynium
- Moderator
- Ort: Dohna / SN / Deutschland
- Registriert: 13. September 2010
- Beiträge: 7.018
- Webseite
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Musst du gar nicht - Smarty kennt diese Werte bereits
Check mal {$smarty.get.cntnt01what} und {$smarty.get.cntnt01alias}
http://www.smarty.net/docsv2/de/languag … smarty.tpl
Edit: Upps, da war doch jemand schneller ...
Offline
#5 01. September 2011 12:01
- nockenfell
- Moderator
- Ort: Gontenschwil, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.934
- Webseite
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Musst du gar nicht - Smarty kennt diese Werte bereits
Check mal {$smarty.get.cntnt01what} und {$smarty.get.cntnt01alias}
Klar kann mit Smarty eine Get oder Post Variable direkt angesprochen werden. Nur sind diese immer cntnt01what? Wenn ja, würde ich es auch so machen, wenn nein und dieser Identifier ändern kann, bringt diese Art nichts.
PS: Das mit $smarty.get.cntnt01what} hatte ich zuerst geschrieben, dann aber aus oben stehenden Gründen verworfen.
Beitrag geändert von nockenfell (01. September 2011 12:02)
[dieser Beitrag wurde mit 100% recycled bits geschrieben]
Mein Blog / Diverse Links rund um CMS Made Simple
Module: btAdminer, ToolBox
Offline
#6 01. September 2011 13:05
- piratos
- arbeitet mit CMS/ms
- Registriert: 12. August 2011
- Beiträge: 545
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Nur sind diese immer cntnt01what? Wenn ja, würde ich es auch so machen, wenn nein und dieser Identifier ändern kann, bringt diese Art nichts.
Man muss immer wissen wie der Identifierer heißt wie will man ihn sonst einsetzen ?
Offline
#7 01. September 2011 13:15
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Die Modul ID wird zwar vom CMS, je nachdem wie das Modul gerade ausgegeben werden will, generiert, aber man weiß doch wie man das Modul aufruft. Mit "inline=false" (wenn also nur der Moduloutput ersetzt werden soll) kann diese ID auf jeder Seite anders sein.* Ansonsten, wenn die Ausgabe im Inhalt erfolgt (also im {content} Block) ist es immer cntnt01.
Das muss man für jede Anwendungsart anpassen. Eine allgemeine Lösung gibt es da meiner Meinung nach - zumindest rein mit Smarty-Mitteln - nicht. Wenn die Seite steht und sich das Layout (und somit auch die Modulreihenfolge) nicht mehr ändert, ist es ohnehin immer wieder die gleiche ID für jedes Modul. Egal wie es ausgegeben wird.
* weiß garnicht ob es diese Option beim Suchmodul überhaupt gibt
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
#8 01. September 2011 13:26
- Klenkes
- Server-Pate
- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.437
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Moment mal... kleines Mißverständnis.
Ich befinde mich in der Resulttemplate des Search-Moduls, und zu dieser Zeit weiß ich noch nichts von $smarty.get.cntnt01what.
Erst wenn ich tatsächlich auf der Page mit der URL bin kann so auf diese Parameter zugreifen.
Es geht darum in der Resulttemplate mein Modul aufzurufen und eine gekürtzte Version des Items zu zeigen. So wie man über die Newsid auch einen Newseintarg anzeigen kann. Nur brauche ich eben den alias und das what(die Kategorie für den alias)
Nebenbei:
Die Parameter sind immer gleich! what= und alias=
Ich denke grade über ein Smartyplugin als Modifier nach.
Da ich in der Template nicht unbedingt die Einzelwerte brauche, sondern den Modulaufruf.
Offline
#9 01. September 2011 13:31
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.437
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Das Resulttemplate wird doch auf der Seite angezeigt, nachdem die Suchaktion ausgeführt wurde. D.h. die Get/Post-Parameter sind dann in jedem Fall auch im Resulttemplate verfügbar.
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
#10 01. September 2011 13:53
- Klenkes
- Server-Pate
- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.437
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Das Resulttemplate wird doch auf der Seite angezeigt, nachdem die Suchaktion ausgeführt wurde. D.h. die Get/Post-Parameter sind dann in jedem Fall auch im Resulttemplate verfügbar.
Da steh ich jetzt echt auf'm Schlauch ... oder der Leitung.
Mit {$smarty.get.cntnt01what} bekomme ich in der resulttemplate keine Ausgabe. Auf der Trefferseite dann aber schon.
...muss ich mir heut abend nochmal zu Gemüte führen...
Offline
#11 01. September 2011 14:31
- piratos
- arbeitet mit CMS/ms
- Registriert: 12. August 2011
- Beiträge: 545
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Mit {$smarty.get.cntnt01what} bekomme ich in der resulttemplate keine Ausgabe. Auf der Trefferseite dann aber schon.
Die Suchergebnisse werden weder über get noch post sichtbar, das wird intern abgehandelt und an Smarty zugewiesen, deshlab kannst du auch nichts sehen.
Und im gesamten Ergebnis des normalen Modules gibt es weder what noch alias.
Offline
#12 01. September 2011 19:49
- Klenkes
- Server-Pate
- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.437
Re: [GELÖST] Wie Werte aus URL in Variablen speichern
Ich hab mir nun ein erstes Smartyplugin geschrieben, welches prima funktioniert.
Da meine vom Searchmodul zum Hit generierte $entry->url immer gleich aufgebaut ist, habe ich das erstmal eher statisch umgesetzt, werde es aber noch flexibler machen.
Das Plugin: (modifier.modulecall.php)
function smarty_modifier_modulecall($string)
{
preg_match('/(what=)(\w+).*(alias=)(\w+)/i',$string, $split_array);
$output .= "{cms_module module='speisekarte' what='" . $split_array[2] . "' alias='" . $split_array[4] . "' template=search}";
return $output;
}
Wäre ich in PHP doch nicht immer krank gewesen...
Und rufe es in der resulttemplate so auf:
<ul>
{foreach from=$results item=entry}
{if $entry->module eq "speisekarte"}
<li>{eval var=$entry->url|modulecall}</li>
{else}
<li>{$entry->title} - <a href="{$entry->url}">{$entry->urltxt}</a> ({$entry->weight}%)</li>
{/if}
{/foreach}
</ul>
Müsste doch resourcenschonender sein als ein UDT? Wird nur geladen, wenn benötigt?
Offline
Seiten: 1