Seite 1 von 1

Einfache Bannerverwaltung

Verfasst: Mo 31. Jul 2006, 15:22
von econsul
Hallo zusammen

Ich arbeite mit Contenido 4.6.8 und setze eine einfache Bannerverwaltung ein. Die läuft soweit gut und ist sehr praktisch, weil im Contenido Backoffice verwaltbar... Unschön ist nur, dass es bei mehreren Sprachen in der aktuellen Sprache auch die Bilder der Fremdsprachen angezeigt werden, wenn die Banner-Artikel in den Fremdsprachen online und mit Bild versehen sind...

Was muss ich am Code anpassen, dass nur die Bilder der aktuellen Sprache angezeigt werden?

Für einen Tipp wäre ich dankbar.

Hier ist der Code:
Input:

Code: Alles auswählen

$selected = "CMS_VALUE[0]"; 

echo '<table cellspacing="0" cellpadding="10" border="0">'; 
echo '  <tr valign="top">'; 
echo '    <td class="text_medium">Kategorie wählen:</td>'; 
echo '    <td><select name="CMS_VAR[0]">'; 

if($selected!="0" && $selected!=""){ 
    echo"<option value=\"0\">--- kein ---</option>"; 
} else { 
    echo"<option selected=\"selected\" value=\"0\">--- kein ---</option>"; 
} 

$sql = " 
    SELECT a.idcat, a.level, c.name 
    FROM {$cfg['tab']['cat_tree']} AS a, 
         {$cfg['tab']['cat']} AS b, 
         {$cfg['tab']['cat_lang']} AS c 
    WHERE 
        a.idcat = b.idcat 
        AND b.idcat = c.idcat 
        AND c.idlang='$lang' 
        AND b.idclient='$client' 
        AND c.visible = 1 
    ORDER BY a.idtree 
    "; 

$db->query($sql); 

while ($db->next_record()) { 
    $spaces = "|"; 
    $levels = $db->f("level"); 
    for ($i = 0; $i < $levels; $i ++) { 
        $spaces = $spaces . "--"; 
    } 
    $spaces .= ">"; 

    if ($selected == $db->f("idcat")) { 
        echo "<option selected=\"selected\" value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>"; 
    } else { 
        echo "<option value=\"". $db->f("idcat") ."\">". $spaces . $db->f("name") ."</option>"; 
    } 
} 

echo "</select></td></tr>"; 
echo "</table>";
Output:

Code: Alles auswählen

<? 
/*********************************************** 
* CONTENIDO MODUL - OUTPUT 
* 
* Modulname   :     tlcc.bannermodul 
* Author      :     Andre Domaschke 
* Copyright   :     Andre Domaschke 
* Created     :     13.07.2004 
* Modified    :     14.07.2004 | 25.07.2004 
*                   Sortierung, aktive Artikel 
************************************************/ 

// Initialisieren 
$db1 = new DB_Contenido; 
$db2 = new DB_Contenido; 

// Umsetzen der Konfiguration auf eine Variable 
$categorie = "CMS_VALUE[0]"; 

// Anfrage formulieren 
// Datenfeldmenge pro Artikel ermitteln 
$sql1="SELECT     d.idartlang, count(*) AS menge 
       FROM       con_cat AS a, 
                  con_cat_lang AS b, 
                  con_cat_art AS c, 
                  con_content AS d, 
                  con_art_lang AS e 
       LEFT  JOIN con_type AS f ON d.idtype = f.idtype 
       LEFT  JOIN con_upl AS g ON d.value = g.idupl 
       WHERE      a.idcat = b.idcat 
       AND        a.idcat = c.idcat 
       AND        c.idart = e.idart 
       AND        d.idartlang = e.idartlang 
       AND        b.visible = 1 
       AND        e.online = 1 
       AND        a.idcat = '$categorie' 
       GROUP BY   d.idartlang 
       ORDER BY   e.artsort ASC 
      "; 

// Absetzen der Anfrage auf die Datenbank 
$db1->query($sql1); 

// Array durchlaufen 
while ($db1->next_record()) 
  { 
    $idartlang = $db1->f('idartlang'); 
    $menge = $db1->f('menge'); 
    
    // Anfrage formulieren 
    $sql2="SELECT     * 
           FROM       con_content AS a, 
                      con_art_lang AS b 
           LEFT  JOIN con_type AS c ON a.idtype = c.idtype 
           LEFT  JOIN con_upl AS d ON a.value = d.idupl 
           WHERE      a.idartlang = b.idartlang 
           AND        b.online = 1 
           AND        a.idartlang = '$idartlang' 
          "; 

     // Absetzen der Anfrage auf die Datenbank 
     $db2->query($sql2); 

     // Array durchlaufen 
     while ($db2->next_record()) 
       { 
         // ****************************************************************************************** 
         // aus der Bildnummer wird die Bild URL gebildet 
         // ****************************************************************************************** 
         $idtype = $db2->f('idtype'); 
         if ($idtype == 4) 
           { 
             // $link erstellen 
             $bildurl = $db2->f('dirname').$db2->f('filename'); 
             $arraywert = $bildurl; 
           } 
         // ****************************************************************************************** 
         // die weiterführenden Links werden gebildet 
         // ****************************************************************************************** 
         if ($idtype == 6) 
           { 
             // $link erstellen 
             $link = $db2->f('value'); 

             if ($link > 1) 
               { 
                 //$link muss eine Zahl größer 1 sein, folglich interne referenz 
                 $linkurl = $sess->url("front_content.php?client=$client&lang=$lang&idcatart=".$db2->f('value')); 
               } 
             else 
               { 
                 //$link ist keine Zahl 
                 $linkurl = $db2->f('value'); 
               } 
             $arraywert = $linkurl; 
           } 
         // ****************************************************************************************** 
         // targetinformation werden gebildet 
         // ****************************************************************************************** 
         if ($idtype == 7) 
           { 
             // $target erstellen 
             $target = $db2->f('value'); 
             $arraywert = $target; 
           } 
         // ****************************************************************************************** 
         // Neues Array generieren, damit die Elemente gezielt angesprochen werden können 
         // ****************************************************************************************** 
         $bannerarray[$db2->f('idtype')][$db2->f('typeid')] = $arraywert; 
       } 
     // ausgabe an den browser 
     echo '<a href="'.urldecode($bannerarray[6][1]).'" target="'.urldecode($bannerarray[7][1]).'"><img src="upload/'. $bannerarray[4][1].'" border="0" hspace="10"></a>'; 
   } 
?>

Verfasst: Fr 4. Aug 2006, 13:43
von emergence
bei der ersten abfrage musst du den parameter $lang (enthält die aktuelle sprache) berücksichtigen...

vielleicht reicht ja die ergänzung

Code: Alles auswählen

       AND        e.idlang = '$lang'
ist nicht getestet...

Verfasst: Mi 9. Aug 2006, 21:03
von econsul
Tausend Dank.
Scheint zu funktionieren.

Verfasst: Sa 2. Sep 2006, 20:32
von Freddy
Hallo econsul, das Modul hört sich interessant an. Kannst Du vielleicht ein paar Takte zu schreiben wie man es benutzt?