Nur Startartikel in Article List Advanced ?

Gesperrt
rethus
Beiträge: 1851
Registriert: Di 28. Mär 2006, 11:55
Wohnort: Mönchengladbach
Kontaktdaten:

Nur Startartikel in Article List Advanced ?

Beitrag von rethus »

Ich möchte gerne im Modul Article List Advanced die Checkbox Startartikel anzeigen gegen zwei Radio-Buttons austauschen; Startartikel anzeigen und NUR Startartikel anzeigen.

Irgendwie blick ich aber durch den DB-Aufbau noch nicht so ganz durch.

Der erzeugte SQL-Befehl bei aktiviertem Startartikel-Checkbox ist:

Code: Alles auswählen

SELECT tblData.value AS headline, ARTLANG.pagetitle AS pagetitle, ARTLANG.summary AS summary, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, ARTLANG.created AS created, ARTLANG.published AS published, CATLANG.name AS category, ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart
FROM con1_cat_art AS CATART, con1_art_lang AS ARTLANG, con1_cat_lang AS CATLANG, con1_content AS tblData
WHERE CATART.idcat
IN (
'80', '84', '41', '80'
)
AND ARTLANG.idlang = '1'
AND tblData.idartlang = ARTLANG.idartlang
AND CATLANG.idlang = ARTLANG.idlang
AND CATLANG.idcat = CATART.idcat
AND ARTLANG.idart = CATART.idart
AND ARTLANG.online = '1'
AND tblData.idtype = '1'
AND tblData.typeid = '1'
ORDER BY RAND( ) ASC
LIMIT 0 , 5
Bei deaktivierten Startartikeln ist es:

Code: Alles auswählen

SELECT tblData.value AS headline, ARTLANG.pagetitle AS pagetitle, ARTLANG.summary AS summary, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, ARTLANG.created AS created, ARTLANG.published AS published, CATLANG.name AS category, ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart
FROM con1_cat_art AS CATART, con1_art_lang AS ARTLANG, con1_cat_lang AS CATLANG, con1_content AS tblData
WHERE CATART.idcat
IN (
'80', '84', '41', '80'
)
AND ARTLANG.idlang = '1'
AND tblData.idartlang = ARTLANG.idartlang
AND CATLANG.idlang = ARTLANG.idlang
AND CATLANG.idcat = CATART.idcat
AND ARTLANG.idart = CATART.idart
AND tblData.idartlang != CATLANG.startidartlang
AND ARTLANG.online = '1'
AND tblData.idtype = '1'
AND tblData.typeid = '1'
ORDER BY RAND( ) ASC
LIMIT 0 , 5
Der einzige Unterschied in dem SQL-Statement ist in der 6. Zeile von unten (2. Codelisting) wo das Statement AND tblData.idartlang != CATLANG.startidartlang hinzukommt.


Der Quelltext im Modul, der die SQL-Abfrage gestaltet ist dieser:

Code: Alles auswählen


   $sql  = "SELECT tblData.value AS headline, ARTLANG.pagetitle AS pagetitle, ARTLANG.summary AS summary, ARTLANG.idart AS id, ARTLANG.lastmodified AS lastmodified, " ;
   $sql .= "ARTLANG.created AS created, ARTLANG.published AS published, CATLANG.name AS category, ";
   $sql .= "ARTLANG.idartlang AS idartlang, CATART.idcat AS idcat, CATART.idcatart AS idcatart FROM ";
   $sql .= $cfg["tab"]["cat_art"]." AS CATART, ";
   $sql .= $cfg["tab"]["art_lang"]." AS ARTLANG, ";
   $sql .= $cfg["tab"]["cat_lang"]." AS CATLANG, ";
   $sql .= $cfg["tab"]["content"]." AS tblData ";

   $sql .= "WHERE CATART.idcat IN (".$sSelCats.") AND ARTLANG.idlang = '".$lang."' ";
   $sql .= "AND tblData.idartlang = ARTLANG.idartlang ";
   $sql .= "AND CATLANG.idlang = ARTLANG.idlang ";
   $sql .= "AND CATLANG.idcat = CATART.idcat ";
   $sql .= "AND ARTLANG.idart = CATART.idart ";

   if ($aSettings["ShowStart"] != "enabled") {
      if ($cfg["is_start_compatible"] == true) {
         $sql .= "AND CATART.is_start = '0' ";
      } else {
         $sql .= "AND tblData.idartlang != CATLANG.startidartlang ";
      }
   }

   $sql .= "AND ARTLANG.online = '1' ";
   $sql .= "AND ".$aSettings["HeadlineIdentifier"]." ";

   // Sort by
   $sql .= "ORDER BY ";
   $sql .= $aSettings["SortBy"]." ".$aSettings["SortDir"]." ";

   // LIMIT
   if ($aSettings["ArticleCount"] > 0) {
      $sql .= "LIMIT 0, ".$aSettings["ArticleCount"];
   }
Wie muss das SQL-Statement aussehen, damit NUR Artikel angezeigt werden, die Startartikel sind?
emergence
Beiträge: 10653
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

ich würd sagen den teil hier

Code: Alles auswählen

   if ($aSettings["ShowStart"] != "enabled") { 
      if ($cfg["is_start_compatible"] == true) { 
         $sql .= "AND CATART.is_start = '0' "; 
      } else { 
         $sql .= "AND tblData.idartlang != CATLANG.startidartlang "; 
      } 
   } 
durch

Code: Alles auswählen

   if ($aSettings["ShowStart"] != "enabled") { 
      if ($cfg["is_start_compatible"] == true) { 
         $sql .= "AND CATART.is_start = '1' "; 
      } else { 
         $sql .= "AND tblData.idartlang == CATLANG.startidartlang "; 
      } 
   } 
ersetzen, sollte den job erledigen... (nicht getestet...)
*** make your own tools (wishlist :: thx)
jestmo
Beiträge: 10
Registriert: Do 15. Mär 2007, 11:28
Kontaktdaten:

Beitrag von jestmo »

Hallo, ich habe im Moment das gleiche Problem.

Ich nutze die Version: Article List Advanced V4.6.x V1.4

Den Vorschlag von emergence bewirkt leider nichts. kann mir jemand bei dem Problem helfen?

//edit
ERLEDIGT
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Hast Du auch bei der Konfiguration des Artikels/der Kategorie die Checkbox "Startartikel" aktiviert?

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
jestmo
Beiträge: 10
Registriert: Do 15. Mär 2007, 11:28
Kontaktdaten:

Beitrag von jestmo »

ja, hat sich aber schon erledigt. musste nur eine zeile code

Code: Alles auswählen

$sql .= "AND CATLANG.startidartlang = ARTLANG.idartlang "; 
vor dem hier einfügen:

Code: Alles auswählen

if ($aSettings["ShowStart"] != "enabled") {
      if ($cfg["is_start_compatible"] == true) {
         $sql .= "AND CATART.is_start = '0' ";
      } else {
         $sql .= "AND tblData.idartlang != CATLANG.startidartlang ";
      }
   }
schon habe ich nur startartikel.
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB »

Da tblData.idartlang = ARTLANG.idartlang entspricht das emergence' Lösung (nur hartcodiert und mit dem = weniger, welches zuviel war).

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net
Gesperrt