[Solved]: Kategorien auf Startseite nebeneinander [Solved]: Kategorien auf Startseite nebeneinander
 

News:

CPG Release 1.6.26
Correct PHP8.2 issues with user and language managers.
Additional fixes for PHP 8.2
Correct PHP8 error with SMF 2.0 bridge.
Correct IPTC supplimental category parsing.
Download and info HERE

Main Menu

[Solved]: Kategorien auf Startseite nebeneinander

Started by ToniK, July 14, 2008, 08:21:41 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

ToniK

Hallo Zusammen.

Wir Arbeiten mit vielen Verschachtelten Kategorien.
Auf der Startseite http://www.makro-forum.de/artengelerie/index.php werden die Kategorien alle untereinander angezeigt, was dazu führt, dass man schon jetzt (es sind noch weitere Mutterkategorien geplant), stark scrollen muss.

Würde man aber die 2. Kategorie-Ebenen nebeneinander anzeigen, wäre es sehr viel übersichtlicher.
Im Anhang ein Bild, wie ich es mir vorstelle.

Gibt es dafür schon ein MOD?
Wenn nein, wer würde dieses Vorhaben für uns umsetzten?
Bezahlung via PayPal.

Gruß Toni

Joachim Müller


Αndré

Oder kurz: kopiere mal folgendes in deine "theme.php" und schau, ob es das gewünschte Ergebnis bringt :)
// HTML template for the category list
$template_cat_list = <<<EOT
<!-- BEGIN header -->
        <tr>
                <td class="tableh1" width="40%"><b>{CATEGORY}</b></td>
                <td class="tableh1" width="5%" align="center"><b>{ALBUMS}</b></td>
                <td class="tableh1" width="5%" align="center"><b>{PICTURES}</b></td>
                <td class="tableh1" width="40%"><b>{CATEGORY}</b></td>
                <td class="tableh1" width="5%" align="center"><b>{ALBUMS}</b></td>
                <td class="tableh1" width="5%" align="center"><b>{PICTURES}</b></td>
        </tr>
<!-- END header -->
<!-- BEGIN catrow_noalb -->
        <tr>
                <td class="tableh2" colspan="6"><table border="0"><tr><td>{CAT_THUMB} {DEBUG}</td><td><span class="catlink"><b>{CAT_TITLE}</b></span>{CAT_DESC}</td></tr></table></td>
        </tr>
<!-- END catrow_noalb -->
<!-- BEGIN catrow -->
                <td class="tableb"><table border="0"><tr><td>{CAT_THUMB}</td><td><span class="catlink"><b>{CAT_TITLE}</b></span>{CAT_DESC}</td></tr></table></td>
                <td class="tableb" align="center">{ALB_COUNT} {DEBUG}</td>
                <td class="tableb" align="center">{PIC_COUNT}</td>
<!-- END catrow -->
<!-- BEGIN catrow_blank -->
                <td class="tableb" align="center"></td>
                <td class="tableb" align="center">{DEBUG}</td>
                <td class="tableb" align="center"></td>
<!-- END catrow_blank -->
<!-- BEGIN footer -->
        <tr>
                <td colspan="6" class="tableh1" align="center"><span class="statlink"><b>{STATISTICS}</b></span></td>
        </tr>
<!-- END footer -->
<!-- BEGIN spacer -->
        <img src="images/spacer.gif" width="1" height="7" border="" alt="" /><br />
<!-- END spacer -->

EOT;

function theme_display_cat_list($breadcrumb, &$cat_data, $statistics)
{
        global $template_cat_list, $lang_cat_list;

        starttable('100%');

        if (count($cat_data) > 0) {
                $template = template_extract_block($template_cat_list, 'header');
                $params = array('{CATEGORY}' => $lang_cat_list['category'],
                '{ALBUMS}' => $lang_cat_list['albums'],
                '{PICTURES}' => $lang_cat_list['pictures'],
                );
                echo template_eval($template, $params);
        }

        $template_noabl = template_extract_block($template_cat_list, 'catrow_noalb');
        $template = template_extract_block($template_cat_list, 'catrow');
        $template_blank = template_extract_block($template_cat_list, 'catrow_blank');

        $count=0;
        $columnCount=2;
        echo "<tr>";   
   
        foreach($cat_data as $category) {
                $count++;   
                if (count($category) == 3) {
                        if ($count%$columnCount==0) {
                                $params = array('{DEBUG}' => "");
                                echo template_eval($template_blank, $params);
                        }
                        $params = array('{CAT_TITLE}' => $category[0],
                                                                '{CAT_THUMB}' => $category['cat_thumb'],
                                                                '{CAT_DESC}' => $category[1],
                                                                '{DEBUG}' => ""
                        );
                        $count=0;
                        echo template_eval($template_noabl, $params);
                } else {
                        $params = array('{CAT_TITLE}' => $category[0],
                                                                '{CAT_THUMB}' => $category['cat_thumb'],
                                                                '{CAT_DESC}' => $category[1],
                                                                '{CAT_ALBUMS}' => $category['cat_albums'],
                                                                '{ALB_COUNT}' => $category[2],
                                                                '{PIC_COUNT}' => $category[3],
                                                                '{DEBUG}' => ""
                        );
                        echo template_eval($template, $params);
                }
                if ($count%$columnCount==0) {
                        echo "</tr> <tr>";
                }
        }

         echo "</tr>";
    if ($statistics && count($cat_data) > 0) {
        $template = template_extract_block($template_cat_list, 'footer');
        $params = array('{STATISTICS}' => $statistics);
        echo template_eval($template, $params);
    }
    endtable();

    if (count($cat_data) > 0)
        echo template_extract_block($template_cat_list, 'spacer');
}

ToniK

Vielen Dank für den Link.

Es ist leider nicht wirklich das was ich Suche.
Das Problem ist, dass die Kategorien nur dann nebeneinander angezeigt werden, wenn sich in der Hauptkategorie nur eine weitere Kategorie befindet.
Sind mehre Kategorien ineinander Verschachtelt (was bei mir fast ausnahmslos der fall ist), werden sie weiterhin untereinander angezeigt.

Dem Code kann ich die Ursache für dieses Verhalten leider nicht entnehmen. Dafür reichen meine php-Kenntnisse nicht aus.

Vielleicht kann mir hier ja jemand behilflich sein.

Αndré

Meine Galerie ist wie folgt verschachtelt:

-Kategorie 1
--Unterkategorie 1.1
--Unterkategorie 1.2
-Kategorie 2
--Unterkategorie 2.1
--Unterkategorie 2.2

Damit werden immerhin die Unterkategorien nebeneinander (zu ihren Kategorien gehörig) in zwei Spalten dargestellt. Wenn ich etwas Zeit finde, kann ich ja mal über den Code drüberschauen ;)

ToniK

Das wäre klasse, eenemeenemuu!

Wäre es möglich, dass sich das nebeneinander legen der der Unterkategorie nur auf die Startseite auswirkt?
Ich sehe nämlich gerade, dass sich das Layout auch ändert, wenn man die die Unterkategorie aufruft.
Ich bin mir noch nicht sicher ob ich das gut finden soll oder nicht  ;D

Αndré

#6
Finde:
                if (count($category) == 3) {
und ersetze mit:
                if (count($category) == 4) {

Ich weiss nicht, ob das bei dir das gewünscht Ergebnis bringt. Dabei werden alle Kategorien einfach hintereinanderweg aufgelistet. Bei mir sieht es damit nicht mehr so toll aus. Teste es mal bitte :)


[edit: Wenn du den Quellcode ansonsten so lässt und bei den Einstellungen -> Ansicht Albenliste -> Anzahl angezeigter Kategorie-Ebenen -> "3" einstellst, sollte es funktionieren.]

ToniK

Danke eenemeenemuu!

Aber wie bei dir, schaut das bei mir nicht wirklich gut aus.
Es ist quasi alles durcheinander und nicht nach Mutterkategorie gelistet.
Zudem beschränkten sich die Änderungen nicht nur auf die Startseite, sondern auch auf darunterliegenden Ebenen.
Ich hab dann noch mal ein bisschen hier und da raumgeschraubt, aber wirklich besser wurde es dadurch nicht.

Nun bin ich einen ganz anderen Weg gegangen.
Getreu dem Motto: Man darf zwar dumm sein, muss sich aber zu helfen wissen ;)

Mir gefällts soweit ganz gut. Da lässt sich bestimmt noch manches optimieren, aber bis die Galerie online geht, hab ich ja noch ein paar Tage.

Fällt euch was auf?
http://www.makro-forum.de/artengelerie/

Αndré

Und was/wie hast du das gemacht? Wäre bestimmt für andere interessant :)

Joachim Müller

#9
Na, in etwa so wie hier: http://osterburken.net/galerie/  ;)

Αndré

*grübel* ich steh heut wohl aufm Schlauch.. oder es ist einfach zu lange her, dass ich mich mit dem Anlegen von Kategorien und der ganzen Struktur auseinandergesetzt habe ::) Wenn die Lösung eigentlich auf der Hand liegt, könnte man das Thema ja als gelöst markieren.. das kann ich gerade aber nicht beurteilen 8)

Joachim Müller

Habe ich mal unter http://forum.coppermine-gallery.net/index.php/topic,49123.0.html vorgestellt (und dem anderen Thread, auf den ich dort verweise).

@ToniK: hast Du Dich dort bedient? Bitte immer beim Auflösen des Threads beschreiben, wie Du zur Lösung gekommen bist bzw. woher Du Dein Wissen hast.

Joachim Müller

Hier nochmal Auszüge des von mir verwendeten Codes in theme.php auf osterburken.net:// HTML template for the category list
$template_cat_list = <<<EOT
<!-- BEGIN header -->
<!-- END header -->
<!-- BEGIN catrow_noalb -->
        <tr>
                <td class="tableh2" colspan="2">
                  <table border="0">
                    <tr>
                      <td>{CAT_THUMB} {DEBUG}</td>
                      <td><span class="catlink"><b>{CAT_TITLE}</b></span>{CAT_DESC}</td>
                    </tr>
                  </table>
                </td>
        </tr>
<!-- END catrow_noalb -->
<!-- BEGIN catrow -->
                <td class="tableb" valign="top">
                        <div style="float:left;margin-right:5px;margin-bottom:5px;">{CAT_THUMB}</div>
                        <span class="catlink">{CAT_TITLE}</span>{CAT_DESC}<br />
                        <div align="right" class="small">{ALB_COUNT} Alben, {PIC_COUNT} Bilder</div>
                        {DEBUG}
                </td>
<!-- END catrow -->
<!-- BEGIN catrow_blank -->
                <td class="tableb" align="center">{DEBUG}</td>
<!-- END catrow_blank -->
<!-- BEGIN footer -->
        <tr>
                <td colspan="6" class="tableh1" align="center"><span class="statlink"><b>{STATISTICS}</b></span></td>
        </tr>
<!-- END footer -->
<!-- BEGIN spacer -->
        <img src="images/spacer.gif" width="1" height="7" border="" alt="" /><br />
<!-- END spacer -->

EOT;


function theme_display_cat_list($breadcrumb, &$cat_data, $statistics)
{
  // Taken from http://coppermine-gallery.net/forum/index.php?topic=15400.msg107765#msg107765
  global $template_cat_list, $lang_cat_list;

  starttable('100%');

  if (count($cat_data) > 0) {
    $template = template_extract_block($template_cat_list, 'header');
    $params = array('{CATEGORY}' => $lang_cat_list['category'],
    '{ALBUMS}' => $lang_cat_list['albums'],
    '{PICTURES}' => $lang_cat_list['pictures'],
    );
    echo template_eval($template, $params);
  }

  $template_noabl = template_extract_block($template_cat_list, 'catrow_noalb');
  $template = template_extract_block($template_cat_list, 'catrow');
  $template_blank = template_extract_block($template_cat_list, 'catrow_blank');

  $count=0;
  $columnCount=2;
  echo "<tr>";

  foreach($cat_data as $category) {
    $count++;
    if (count($category) == 3) {
      if ($count%$columnCount==0) {
        $params = array('{DEBUG}' => "");
        echo template_eval($template_blank, $params);
      }
      $params = array('{CAT_TITLE}' => $category[0],
                '{CAT_THUMB}' => $category['cat_thumb'],
                '{CAT_DESC}' => $category[1],
                '{DEBUG}' => ""
      );
      $count=0;
      echo template_eval($template_noabl, $params);
    } else {
      $params = array('{CAT_TITLE}' => $category[0],
                '{CAT_THUMB}' => $category['cat_thumb'],
                '{CAT_DESC}' => $category[1],
                '{CAT_ALBUMS}' => $category['cat_albums'],
                '{ALB_COUNT}' => $category[2],
                '{PIC_COUNT}' => $category[3],
                '{DEBUG}' => ""
      );
      echo template_eval($template, $params);
    }
    if ($count%$columnCount==0) {
      echo "</tr>\n\r <tr>";
    }
  }

   echo "</tr>";
    if ($statistics && count($cat_data) > 0) {
        $template = template_extract_block($template_cat_list, 'footer');
        $params = array('{STATISTICS}' => $statistics);
        echo template_eval($template, $params);
    }
    endtable();

    if (count($cat_data) > 0)
        echo template_extract_block($template_cat_list, 'spacer');
}

ToniK

Also die osterburken Aufteilung  ist ne ganz andere als meine.

Ich hätte schon verraten wie ich es gemacht habe, ich wollte nur mal sehen, ob euch etwas auffällt.

Die Lösung:
Eine HTML-Startseite

Für die meisten sicher unbrauchbar, für mich aber ideal, zumal sich diese bei mir zukünftig auch kaum ändern wird.