Autor Thema: Kategoriebild auf Verzeichnisseiten dynamisch erzeugen  (Gelesen 8855 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline ms

  • Newbie
  • *
  • Beiträge: 30
  • Lob: 1
    • b?rowalther.de
Kategoriebild auf Verzeichnisseiten dynamisch erzeugen
« 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

Linkback: https://www.shoppilot.net/pf/index.php?topic=1310.0

Offline admin

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 544
  • Lob: 10
Re: Kategoriebild auf Verzeichnisseiten dynamisch erzeugen
« 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

Offline ms

  • Newbie
  • *
  • Beiträge: 30
  • Lob: 1
    • b?rowalther.de
Re: Kategoriebild auf Verzeichnisseiten dynamisch erzeugen
« 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
<!--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
$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 »

Offline ms

  • Newbie
  • *
  • Beiträge: 30
  • Lob: 1
    • b?rowalther.de
Re: Kategoriebild auf Verzeichnisseiten dynamisch erzeugen
« 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...
## 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  ;D

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  ???
« Letzte Änderung: Dezember 15, 2010, 23:20:15 von ms »

Offline ms

  • Newbie
  • *
  • Beiträge: 30
  • Lob: 1
    • b?rowalther.de
Re: Kategoriebild auf Verzeichnisseiten dynamisch erzeugen
« 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


xx
XML Sitemap für Google automtisch erzeugen

Begonnen von admin

0 Antworten
9025 Aufrufe
Letzter Beitrag Mai 27, 2010, 17:02:35
von admin
xx
XML-Sitemap erzeugen (alternative Mehode)

Begonnen von admin

0 Antworten
7300 Aufrufe
Letzter Beitrag August 04, 2016, 17:07:41
von admin
xx
__xid__ auf Verzeichnisseiten

Begonnen von emil

0 Antworten
4393 Aufrufe
Letzter Beitrag Mrz 23, 2003, 14:17:06
von emil
xx
Problem mit Verzeichnisseiten

Begonnen von Lars Gollub

0 Antworten
4321 Aufrufe
Letzter Beitrag September 24, 2003, 00:39:57
von Lars Gollub