|
|||
|
Hallo Leute, ich habe mal die Kategorieschleife f?r einen Kunden angepasst und biete Sie hiemit der Allgemeinheit an.
Was sicherlich nicht hundertprozentig stimmt, sind die Kommentare - also wenn jemand das verbessert wenn etwas nicht logisch-korrekt ist bin ich dankbar. Mir hat diese Version es erm?glicht bessere Anpassungen vorzunehmen. F?r Fragen & Anregungen bin ich jederzeit gerne bereit. Gr??e Danimax <?php /* ----------------------------------------------------------------------------------------- Modified and customized version - for questions mail to: 101.13946@germanynet.de ----------------------------------------------------------------------------------------- based on: $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 ? 2003 XT-Commerce ----------------------------------------------------------------------------------------- based on: ? 2000-2001 The Exchange Project (earlier name of osCommerce) ? 2002-2003 osCommerce(categories.php,v 1.23 2002/11/12); www.oscommerce.com ? 2003 nextcommerce (xtc_show_category.inc.php,v 1.4 2003/08/13); www.nextcommerce.org Released under the GNU General Public License ---------------------------------------------------------------------------------------*/ function xtc_show_category($counter) { global $foo, $categories_string, $id; // Vor allen Elementen / Anfangstags $categories_string .= '<ul>'; //Schleifenaufruf for ($a=0; $a<$foo[$counter]['level']; $a++){ $categories_string .= ''; } // 1. Kategorie-Ebene if ($foo[$counter]['level']=='') { $categories_string .= '<li class="Ebene_1">'; } // 2. Kategorie-Ebene if ($foo[$counter]['level']=='1') { $categories_string .= '<li class="Ebene_2">'; } // 3. Kategorie-Ebene if ($foo[$counter]['level']=='2') { $categories_string .= '<li class="Ebene_3">'; } // Gilt f?r alle Elemente $categories_string .= '<a href="'; $cPath_new=xtc_category_link($counter,$foo[$counter]['name']); $categories_string .= xtc_href_link(FILENAME_DEFAULT, $cPath_new); $categories_string .= '">'; // Ausgew?hltes Element if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= ''; } // Kategorienamen anzeigen $categories_string .= $foo[$counter]['name']; // Tags schlie?en if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= ''; } $categories_string .= '</a>'; // Letztes Element erreicht? / Schleifenende if ($foo[$counter]['next_id']){ xtc_show_category($foo[$counter]['next_id']); } // Nach allen Elementen / Schlu?tag else{ $categories_string .= '[/list]'; } } ?> |
|
|||
|
stimmt, sie gibt das ganze momentan in listen tags aus,
-> also ich habe tagelang versucht ANpassungen in der bestehenden Datei zu machen, anber die dort vorhandene Logik hat mir nicht gereicht um mein Ziel (Shop des Kunden) anzupassen. jetzt kann man f?r 3 verschiedene Ebenen die entsprechenden Styles aufrufen oder was auch immer damit machen --- hey da sind kommentare... also wird man's schon verstehen... |
|
|||
|
premiere, erster beitrag in diesem forum - und gleich eine frage:
mit genau dem gleichen problem schlag ich mich auch gerade rum - allerdings leider erfolglos... @danimax: bei mir hat deine ge?nderte version nicht funktioniert. :-( zuerst kam eine fehlermeldung, dass die funktion "xtc_category_link" nicht bekannt sei - das hab ich aber wieder hingekriegt, indem ich die entsprechenden stellen in denen der link erzeugt wird, mit denen aus der original-datei ersetzt habe. und dann wurde im ergebnis vor jedes li ein ul gesetzt. woran kann das liegen? [ich hab version 3.03 installiert |
|
|||
|
Ich hab eine andere L?sung gefunden!
:-) Noch mal zur Verdeutlichung: Gew?nscht hatte ich mir urspr?nglich eigentlich folgende HTML-Ausgabe: Code:
<ul class="navilist"> <li>Kategorie 1 <ul> <li>Kategorie 1.1 <ul> <li>Kategorie 1.1.1</li> <li>Kategorie 1.1.2</li> </ul> </li> <li>Kategorie 1.2</li> </ul> </li> <li>Kategorie 2</li> <li>Kategorie 3</li> <li>Kategorie 4</li> </ul> Also anders: Ausgegeben wird jetzt eine ganz "normale" Liste, ohne weitere Verschachtelungen. Allerdings mit folgenden CSS-Klassen, mit denen man ?ber ?nderungen am Stylesheet seine Hierarchien ebensogut im Griff hat: Code:
<ul class="navilist"> <li class="maincat">Kategorie 1</li> <li class="subcat level1">Kategorie 1.1</li> <li class="subcat level2">Kategorie 1.1.1</li> <li class="subcat level2">Kategorie 1.1.2</li> <li class="subcat level1">Kategorie 1.2</li> <li class="maincat">Kategorie 2</li> <li class="maincat">Kategorie 3</li> <li class="maincat">Kategorie 4</li> </ul> Im Gegensatz zur L?sung von danimax k?nnen damit auch noch tiefere Hierarchien verarbeitet werden. Ein bisschen Detailarbeit m?chte ich allerdings noch machen, bevor ich den Code poste. |
|
|||
|
Fertig!
Bestimmt kann man einige Dinge auch etwas eleganter l?sen, aber ich kenn mich halt noch nicht so gut aus. Code:
<?php /* ------------------------------------------------------------------------------------------- $Id: xtc_show_category.inc.php,v 1.1 2004/04/26 20:26:42 fanta2k Exp $ 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 by Gunnar Tillmann http://www.gunnart.de --------------------------------------------------------------------------------------------- */ function xtc_show_category($counter) { global $foo, $categories_string, $id; // our loop for ($a=0; $a<$foo[$counter]['level']; $a++) { $categories_string .= ''; } // starting an unordered list called "navilist" if ($foo[$counter]['level']=='') { if (strlen($categories_string)=='0') // Check if this is the first of our categories { $categories_string .=' <ul class="navilist"> <li class="maincat">'; } else { $categories_string .=' <li class="maincat">'; } } else // subcategories are called "subcat" { $categories_string .= ' <li class="subcat level'.$foo[$counter]['level'].'">'; } // check if link has subcats, check if link is active if (xtc_has_category_subcategories($counter)) { $categories_string .= '<a class="submenue'; if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= ' active'; } $categories_string .= '" href="'; } else { $categories_string .= '<a'; if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= ' class="active"'; } $categories_string .= ' href="'; } // linking if ($foo[$counter]['parent'] == 0) { $cPath_new = 'cPath=' . $counter; } else { $cPath_new = 'cPath=' . $foo[$counter]['path']; } if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') $cPath_new.='&category='.xtc_cleanName($foo[$counter]['name']); $categories_string .= xtc_href_link(FILENAME_DEFAULT, $cPath_new); $categories_string .= '">'; // display category name $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>'; } } // close tags $categories_string .= '</a></li>'; if ($foo[$counter]['next_id']) { xtc_show_category($foo[$counter]['next_id']); } else // close our "navilist" { $categories_string .= ' </ul>'; } } ?> - Hauptkategorien werden von <li class="maincat"> umschlossen - Unterkategorien entsprechend von <li class="subcat level#">, die Nummer steht f?r die Hierarchietiefe - Bei aktiven Men?punkten werden die Links selbst durch die Klasse <a class="active"> markiert und nicht der Text innerhalb durch Fettdruck hervorgehoben (einige CSS Geschichten sind sonst nicht m?glich) - Die Z?hlung hinter den Kategorien ist jetzt innerhalb des Links (ebenfalls aus CSS-Gr?nden) - damit man die Z?hlung individuell stylen kann, steht sie innerhalb eines <span>-Tags - Es wird CSS-m??ig zwischen Men?punkten mit und Ohne Untermen? unterschieden. Auf diese Weise k?nnte man z.B. Navigationen realisieren, in denen Men?punkte, unter denen noch mehr zu finden ist, mit einem Dreieck gekennzeichnet werden, das dann bei Klick nach unten umklappt. |
|
|||
|
Moinmoin,
bei meiner Modifikation haben sich einige Bugs eingeschlichen, die ich vorher gar nicht bemerkt habe: Nach einigen Aktionen (z.B. Bewertung eines Artikels abgeben) erh?lt man r?tselhafte Fehlermeldungen mit "Headers already sent". Ich hatte zun?chst darauf getippt, dass es daran lag, dass xtCommerce in einem Unterordner installiert war und ich beim Anpassen der verschienenen "configuration.php"s irgendwo Mist gebaut h?tte. Es lag aber DOCH an meiner Modifikation. Hier eine gefixte Version - bis jetzt ist mir unter xtCommerce 3.04 jedenfalls noch kein Fehler aufgefallen: Code:
<?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 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"><a '; if (xtc_has_category_subcategories($counter)) { $categories_string .= 'class="submenue" '; } if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= 'class="active" '; } $categories_string .= 'href="'; } else //subcat { $categories_string .= ' <li class="subcat level'.$foo[$counter]['level'].'"><a '; if (xtc_has_category_subcategories($counter)) { $categories_string .= 'class="submenue" '; } if ( ($id) && (in_array($counter, $id)) ) { $categories_string .= 'class="active" '; } $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>'; } } ?> |
|
|||
|
Zitat:
darf ich fragen, was f?r Bugs denn in dieser Version vorliegen? Dieses Script ist n?mlich die einzige Version (habe im Forum insgesamt drei Varianten gefunden), die bei mir funktioniert. Bei den anderen wird mir im Browser lediglich eine leere Seite angezeigt (Quelltextanzeige ist auch leer), so da? ich keinen Ansatzpunkt zur Fehlersuche habe. Die Artikelbewertungen werde ich aus meinem Shop rausnehmen, deshalb w?rde dieser Fehler bei mir schon mal nicht auftreten. Wenn Du mir sagst, was in dieser Version nicht stimmt, k?nnte ich die ?nderungen selbst in das funktionierende Script einbauen. Ich nutze allerdings noch die Version 3.03, ich mache das Update erst bevor ich den Shop online stelle, mu? jetzt erstmal das Layout auf die Beine stellen... |
![]() |
| Lesezeichen |
| Stichworte |
| angepasste, xtcshowcategory |
| Themen-Optionen | |
| Ansicht | |
|
|