Seite 1 von 1

Modul in einem Template mehrmals einbinden - woran liegt es

Verfasst: Mo 11. Jul 2005, 15:54
von malsdgtac
Hallo, ich habe das Sitemap Modul (weiß leider nicht mehr von wem) umgebaut, um damit Suchboxen anzeigen zu lassen. Hier der Code:

Code: Alles auswählen

// selected category
$selected = "CMS_VALUE[0]";

echo  "<table cellspacing=\"0\" cellpadding=\"10\" border=\"0\">\n".
        "  <tr valign=\"top\">\n".
        "    <td>Kategorie wählen:</td>\n".
        "    <td>\n".
        "      <select name=\"CMS_VAR[0]\">\n".
        "        <option value='0'>---Alle---</option>\n";

// fetch all categorys
$query = "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";

// execute query
$db->query($query);

// loop result and build the options
while ($db->next_record()) 
{
  // indent spacer
  $spaces = "";

  // how many levels
  $levels = $db->f("level");

  for ($i = 0; $i > $levels; $i ++) 
  {
     // add 2 spaces for every level
     $spaces = $spaces . "  ";
  } // end for

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

} // end while

echo  "      </select>\n".
         "     </td>\n".
         "   </tr>\n".
         "   <tr>\n".
         "     <td>Anzahl Ebene:</td>\n".
         "     <td>\n".
         "       <input type=\"text\" name=\"CMS_VAR[1]\" value=\"CMS_VALUE[1]\">\n".
         "     </td>\n".
         "   </tr>\n".
         " </table>\n";

Code: Alles auswählen

<?php 
$amountLevel = "CMS_VALUE[1]";
  $newcat = "CMS_VALUE[0]";
  $color = array("#aaaaff", "#bbbbff","#ccccff","#ddddff");

  function sitemap($newcat=0)
  {
    global $lang, $client, $amountLevel, $color, $startLevel, $cfg;
    $db  = new DB_Contenido;
    $sql  = "SELECT * 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 ".
              "B.parentid =$newcat AND level <= $amountLevel AND C.visible=1 ".
              "ORDER by A.idtree";
    $db->query($sql);
    $result = "<ul>";
    while ($db->next_record())
    {  
      $lvl = $db->f("level");
      if ($lvl==1)
      {
        $result.="";
      }
      $colorID=$lvl-$startLevel;
      if ($colorID > count($color)-1)
      {
        $colorID=count($color)-1;
      }
//$tpl->set('d', 'HREF', $sess->url('front_content.php?idcat='.$data['idcat'])); 
//$tpl->set('d', 'HREF', $sess->url($client.'_'.$lang.'_'.$data['idcat'].'_.php')); 
//      $result	.=  "<option><value=".$client."_".$lang."_".$db->f("idcat")."_.aktiv title='".$db->f("name")."'>".$db->f("name")."</option>".sitemap($db->f("idcat"));
      $result	.=  "<li><a href=".$client."_".$lang."_".$db->f("idcat")."_.aktiv title='".$db->f("name")."'>".$db->f("name")."</a></li>".sitemap($db->f("idcat"));

    }
    $result.= "</ul>";
    return($result);
  }
  
  $sql = "SELECT level FROM $cfgTab_cat_tree WHERE idcat=$newcat";
  $db->query($sql);
  $db->next_record();
  $startLevel = $db->f("level");
  $amountLevel +=  $startLevel;
  if ($newcat==0){$amountLevel--;}
  echo sitemap($newcat);
?>
Jetzt möchte ich diese Suchbox mehrmals einbinden (nach verschiedenen Kriterien) - woran liegt es, dass das nicht funktioniert. Hilft es, wenn ich das Modul kopieren und dann einbinde? Wo kann ich ansetzen um dies zu ermöglichen?

Verfasst: Mo 11. Jul 2005, 16:03
von Halchteranerin
du musst mindestens die Variablennamen und die Funktionennamen umbenennen, wuerde ich sagen, analog dazu, wenn man die Hauptnavi mehrmals auf der Seite einsetzen will.