Jump to content
xt:Commerce Community Forum

Unterkategorien in extra Box


doktormemo

Recommended Posts

Hallo,

ich möchte gerne, wenn man eine Hauptkategorie auswählt, dass die dazugehörigen Unterkategorien in einer extra Box anzeigen lassen.

Hier ein kleines Beispiel, was ich mir vorstelle... Bath Accessories, Bath Decor: Luxury Bath Accessories & Bath Items at Restoration Hardware

Ich habe mir eine Listenversion der xtc_show_category.inc.php runtergeladen, um die Kategorien besser mit CSS zu formatieren zu können.

<?php
/*
-----------------------------------------------------------------------------------------
$Id: xtc_show_category.inc.php 1262 2005-09-30 10:00:32Z mz $

XT-Commerce - community made shopping
http://www.xt-commerce.com

Copyright (c) 2003 XT-Commerce
-----------------------------------------------------------------------------------------
based on:
(c) 2000-2001 The Exchange Project (earlier name of osCommerce)
(c) 2002-2003 osCommerce(categories.php,v 1.23 2002/11/12); www.oscommerce.com
(c) 2003 nextcommerce (xtc_show_category.inc.php,v 1.4 2003/08/13); www.nextcommerce.org

Released under the GNU General Public License
-----------------------------------------------------------------------------------------
Modified to get a cleaner HTML-output without tables
Bugfix
Shows, which categories have subcategories
by Gunnar Tillmann
http://www.gunnart.de
-----------------------------------------------------------------------------------------
*/

function xtc_show_category($counter) {

global $foo, $categories_string, $id;


//start the loop
for ($a=0; $a<$foo[$counter]['level']; $a++)
{}


if ($foo[$counter]['level']=='') //maincat
{
if (strlen($categories_string)=='0')
{
$categories_string .='<ul class="navilist">';
}
$categories_string .='
<li class="maincat';
if (xtc_has_category_subcategories($counter))
{
$categories_string .= ' submenue';
}
$categories_string .= '"><a class="';
if ( ($id) && (in_array($counter, $id)) )
{
$categories_string .= 'gewaehlt';
}
$categories_string .= '" href="';
}

else //subcat
{
$categories_string .= '
<li class="subcat level'.$foo[$counter]['level'];
if (xtc_has_category_subcategories($counter))
{
$categories_string .= ' submenue'.$foo[$counter]['level'];
}
$categories_string .= '"><a class="';
if ( ($id) && (in_array($counter, $id)) )
{
$categories_string .= 'gewaehlt';
}
$categories_string .= '" href="';
}

$cPath_new=xtc_category_link($counter,$foo[$counter]['name']);

$categories_string .= xtc_href_link(FILENAME_DEFAULT, $cPath_new);
$categories_string .= '">';

$categories_string .= $foo[$counter]['name'];

if (SHOW_COUNTS == 'true')
{
$products_in_category = xtc_count_products_in_category($counter);
if ($products_in_category > 0)
{
$categories_string .= ' <span class="catcount">(' . $products_in_category . ')</span>';
}
}

$categories_string .= '</a></li>';

if ($foo[$counter]['next_id'])
{
xtc_show_category($foo[$counter]['next_id']);
}
else
{
$categories_string .= '
</ul>';
}
}

?>[/PHP]

Wie kann ich nun eine extra Box erstellen, wo dann die Unterkategorien von der aktiven Hauptkategorie angezeigt wird?

Link to comment
Share on other sites

Also ich habe bereits herausfinden können, welche Dateien für die Anzeige der Kategorien Navigation verwantwortlich sind...

das wären:

templates/eigenestemplate/source/boxes/categories.php

templates/eigenestemplate/source/inc/xtc_show_category.inc.php

templates/eigenestemplate/boxes/box_categories.html

Kann mir da jemand zustimmen. Leider weiß ich nicht wie ich nun eine Box erstelle in der nur die Unterkategorien angezeigt werden sollen...

jemand eine Idee oder ein Tipp der mich auf die richtige Richtung bringt?

Link to comment
Share on other sites

Hallo,

leider habe ich nicht viel Reaktion auf meine Fragen erhalten...:sad:

deshalb habe ich erstmal selber weiter gemacht und habe diese Anleitung abgearbeitet:

Erstellen einer neuen Box f?r XT-Commerce RC 1.2 (Version 1.0)

1. Eine bestehende Box kopieren und anpassen:

Gehen Sie in das Verzeichniss:

/template/ihrtemplate/source/boxes

Dort kopieren Sie z.b.: box_information.php in box_links.php

Das gleiche machen Sie im Verzeichniss:

/template/ihrtemplate/boxes

Hier kopieren Sie die box_information.html in box_links.html

2. ?ndern der Bezeichnungen in den beiden Files:

In der .php Datei ersetzen Sie alle Eintr?ge die "information" lauten,

mit "links".

Achten Sie darauf das folgender Code gro? geschrieben werden mu?:

$smarty->assign('box_INFORMATION',$box_information);

Hier also das INFORMATION in LINKS ?ndern

3. Neue Box in der boxes.php einbinden:

?ffnen Sie die Datei:

/template/ihrtemplate/source/boxes.php

Und f?gen Sie unter:

require(DIR_WS_BOXES . 'information.php');

folgendes ein:

require(DIR_WS_BOXES . 'links.php');

4. Smarty Tag in die Index.html einf?gen:

?ffnen sie die Datei "index.html" im Verzeichniss:

/template/ihrtemplate/

F?gen Sie {$box_LINKS} entweder in die Linke oder in die Rechte

Navigationsleiste ein.

<td>{$box_CART} {$box_LOGIN} {$box_INFOBOX} {$box_ADMIN} {$box_BESTSELLERS}

{$box_CURRENCIES} {$box_LANGUAGES} {$box_MANUFACTURERS_INFO}

{$box_MANUFACTURERS} {$box_NOTIFICATIONS} {$box_TELL_FRIEND} {$box_LINKS}

</td>

5. ?ndern des file_flag in der links.php:

$content_query=xtc_db_query("SELECT

content_id,

categories_id,

parent_id,

content_title,

content_group

FROM ".TABLE_CONTENT_MANAGER."

WHERE languages_id='".(int)$_SESSION['languages_id']."'

and file_flag=3 and content_status=1");

Hier ?ndern Sie bitte file_flag=0 auf file_flag=3

6. ?nderung in der Datenbank:

Gehen Sie in Ihre Datenbank. Dort finden Sie die Tabelle:

cm_file_flags

Erzeugen Sie einen neuen Eintrag und schreiben Sie f?r file_flag = 3

Und geben Sie der Box noch den Namen: links

Dieser Name wird dann in der Auswahlbox des Content-Managers stehen.

7. ?ndern der Sprachdatei:

Gehen Sie in des Verzeichniss:

lang/german/

?ffnen Sie die Datei: lang_german.conf

F?gen Sie im Abschnitt [boxes] (ziemlich weit unten) folgendes ein:

heading_linkbox = 'Spielelinks' (K?nnen Sie nat?rlich Ihren Begebenheiten anpassen)

?ffnen Sie Ihre links.html Datei und ?ndern Sie:

den Smarty Tag:

{#heading_infobox#}

in

{#heading_linkbox#}

8. Content erzeugen:

Melden Sie sich als Admin an, gehen Sie zum Content-Manager.

Erstellen Sie einen neuen Content. Jetzt sollten Sie bei "Box" die neue Box "links" ausw?hlen k?nnen

und der Box den neuen Content zuweisen.

Achten Sie darauf auch das K?stchen "Sichtbar" anzuklicken, da sonst Ihre neue Box erst

garnicht erscheint.

Bisher konnte ich nur bis zum Punkt 5 kommen.

Die Queryabfrage sieht bei templates/eigenestemplate/source/boxes/categories.php etwas anders aus.

Ich weiß nicht wie ich jetzt weitermachen soll.

Link to comment
Share on other sites

mit dem was du da schreibst, kannst du zwar eine neue box erstellen.

aber die inhalte dafür kannst du nur im content manager in diese box leiten,

da kannst du dann aswählen, dass es in der neuen box erscheint.

ein artikel zum beispiel:

Feuerlöscher und Zubehör zu Discountpreisen (Onlineshop)

dem habe ich die boxen angelegt, weil er die da alle so haben will.

wenn du nur bis 5 gekommen bist, reicht das dafür auch nicht.

das was du möchtest geht damit nicht.

du kannst ja unterkategorien erstellen, aber die sind dann eben unter deiner hauptkategorie zu sehen.

wie man das macht, was du da willst, weiß ich leider nicht.

vg

micha

Link to comment
Share on other sites

Servus,

also das mit der neuen Box ist ja schonmal nicht schlecht.

Jetzt mußt Du nur noch dafür sorgen, das die Box nur eingeblendet wird, wenn eine Oberkategorie angeklickt wird. Und eben eine modifizierte Version der Funktion zur Erstellung der Kategorie enthält und so beschnitten ist, daß eben nur die Kinderkategorien der gerade aktiven Oberkategorie ausgespuckt werden.

Das würde ich als Vorgehensweise ansehen. Kann mich auch täuschen. Weis nicht genau. Was ich allerdings weis ist, das eine saubere Implementierung der Sache sicher nicht aus der hohlen Hand gerade so zu machen ist.

ciao, Stefan

Link to comment
Share on other sites

Hallo,

ich habe eine Lösung gefunden :P

Wie bereits erwähnt habe ich die ersten vier Punkte der Anleitung abgearbeitet.

Also diese Dateien so modifiziert das ich eine Kopie der Kategorienanzeige hatte.

templates/eigenestemplate/source/boxes/categories.php

templates/eigenestemplate/source/inc/xtc_show_category.inc.php

templates/eigenestemplate/boxes/box_categories.html

Leider wurde die Seite danach komplett nicht mehr angezeigt.

Der Fehler lag darin, dass die Funktion xtc_show_category()

in den kopierten Dateien von

templates/eigenestemplate/source/boxes/categories.php

templates/eigenestemplate/source/inc/xtc_show_category.inc.php

umgenannt werden muss, z.B. in xtc_show_subcategory().

Danach hatte ich zwei Boxen mit jeweils der gleichen Kategoriennavigation.

Jetzt muss man nur noch von einer der Boxen die xtc_show_category.inc.php so modifizieren, so dass nur die Unterkategorien angezeigt werden.

Viele Grüße

doktormemo:cool:

Link to comment
Share on other sites

  • 2 months later...

Archived

This topic is now archived and is closed to further replies.

×
  • Create New...