Shopsystem ShopPilot

ShopPilot => ShopPilot Enterprise => Thema gestartet von: Joachim am November 30, 2005, 16:38:07

Titel: Text aus "externen" Quellen
Beitrag von: Joachim am November 30, 2005, 16:38:07
Hallo,
wir haben als Datenbankquelle (WaWi) dBase. dBase hat den Nachteil, daß keine lange Texte in den Feldern stehen können. Da es aber sehr lange Beschreibungen als *.txt in einem Verzeichnis für jeden einzelnen Artikel gibt und die auf den Detailseiten erscheinen sollen, suchen wir eine Möglichkeit zur Platzierung. Wir stellen uns vor, daß in einem dBase-Feld nur der Pfad zur *.txt steht (wie bei Artikelbildern) und SP das durch einen Indentifier ersetzt.
Ich weiß ja mittlerweile, daß SP ein sehr offenes System ist, aber gibt es da eine Lösung?
Titel: ...
Beitrag von: hop am Dezember 01, 2005, 21:05:39
Hallo,

Zitat
Ich weiß ja mittlerweile, daß SP ein sehr offenes System ist, aber gibt es da eine Lösung?

Ich versuch mal ;-)

<!--spmacro:module(datei)
sub text {
   my $datei = ssp::get_var_article("DATEI",$_[0]);
   open(TEXT, "< $ssp::catalog_home/$datei);
   my @text = <TEXT>;
   close(TEXT);
   main::mprint(join(" ",@text));
}
-->

In der benutzerdefinierten Variable DATEI soll der Dateiname stehen. Der Pfad ist immer relativ zum Katalogverzeichnis. Am besten nimmt man ein benutzerdefiniertes Feld vom Typ Datei, dann wird die Datei bei Änderungen automatisch hochgeladen.

Bei der Ausgabe kann man das Zeilenendezeichen noch bestimmen. Hier ist das Leerzeichen " ".
   main::mprint(join(" ",@text));
Wenn man statt dessen auch einen Zeilenumbruch in HTML haben möchte, sähe das so aus:
   main::mprint(join("
",@text));
Oder eine HTML Zeilenumbruch und ein echter Zeilenumbruch
   main::mprint(join("
\n",@text));

Ich hab's nicht vollständig getestet, hoffe es funktioniert so.

Gruss hop

PS: Aufruf mit __datei::text__ als Identifier.
Titel:
Beitrag von: Joachim am Dezember 01, 2005, 21:40:52
Vielen Dank hop,
ich werde das in Kürze ausprobieren (lassen).
Und wenns klappt, kommen hinter dem Logo von Shoppilot auf unserer zukünftigen Seite 3 Sterne :))
Titel:
Beitrag von: Joachim am Dezember 02, 2005, 19:28:55
Geht leider nicht.
Benutzer-Feld mit dem Namen DATEI eingerichtet
Das dbaseFeld diesem zugeordnet.
Code eingebaut auf Detailseite
Identifier eingefügt.

Fehler:
This Error has occured:
parsing error 123-6 in ./wsdetail_w.htm: Can't find string terminator '"' anywhere before EOF at (eval 2) line 7, <./wsdetail_w.htm> line 175.
Titel: ...
Beitrag von: ahe am Dezember 02, 2005, 19:53:15
Hallo Herr Schulz,

in hop's Code hat sich ein Tippfehler eingeschlichen.

Es muss nicht heissen:
open(TEXT, "< $ssp::catalog_home/$datei);sondern:
open(TEXT, "<$ssp::catalog_home/$datei");
Das sollte den Fehler schon beheben.
Titel:
Beitrag von: Joachim am Dezember 02, 2005, 20:09:53
Hallo ahe,
ich kanns kaum glauben - 9 nette kleine Code-Zeilchen -
und es geht. Ich bin begeistert!! :))
Schönes Wochenende
Titel:
Beitrag von: ahe am Dezember 02, 2005, 20:20:14
Ja, manchmal geht es einfacher als man erwarten würde ;)
Ihnen ebenfalls ein schönes Wochenende.
Titel:
Beitrag von: Joachim am Dezember 03, 2005, 14:10:46
Zitat
Original von Joachim Schulz
Hallo,
wir haben als Datenbankquelle (WaWi) dBase.
dBase hat den Nachteil, daß keine lange Texte in den Feldern stehen können.
Da es aber sehr lange Beschreibungen als *.txt in einem Verzeichnis für jeden einzelnen Artikel gibt
und die auf den Detailseiten erscheinen sollen,
suchen wir eine Möglichkeit zur Platzierung.
Wir stellen uns vor, daß in einem dBase-Feld nur der Pfad zur *.txt steht
(wie bei Artikelbildern) und SP das durch einen Indentifier ersetzt.

Ich will nur noch zum guten Abschluss für alle erwähnen,
dass die Lösung von Hop auch für html-Dateien gilt.
Allerdings nicht das von Word produzierte Müll-html,
(auch *.doc oder *.rtf eignen sich nicht)
sondern das einzig und allein reine html.