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...
