Shopsystem ShopPilot Shoploesung Diskussionen und Infos zum Shopsystem ShopPilot
Willkommen Gast. Bitte einloggen oder registrieren.
Mai 23, 2012, 06:59:02

Einloggen mit Benutzername, Passwort und Sitzungslänge
Suche:     Erweiterte Suche
5257 Beiträge in 1422 Themen von 333 Mitglieder
Neuestes Mitglied: pje
* Übersicht Hilfe Login Registrieren
+  Diskussionen und Infos zum Shopsystem ShopPilot
|-+  ShopPilot
| |-+  SSP - Shop Server Pages
| | |-+  Kategoriebild auf Verzeichnisseiten dynamisch erzeugen
0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Kategoriebild auf Verzeichnisseiten dynamisch erzeugen  (Gelesen 1837 mal)
ms
Newbie
*

Lob: 1
Offline Offline

Beiträge: 30


WWW
« am: Oktober 13, 2009, 14:45:29 »

Hallo!

Da ich keine Kategoriebilder pflegen will bzw. das meine Warenwirtschaft (noch) nicht tut, kam mir folgender Gedanke.
Ist es möglich auf den Verzeichnisseiten statt __image__ das Bild eines beliebigen oder z.B. des ersten Artikels aus der entsprechenden Kategorie anzuzeigen?
Das würde auch etwas Abwechslung reinbringen.

Schöne Grüße!

Marcel
Gespeichert
admin
Administrator
Sr. Member
*****

Lob: 9
Offline Offline

Beiträge: 443


« Antwort #1 am: Oktober 14, 2009, 11:59:04 »

Hallo,

für Verzeichnisseiten kann man leider keine ssp Identifier so verwenden, wie auf Produktseiten. Also z.B. das Rubrikenbild nicht per __image__ sondern per __kat::image__ ausgeben, funktioniert nicht.

Die einzige Möglichkeit ist den kompletten Seiteninhalt per ssp auzugeben.
Die Werte ermittelt man durch direkte Datenbankabfragen, wie z.B. db_query_item.
Ist nnatürlich schon etwas aufwndiger, aber prinzipell würde es funktionieren.

Gruss hop
Gespeichert
ms
Newbie
*

Lob: 1
Offline Offline

Beiträge: 30


WWW
« Antwort #2 am: Dezember 15, 2010, 15:25:12 »

Hallo,

da sich hier http://www.shoppilot.net/pf/aktuelle-faq-haufige-fragen/kategorien-per-css-und-floatleft-darstellen/ eine neue Möglichkeit ergeben hat,
kann ich das Thema wieder aufleben lassen.

Der Originalcode aus dem FAQ-Thema war ja
Code:
<!--spmacro:module(content)
sub get_ebene {  
    my $str = ssp::get_var_page('parent_pagenr',$ssp::pgid);
    if ($str == -1) {return "startseite";}

my @subpages = ssp::get_subpages($ssp::pgid);
    if (scalar(@subpages) > 0)  {
      return "verzeichnisseite";
    }
    else {
      return "produktseite";
    }
}

sub show {
   if (get_ebene() eq "verzeichnisseite") {
     my @subpages = ssp::get_subpages($ssp::pgid);
     foreach $sub (@subpages) {
          if ($sub == 'undefined') {return;} else {last;}
     }
     my $out;
     foreach $sub (@subpages) {
        my $img = ssp::get_var_page('pimage',$sub);
        if (length($img) < 3) {
              $img = qq{../images/keinbild.jpg};
        }
        $out .= qq{<div style="float:left;margin:5px;"><div style="border:thin solid black;">\n};
        $out .= qq{<a href="$ssp::xxpath?show$sub,$ssp::xxsession"><img src="../$img" border="0"></a></div>};
        $out .= qq{<a href="$ssp::xxpath?show$sub,$ssp::xxsession">} .  ssp::get_var_page('ptitle',$sub) . "</a>";
         $out .= qq{</div>\n};
     }
     main::mprint $out;
   }
}
-->
         __content::show__        

Für meine Problematik angepasst sieht das dann ab foreach $sub (@subpages) { so aus
Code:
$count = ssp::readSQLData("SELECT IMG FROM ITEM WHERE PGID = '$sub' AND IMG <> 'images/artikel/vorschaubilder/kein_bild.jpg' ORDER BY rand() LIMIT 1","IMG");
if ($count == 1) {
$img = ssp::get_var_db("IMG");
}
else {
## Verzeichnisseite - Sammelbild!?
$found = 0;
$i = 1;
## Bildsuche in Unterkategorien auf 5 Ebenen begrenzen
do {
## zufällige Unterkategorie auswählen
$count = ssp::readSQLData("SELECT PGID FROM PAGE WHERE PPGID = '$sub' ORDER BY rand() LIMIT 1","PGID");
if ($count == 1) {
$pgid = ssp::get_var_db("PGID");
}
## zufälliges Bild in dieser Kategorie suchen
$count = ssp::readSQLData("SELECT IMG FROM ITEM WHERE PGID = '$pgid' AND IMG <> 'images/artikel/vorschaubilder/kein_bild.jpg' ORDER BY rand() LIMIT 1","IMG");
if ($count == 1) {
$img = ssp::get_var_db("IMG");
$found = 1;
}
$i++;
} until (($found == 1) || ($i == 5));

## wenn garnix gefunden wird einen Platzhalter setzen
if($i == 5) {
$img = qq{images/artikel/vorschaubilder/kein_bild.jpg};
}
}


   if (length($img) < 3) {
               $img = qq{images/artikel/vorschaubilder/kein_bild.jpg};;
        }


danach wird das Bild mit $img wieder wie im ursprünglichen Beispiel oder nach eigenen Vorlieben ausgegeben.
Es braucht noch die Variablen $pgid um die Kategorie unterhalb zu ermitteln,
$found um die Suche zu stoppen wenn ein Bild gefunden wurde und $i,
zur Sicherheit um die Suche zu begrenzen, damit irgendwann mal Schluss ist.

Wenn die SQL-Serveraktivität zu hoch wird, könnte man noch die einzelnen Suchen auf TOP(1) begrenzen.
Bei mir hat es sich erstmal nicht nachteilig ausgewirkt.

Mal sehen ob ich noch ein paar Infos zu den Unterkategorien reinbringen kann.
Wenn noch jemand Ideen oder Kritik zu diesem Thema hat - immer her damit.


Schöne Grüße,

Marcel
« Letzte Änderung: Dezember 15, 2010, 16:26:17 von ms » Gespeichert
ms
Newbie
*

Lob: 1
Offline Offline

Beiträge: 30


WWW
« Antwort #3 am: Dezember 15, 2010, 17:22:46 »

Bin gerade noch über etwas gestolpert. Wenn man Kategorien hat, die momentan keine Artikel enthalten, zeigt diese ja Shoppilot nicht an.
Bei diesem Skript werden sie aber berücksichtigt. Ich habe einige leere Kategorien. Dann einfach eine 2. Schleife bei der Kategoriesuche einfügen...
Code:
## zufällige Unterkategorie auswählen
do {
$z1++;
$count = ssp::readSQLData("SELECT PGID FROM PAGE WHERE PPGID = '$sub' ORDER BY rand() LIMIT 1","PGID");
if ($count == 1) {
$pgid = ssp::get_var_db("PGID");
## prüfen, ob Kategorie Artikel enthält (AIK=Artikel in Kategorie)
$count = ssp::readSQLData("SELECT COUNT(*) FROM ITEM WHERE PGID = '$pgid'","AIK");
$aik = ssp::get_var_db("AIK");
}
} until(($aik > 0) || ($z1 == 5));

Also auf meinem virtuellen Root-Server geht's immer noch fix genug ohne merkliche Verzögerung  Grin

Wobei ein Denkfehler noch drin sein muss. Ich habe eine Kategorie mit ein paar Unterkategorien, die sich durch nix unterscheidet und dann die gesammten
Unterkategorien nicht angezeigt werden  Huh
« Letzte Änderung: Dezember 15, 2010, 23:20:15 von ms » Gespeichert
ms
Newbie
*

Lob: 1
Offline Offline

Beiträge: 30


WWW
« Antwort #4 am: Dezember 17, 2010, 12:14:40 »

Zitat
Wobei ein Denkfehler noch drin sein muss. Ich habe eine Kategorie mit ein paar Unterkategorien, die sich durch nix unterscheidet und dann die gesammten
Unterkategorien nicht angezeigt werden.

So diesen Fehler habe ich nun auch noch gefunden. Für alle, die es interessiert:

Wenn unterhalb einer Verzeichnisseite nur Verzeichnisseiten sind, muss man ja per ssp::readSQLData deren Unterkategorien ermitteln um an Bilder zu kommen.
Dabei habe ich zwar Verzeichnisseiten aber Produktseiten nicht richtig berücksichtigt. Also auch deren PPGID ("Oberkategorie") muss separat ermittelt werden.

Ich habe es jetzt ins "Produktivsystem" überführt und bin mit der Perfomance sehr zufieden.

Mir kam noch der Gedanke, die Ansicht für den Benutzer per Drop-Down-Liste oben auf den Verzeichnisseiten auswählbar zu machen.
Also Bild, Zufallsbild oder ohne Bilder - für jene, die es schlicht mögen oder mit langsamen Verbindungen surfen.

Hat jemand eine Idee, wie man das am sinnvollsten speichern könnte?

Für den unbekannten Kunden müsste ich sicher einen Cookie nehmen. Das nur an der Session festzumachen (falls das überhaupt geht) halte ich nicht für sinnvoll.
Bei registrierten Benutzern sollte es am besten immer beim Benutzer hinterlegt sein.


Schöne Grüße,

Marcel
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  

mysitelist Impressum Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS