Seite 1 von 1

abfrage ob weiterleitung aktiv (extendedSitemap) [gelöst]

Verfasst: Fr 5. Sep 2008, 15:55
von stefkey
Hallo,

wie kann ich abfragen ob die weiterleitung eines Artikels aktiviert ist.

Ich nutze das Modul SitemapExtended
(http://forum.contenido.org/viewtopic.php?t=16493)
und möchte alle Artikel mit aktivierter weiterleitung draußen haben.

Wer kann mir helfen das umzusetzen und hat ein paar Tips.

Besten Dank!
stefkey

Re: abfrage ob weiterleitung aktiv

Verfasst: Fr 5. Sep 2008, 16:17
von xmurrix
wie kann ich abfragen ob die weiterleitung eines Artikels aktiviert ist.
Das kannst du beim Erstellen des Select-Statements z. B. mit "con_art_lang.redirect = 1" abfragen. Wenn beim Artikel ein Redirect definiert wurde, hat das Feld "redirect" den Wert 1, ansonsten 0.

Vermute, dass es ausreichen sollte, wenn du in der Modulausgabe einen Teil der Zusammenstellung des Statements von

Code: Alles auswählen

...
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["art_lang"].' AS ART_LANG '; 
       $lo_sql.= '      ON (CAT_ART.idart = ART_LANG.idart)  '; 
       $lo_sql.= '      AND (ART_LANG.online = 1) '; 
       // startartikel einbeziehen? 
       if( $lo_set["Art_IncStart"] != 'true') 
       {   $lo_sql.= '      AND (CAT_LANG.startidartlang != ART_LANG.idartlang) ';   } 
       $lo_sql.= 'LEFT OUTER JOIN con_art_lang AS ART_LANG_START '; 
       $lo_sql.= '      ON (CAT_ART.idart = ART_LANG_START.idart) '; 
       $lo_sql.= '      AND (ART_LANG_START.online = 1) '; 
       $lo_sql.= '      AND (CAT_LANG.startidartlang = ART_LANG_START.idartlang) '; 
       $lo_sql.= 'WHERE CAT_LANG.idlang = \''.$lang.'\' '; 
...
auf

Code: Alles auswählen

...
       $lo_sql.= 'LEFT OUTER JOIN '.$cfg["tab"]["art_lang"].' AS ART_LANG '; 
       $lo_sql.= '      ON (CAT_ART.idart = ART_LANG.idart)  '; 
       $lo_sql.= '      AND (ART_LANG.online = 1) '; 
       $lo_sql.= '      AND (ART_LANG.redirect = 0) '; 
       // startartikel einbeziehen? 
       if( $lo_set["Art_IncStart"] != 'true') 
       {   $lo_sql.= '      AND (CAT_LANG.startidartlang != ART_LANG.idartlang) ';   } 
       $lo_sql.= 'LEFT OUTER JOIN con_art_lang AS ART_LANG_START '; 
       $lo_sql.= '      ON (CAT_ART.idart = ART_LANG_START.idart) '; 
       $lo_sql.= '      AND (ART_LANG_START.online = 1) '; 
       $lo_sql.= '      AND (ART_LANG_START.redirect = 0) '; 
       $lo_sql.= '      AND (CAT_LANG.startidartlang = ART_LANG_START.idartlang) '; 
       $lo_sql.= 'WHERE CAT_LANG.idlang = \''.$lang.'\' '; 
...
änderst.

Das Beispiel ist nicht getestet...

Gruß
xmurrix

Verfasst: Fr 5. Sep 2008, 16:59
von stefkey
Hallo xmurrix,

es funktioniert nur wenn der Artikel ein Startartikel ist und eine Weiterleitung hat.
Das ganze soll aber nur wirken wenn es kein Startartikel ist und die Weiterleitung gesetzt ist.

Ich hab schon rum probiert, komme aber wegen Syntax Problemen nicht weiter.


Vielleicht hast du den Plan.

Grüße aus Heidelberg,
stefkey

Verfasst: Fr 5. Sep 2008, 17:24
von xmurrix
Habe mir das gerade etwas näher angesehen.

Die im Moduloutput zuzammengestellte SQL-Anweisung ist nur zum Auslesen der Kategorien verwendet, weiter unten werden pro Kategorie die Artikel geholt. D. h. die Änderung daran kannst zurücksetzen.

Ersetze im Moduloutput, ab der Zeile 299

Code: Alles auswählen

                     // hole naechsten artikel 
                     $lo_article = $lo_artlist->nextArticle(); 

                     //artikelhead holen 
                     $lo_arthead = strip_tags(trim( $lo_article->getContent('CMS_HTMLHEAD', 1) )); 
gegen

Code: Alles auswählen

                     // hole naechsten artikel 
                     $lo_article = $lo_artlist->nextArticle(); 

                     if ($lo_article->getField('redirect') == '1' {
                         // artikel hat eine weiterleitung, gehe zum naechsten artikel
                         continue;
                     }
                     
                     //artikelhead holen 
                     $lo_arthead = strip_tags(trim( $lo_article->getContent('CMS_HTMLHEAD', 1) )); 
Eventuell sollte das dir weiterhelfen.

Gruß
xmurrix

Verfasst: Fr 5. Sep 2008, 18:12
von stefkey
Nicht zu fassen!!!

Es geht.

Es fehlte noch ne Klammer am Ende des if - Arguments...

hier nochmal mit Klammer:

// hole naechsten artikel
$lo_article = $lo_artlist->nextArticle();

if ($lo_article->getField('redirect') == '1') {
// artikel hat eine weiterleitung, gehe zum naechsten artikel
continue;
}

//artikelhead holen
$lo_arthead = strip_tags(trim( $lo_article->getContent('CMS_HTMLHEAD', 1) ));


Tausend Dank!
stefkey

PS: Programmierst du auch für Geld?
Hätte vielleicht mal bezahlte Kleinigkeiten... :-)