Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
- Links zu: Aktiven | Unbeantworteten
- Übersicht
- »
- »
1
#1 01. September 2011 10:16
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
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: Lenzburg, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.807
- Webseite
Re:
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, Revisions
Offline
#3 01. September 2011 11:00
- piratos
- CMSMS-Profi

- Registriert: 12. August 2011
- Beiträge: 545
Re:
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
- cyberman
- Moderator

- Ort: Dohna / Sachsen
- Registriert: 13. September 2010
- Beiträge: 6.741
- Webseite
Re:
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 ...
1. Wie bekomme ich hier schnelle Hilfe?
2. HowTo: Fehlersuche bei CMSMS
---
„First they ignore you, then they laugh at you, then they fight you, then you win.“ Mahatma Ghandi
Offline
#5 01. September 2011 12:01
- nockenfell
- Moderator

- Ort: Lenzburg, Schweiz
- Registriert: 09. November 2010
- Beiträge: 2.807
- Webseite
Re:
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, Revisions
Offline
#6 01. September 2011 13:05
- piratos
- CMSMS-Profi

- Registriert: 12. August 2011
- Beiträge: 545
Re:
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.058
Re:
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, FEUMailer
Plugins: AjaxTools, XajaxTools
Sicherheit: Beispiel .htaccess-Datei
Offline
#8 01. September 2011 13:26
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
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.058
Re:
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, FEUMailer
Plugins: AjaxTools, XajaxTools
Sicherheit: Beispiel .htaccess-Datei
Offline
#10 01. September 2011 13:53
- Klenkes
- Server-Pate

- Ort: 89428 Syrgenstein
- Registriert: 17. Dezember 2010
- Beiträge: 1.384
Re:
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
- CMSMS-Profi

- Registriert: 12. August 2011
- Beiträge: 545
Re:
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.384
Re:
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
1
- Übersicht
- »
- »