Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 15. November 2011 18:06
- martin1660
- probiert CMS/ms aus
- Registriert: 03. Juli 2011
- Beiträge: 21
Erweiterung des Moduls ListIt2 zum direkten ansprechen einzelner items
Statt im Modul ListIt2 nur auf die Kategorie zuzugreifen, möchte ich gern ein item ansprechen.
Ändere ich den query-string in der action.default.php manuell um A.title
$query .= ' WHERE A.category_id = B.category_id AND A.active = 1 AND A.title=\'BMW\'';
wird das enstsprechende item direkt angezeigt.
Wie kann ich A.title per Variable einen Wert zuweisen?
Am schönsten wäre dies per Modulaufruf. Jedoch führt die Erweiterung der ListIt2.module.phpum
[== php ==]
function SetParameters()
{
$this->RegisterModulePlugin();
$this->RestrictUnknownParams();
// parameters that can be called in the module tag
$this->CreateParameter('action', 'default', $this->Lang('help_param_action'));
$this->CreateParameter('category', 'general', $this->Lang('help_param_category'));
$this->CreateParameter('orderby', 'item_position', $this->Lang('help_param_orderby'));
$this->CreateParameter('detailtemplate', 'default', $this->Lang('help_param_detailtemplate'));
$this->CreateParameter('summarytemplate', 'default', $this->Lang('help_param_summarytemplate'));
$this->CreateParameter('detailpage', 'alias', $this->Lang('help_param_detailpage'));
$this->CreateParameter('item', 'alias', $this->Lang('help_param_item'));
// Diese Zeile habe ich hinzugefuegt
$this->CreateParameter('itemTitle', 'default', $this->Lang('help_param_summarytemplate'));[/b]
$this->SetParameterType('category', CLEAN_STRING);
$this->SetParameterType('orderby', CLEAN_STRING);
$this->SetParameterType('detailtemplate', CLEAN_STRING);
$this->SetParameterType('summarytemplate', CLEAN_STRING);
$this->SetParameterType('detailpage', CLEAN_STRING);
$this->SetParameterType('item', CLEAN_STRING);
// Diese Zeile habe ich hinzugefuegt
$this->SetParameterType('itemTitle', CLEAN_STRING);
$this->RegisterRoute('/'.$this->prefix.'\/(?P<returnid>[0-9]+?)\/(?P<detailtemplate>[0-9]+?)\/(?P<item>.+?)$/', array('action' => 'detail'));
}
zum folgendem Fehler, wenn ich das Modul mit dem Zusatz itemTitle='Testtitel' aufrufen will:
{ListIt2 category='Chormagazin' summarytemplate='chormagazin' detailtemplate='chormagazindet' itemTitle='Testtitel' orderby='item_id|desc'}
syntax error: invalid attribute name: '='
Was habe ich nicht bedacht oder anders gefragt: gibt es noch eine weitere Möglichkeit, der SQL-Query mittels der action.default.php die richtige Variable zuzuweisen?
Beitrag geändert von martin1660 (15. November 2011 18:10)
Offline
#2 16. November 2011 08:15
- martin1660
- probiert CMS/ms aus
- Registriert: 03. Juli 2011
- Beiträge: 21
Re: Erweiterung des Moduls ListIt2 zum direkten ansprechen einzelner items
Habe herausgefunden woran es lag: hatte mit itemTitle eine scheinbar besetzte Variable genutzt. Mit der deutschen Schreibweise von itemTitle, also itemTitel funktioniert es:
[== php ==]
function SetParameters()
{
$this->RegisterModulePlugin();
$this->RestrictUnknownParams();
// parameters that can be called in the module tag
$this->CreateParameter('action', 'default', $this->Lang('help_param_action'));
$this->CreateParameter('category', 'general', $this->Lang('help_param_category'));
$this->CreateParameter('orderby', 'item_position', $this->Lang('help_param_orderby'));
$this->CreateParameter('detailtemplate', 'default', $this->Lang('help_param_detailtemplate'));
$this->CreateParameter('summarytemplate', 'default', $this->Lang('help_param_summarytemplate'));
$this->CreateParameter('detailpage', 'alias', $this->Lang('help_param_detailpage'));
$this->CreateParameter('item', 'alias', $this->Lang('help_param_item'));
$this->CreateParameter('itemTitel', 'default', $this->Lang('help_param_itemTitel'));
$this->SetParameterType('category', CLEAN_STRING);
$this->SetParameterType('orderby', CLEAN_STRING);
$this->SetParameterType('detailtemplate', CLEAN_STRING);
$this->SetParameterType('summarytemplate', CLEAN_STRING);
$this->SetParameterType('detailpage', CLEAN_STRING);
$this->SetParameterType('item', CLEAN_STRING);
$this->SetParameterType('itemTitel', CLEAN_STRING);
$this->RegisterRoute('/'.$this->prefix.'\/(?P<returnid>[0-9]+?)\/(?P<detailtemplate>[0-9]+?)\/(?P<item>.+?)$/', array('action' => 'detail'));
}
Ein kleines Problem habe ich allerdings noch. Wenn ich das Modul, nun erweitert um itemTitel aufrufe,
{ListIt2 category='Autos' summarytemplate='Template1' detailtemplate='Template2' itemTitel='Verkehrsdichte' orderby='item_id|desc'}
kommt es in der SQL-Query so an:
SELECT A.*, B.* FROM cms_module_listit2_item A, cms_module_listit2_category B WHERE A.category_id = B.category_id AND A.active = 1 AND B.category_alias = 'Autos' AND A.title = '\\'Verkehrsdichte\\' ' ORDER BY A.item_id DESC
Das Problem ist also, dass er nicht A.title='Verkehrsdichte' sondern A.title = '\\'Verkehrsdichte\\' '
draus macht.
Mittels $inputarray[] = substr(trim($params['itemTitel']),6,-8); kann ich das zwar umgehen, aber die Lösung müsste doch viel einfacher sein, oder?
Beitrag geändert von martin1660 (16. November 2011 08:17)
Offline
#3 16. November 2011 12:39
- nicmare
- Server-Pate
- Registriert: 15. Dezember 2010
- Beiträge: 1.314
- Webseite
Re: Erweiterung des Moduls ListIt2 zum direkten ansprechen einzelner items
was ist denn mit der antwort hier??
http://www.cmsmadesimple.de/forum/viewt … 975#p12975
Meine Projekte:
Dashcam-Test | Babyphone-Testberichte | Türspionkameras
Offline
Seiten: 1