4images Forum & Community

4images Issues / Ausgaben => Discussion & Troubleshooting => Topic started by: Sunny C. on September 30, 2009, 10:19:07 PM

Title: categorie_bit / mit ID hochzählen
Post by: Sunny C. on September 30, 2009, 10:19:07 PM
Hallo zusammen,

folgendes habe ich in meiner categorie_bit.html stehen:
Code: [Select]
<div class="block block-user" id="block-user-1">
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3>{cat_name}{if cat_is_new}<sup>{lang_new}</sup>{endif cat_is_new}</h3>
            </div>
            <div class="content">
                {if sub_cats}<ul class="menu">
                {sub_cats}
</ul>{endif sub_cats}
</div>
        </div>
    </div>    
</div>

So werden bei mir die Kategorien dargestellt (Siehe Ahang)

Aber es gibt da ein Problem und zwar dieser Code:
Code: [Select]
<div class="block block-user" id="block-user-1">
Dieser enthält leider id="

So, da meine Kategorien alle samt einzelne Menüs sind, und mit der gleichen ID erstellt werden, kann ich die Valität der seite nicht stand halten, weil die gleiche ID mehrfach auftaucht.

Meine Frage:

Kann jemand ein Code zur Verfügung stellen, der die ID automatisch bei jeder Kategorie mit hochzählt.
Example:
id="block-user-2"
Code: [Select]
<div class="block block-user" id="block-user-2">
.......
id="block-user-2"
Code: [Select]
<div class="block block-user" id="block-user-3">
........

Die functions.php sieht so aus:
function get_subcategories($parent_id) {
  global $cat_parent_cache, $cat_cache, $site_sess, $config;

  if (!isset($cat_parent_cache[$parent_id]) || $config['num_subcats'] < 1) {
    return "";
  }

  $visible_cat_cache = array();
  foreach ($cat_parent_cache[$parent_id] as $key => $val) {
    if (check_permission("auth_viewcat", $val)) {
      $visible_cat_cache[$key] = $val;
    }
  }

  $num_subs = sizeof($visible_cat_cache);
  $sub_cat_list = "";
  $i = 1;
  foreach ($visible_cat_cache as $subcat_id) {
    if ($i <= $num_subs && $i <= $config['num_subcats']) {
      $sub_url = $site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$subcat_id);
      $sub_cat_list .= "<li class=\"leaf first\"><a href=\"/".$sub_url."\" title=\"".format_text($cat_cache[$subcat_id]['cat_name'], 2)."\" class=\"active\">".format_text($cat_cache[$subcat_id]['cat_name'], 2)."</a></li>";
      if ($i != $config['num_subcats'] && $i < $config['num_subcats'] && $i < $num_subs) {
        $sub_cat_list .= "";
      }
      if ($i == $config['num_subcats'] && $i < $num_subs) {
        $sub_cat_list .= " ...\n";
      }
    }
    $i++;
  }
  return $sub_cat_list;
}

function get_categories($cat_id = 0) {
  global $site_template, $site_db, $site_sess, $config, $lang;
  global $cat_cache, $cat_parent_cache, $new_image_cache, $subcat_ids;

  $cattable_width = ceil((intval($config['cat_table_width'])) / $config['cat_cells']);
  if ((substr($config['cat_table_width'],-1)) == "%") {
    $cattable_width .= "%";
  }

  if (!isset($cat_parent_cache[$cat_id])) {
    return "";
  }

  $visible_cat_cache = array();
  foreach ($cat_parent_cache[$cat_id] as $key => $val) {
    if (check_permission("auth_viewcat", $val)) {
      $visible_cat_cache[$key] = $val;
    }
  }

  if (empty($visible_cat_cache)) {
    return "";
  }

  $total = sizeof($visible_cat_cache);
  $table_columns = (intval($config['cat_cells'])) ? intval($config['cat_cells']) : 2;
  if ($total <= $table_columns) {
    $table_rows = 1;
  }
  else {
    $table_rows = $total / $table_columns;
    if ($total >= $table_columns && !is_integer($table_rows)) {
      $table_rows = intval($table_rows) + 1;
    }
  }

  $categories = "";
  $count = 0;
  $count2 = 0;
  foreach ($visible_cat_cache as $key => $category_id) {
    $categories .= "";

    $is_new = (isset($new_image_cache[$category_id]) && $new_image_cache[$category_id] > 0) ? 1 : 0;
    $num_images = (isset($cat_cache[$category_id]['num_images'])) ? $cat_cache[$category_id]['num_images'] : 0;

    $subcat_ids = array();
    get_subcat_ids($category_id, $category_id, $cat_parent_cache);

    if (isset($subcat_ids[$category_id])) {
      foreach ($subcat_ids[$category_id] as $val) {
        if (isset($new_image_cache[$val]) && $new_image_cache[$val] > 0) {
          $is_new = 1;
        }
        if (isset($cat_cache[$val]['num_images'])) {
          $num_images += $cat_cache[$val]['num_images'];
        }
      }
    }

    if (defined("SHOW_RANDOM_IMAGE") && SHOW_RANDOM_IMAGE == 0 || defined("SHOW_RANDOM_CAT_IMAGE") && SHOW_RANDOM_CAT_IMAGE == 0) {
      $random_cat_image_file = "";
    }
    else {
      $random_cat_image_file = get_random_image($category_id, 0, 1);
    }

    $site_template->register_vars(array(
      "cat_id" => $category_id,
      "cat_name" => format_text($cat_cache[$category_id]['cat_name'], 2),
      "cat_description" => format_text($cat_cache[$category_id]['cat_description'], 1),
      "cat_hits" => $cat_cache[$category_id]['cat_hits'],
      "cat_is_new" => $is_new,
      "lang_new" => $lang['new'],
      "sub_cats" => get_subcategories($category_id),
      "cat_url" => $site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$category_id),
      "random_cat_image_file" => $random_cat_image_file,
      "num_images" => $num_images
    ));
    $categories .= $site_template->parse_template("category_bit");
    $count++;
    $count2++;
    $categories .= "";

    if ($count == $table_rows && $count2 < sizeof($visible_cat_cache)) {
      $categories .= "";
      $categories .= "";
      $categories .= "";

      $total = $total - $count2;
      $table_columns = $table_columns - 1;
      /*if ($total <= $table_columns && $table_columns > 1) {
        $table_rows = 1;
      }
      else {
        $table_rows = $total / $table_columns;
        if ($total >= $table_columns && !is_integer($table_rows)) {
          $table_rows = intval($table_rows) + 1;
        }
      }*/
      $count = 0;
    }
  }

  $categories .= "";
  return $categories;
}

Habe den HTML Code auskommentiert!

Edit://
Hab nun in der functions.php folgendes gemacht:
function get_categories($cat_id = 0) {
  global $site_template, $site_db, $site_sess, $config, $lang;
  global $cat_cache, $cat_parent_cache, $new_image_cache, $subcat_ids;

  $cattable_width = ceil((intval($config['cat_table_width'])) / $config['cat_cells']);
  if ((substr($config['cat_table_width'],-1)) == "%") {
    $cattable_width .= "%";
  }

  if (!isset($cat_parent_cache[$cat_id])) {
    return "";
  }

  $visible_cat_cache = array();
  foreach ($cat_parent_cache[$cat_id] as $key => $val) {
    if (check_permission("auth_viewcat", $val)) {
      $visible_cat_cache[$key] = $val;
    }
  }

  if (empty($visible_cat_cache)) {
    return "";
  }

  $total = sizeof($visible_cat_cache);
  $table_columns = (intval($config['cat_cells'])) ? intval($config['cat_cells']) : 2;
  if ($total <= $table_columns) {
    $table_rows = 1;
  }
  else {
    $table_rows = $total / $table_columns;
    if ($total >= $table_columns && !is_integer($table_rows)) {
      $table_rows = intval($table_rows) + 1;
    }
  }

  $categories = "\n<div class=\"block block-user\" id=\"block-user-".URL_CAT_ID."=".$category_id."\">\n";
  $count = 0;
  $count2 = 0;
  foreach ($visible_cat_cache as $key => $category_id) {
    $categories .= "";

    $is_new = (isset($new_image_cache[$category_id]) && $new_image_cache[$category_id] > 0) ? 1 : 0;
    $num_images = (isset($cat_cache[$category_id]['num_images'])) ? $cat_cache[$category_id]['num_images'] : 0;

    $subcat_ids = array();
    get_subcat_ids($category_id, $category_id, $cat_parent_cache);

    if (isset($subcat_ids[$category_id])) {
      foreach ($subcat_ids[$category_id] as $val) {
        if (isset($new_image_cache[$val]) && $new_image_cache[$val] > 0) {
          $is_new = 1;
        }
        if (isset($cat_cache[$val]['num_images'])) {
          $num_images += $cat_cache[$val]['num_images'];
        }
      }
    }

    if (defined("SHOW_RANDOM_IMAGE") && SHOW_RANDOM_IMAGE == 0 || defined("SHOW_RANDOM_CAT_IMAGE") && SHOW_RANDOM_CAT_IMAGE == 0) {
      $random_cat_image_file = "";
    }
    else {
      $random_cat_image_file = get_random_image($category_id, 0, 1);
    }

    $site_template->register_vars(array(
      "cat_id" => $category_id,
      "cat_name" => format_text($cat_cache[$category_id]['cat_name'], 2),
      "cat_description" => format_text($cat_cache[$category_id]['cat_description'], 1),
      "cat_hits" => $cat_cache[$category_id]['cat_hits'],
      "cat_is_new" => $is_new,
      "lang_new" => $lang['new'],
      "sub_cats" => get_subcategories($category_id),
      "cat_url" => $site_sess->url(ROOT_PATH."categories.php?".URL_CAT_ID."=".$category_id),
      "random_cat_image_file" => $random_cat_image_file,
      "num_images" => $num_images
    ));
    $categories .= $site_template->parse_template("category_bit");
    $count++;
    $count2++;
    $categories .= "";

    if ($count == $table_rows && $count2 < sizeof($visible_cat_cache)) {
      $categories .= "";
      $categories .= "";
      $categories .= "";

      $total = $total - $count2;
      $table_columns = $table_columns - 1;
      /*if ($total <= $table_columns && $table_columns > 1) {
        $table_rows = 1;
      }
      else {
        $table_rows = $total / $table_columns;
        if ($total >= $table_columns && !is_integer($table_rows)) {
          $table_rows = intval($table_rows) + 1;
        }
      }*/
      $count = 0;
    }
  }

  $categories .= "</div>/n";
  return $categories;
}

und die category_bit.html so abgeändert:
Code: [Select]
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3><a href="javascript:toggle('toggle1')">{cat_name}</a>{if cat_is_new}<sup>{lang_new}</sup>{endif cat_is_new}</h3>
            </div>
            <div class="content" id="toggle1" style="DISPLAY: yes">
            Testtext
            </div>
            <div class="content" id="toggle1" style="DISPLAY: none">
                {if sub_cats}<ul class="menu">
                {sub_cats}
</ul>{endif sub_cats}
</div>
        </div>
    </div>    

Der Quelltext der Seite sieht dann aber so aus:

Code: [Select]
<div class="block block-user" id="block-user-cat_id=">
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3><a href="javascript:toggle('toggle1')">Elektronisch</a><sup>neu</sup></h3>
            </div>
            <div class="content" id="toggle1" style="display: none;">

                <ul class="menu">
                <li class="leaf first"><a href="/./categories.php?cat_id=2" title="Electro" class="active">Electro</a></li><li class="leaf first"><a href="/./categories.php?cat_id=5" title="Minimal" class="active">Minimal</a></li><li class="leaf first"><a href="/./categories.php?cat_id=6" title="House" class="active">House</a></li><li class="leaf first"><a href="/./categories.php?cat_id=7" title="Trance" class="active">Trance</a></li><li class="leaf first"><a href="/./categories.php?cat_id=8" title="Tecno" class="active">Tecno</a></li><li class="leaf first"><a href="/./categories.php?cat_id=9" title="Hard-Bass" class="active">Hard-Bass</a></li><li class="leaf first"><a href="/./categories.php?cat_id=10" title="Hard-Style" class="active">Hard-Style</a></li><li class="leaf first"><a href="/./categories.php?cat_id=11" title="Tecktonik" class="active">Tecktonik</a></li><li class="leaf first"><a href="/./categories.php?cat_id=12" title="Hardcore" class="active">Hardcore</a></li></ul></div>
        </div>
    </div>    
<div class="block-top">

     <div class="block-bot">

         <div class="title">
                <h3><a href="javascript:toggle('toggle1')">Drums &amp; Beats</a></h3>
            </div>
            <div class="content" id="toggle1" style="display: none;">
                </div>
        </div>

    </div>    
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3><a href="javascript:toggle('toggle1')">Selfmade</a></h3>
            </div>
            <div class="content" id="toggle1" style="display: none;">
                </div>

        </div>
    </div>    
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3><a href="javascript:toggle('toggle1')">Remix</a></h3>
            </div>
            <div class="content" id="toggle1" style="display: none;">

                </div>
        </div>
    </div>    
</div>

Und das ist falsch. Ich weis nicht wie ich das anstelles soll. Richtig müsste der Code so aussehen!
Nur halt, dass die ID sich ändern soll bzw. die Zahl!

Code: [Select]
<div class="block block-user" id="block-user-1">
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3>Elektronisch<sup>neu</sup></h3>
            </div>

            <div class="content">
                <ul class="menu">
                <li class="leaf first"><a href="/./categories.php?cat_id=2" title="Electro" class="active">Electro</a></li><li class="leaf first"><a href="/./categories.php?cat_id=5" title="Minimal" class="active">Minimal</a></li><li class="leaf first"><a href="/./categories.php?cat_id=6" title="House" class="active">House</a></li><li class="leaf first"><a href="/./categories.php?cat_id=7" title="Trance" class="active">Trance</a></li><li class="leaf first"><a href="/./categories.php?cat_id=8" title="Tecno" class="active">Tecno</a></li><li class="leaf first"><a href="/./categories.php?cat_id=9" title="Hard-Bass" class="active">Hard-Bass</a></li><li class="leaf first"><a href="/./categories.php?cat_id=10" title="Hard-Style" class="active">Hard-Style</a></li><li class="leaf first"><a href="/./categories.php?cat_id=11" title="Tecktonik" class="active">Tecktonik</a></li><li class="leaf first"><a href="/./categories.php?cat_id=12" title="Hardcore" class="active">Hardcore</a></li></ul></div>
        </div>

    </div>    
</div>
<!-- <li><a class="sub" href="./categories.php?cat_id=3"><b>Drums &amp; Beats&nbsp;(0)</b>
      </li> -->
  
<div class="block block-user" id="block-user-1">
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3>Drums &amp; Beats</h3>

            </div>
            <div class="content">
                </div>
        </div>
    </div>    
</div>
<!-- <li><a class="sub" href="./categories.php?cat_id=13"><b>Selfmade&nbsp;(0)</b>
      </li> -->
  
<div class="block block-user" id="block-user-1">
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3>Selfmade</h3>
            </div>
            <div class="content">
                </div>
        </div>
    </div>    
</div>

<!-- <li><a class="sub" href="./categories.php?cat_id=14"><b>Remix&nbsp;(0)</b>
      </li> -->
  
<div class="block block-user" id="block-user-1">
<div class="block-top">
     <div class="block-bot">

         <div class="title">
                <h3>Remix</h3>
            </div>
            <div class="content">

                </div>
        </div>
    </div>    
</div>

Wäre super!
Title: Re: categorie_bit / mit ID hochzählen
Post by: mawenzi on September 30, 2009, 11:46:06 PM

Meine Frage:

Kann jemand ein Code zur Verfügung stellen, der die ID automatisch bei jeder Kategorie mit hochzählt.


... und warum verwendest du da nicht die Kategorie-ID ... in den Templates ... {cat_id} ... ?
Title: Re: categorie_bit / mit ID hochzählen
Post by: Sunny C. on October 01, 2009, 02:10:45 PM
Huhu,

ja das ist war. Das habe ich auch hinterher gemacht :D

Trotzdem danke !