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

#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

Offline