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

Gesperrt
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

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

Beitrag 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
Zuletzt geändert von stefkey am Fr 5. Sep 2008, 18:17, insgesamt 1-mal geändert.
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: abfrage ob weiterleitung aktiv

Beitrag 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
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag 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
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Beitrag 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
stefkey
Beiträge: 556
Registriert: Mi 19. Okt 2005, 16:10
Wohnort: Heidelberg
Kontaktdaten:

Beitrag 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... :-)
Gesperrt