Hinweis: ======== Die einzelnen Sequenzen, Codes usw. sind immer mit "#####" vorangestellt und abgeschlossen! Das Beispiel ist unter Windows7-Dateisystem gezeigt! xxxx steht für den eigenen Windowsbenutzernamen. Zeta-Producer muss beendet sein! Anpassung: ========== Öffnen Sie die Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\ActiveObjects\web.mdb" mit Microsoft Access. Öffnen Sie die Tabelle "ArticleStyle". Scrollen Sie herunter bis zum Eintrag "Bestellartikel" in der Spalte "Name". Markieren Sie in dieser Zeile den kompletten Inhalt von "FieldDefs" und ersetzen Sie diesen mit folgendem Code: ##### ##### Schließen Sie die Tabelle wieder und danach Microsoft Access. Die Änderungen wurden jetzt in die web.mdb übernommen. Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\ActiveObjects\template.xml" mit dem Notepad Suchen nach folgendem Inhalt: articlestyle="Bestellartikel" markieren des kompletten Items und ersetzen durch folgenden Inhalt: ##### <$$ public basketWebPageItem public currentArticlePriceFormatted public currentArticlePrice public shopCurrency public shopIncPath public language public currentArticleAttribut sub LoadBasketConfiguration() ' First lets get the current set language ' If nothing set, consider german language = Context.Scope.CurrentProjectFolder.Language2 language = LCase(language) if language = "" or (language <> "en" and language <> "de") then language = "de" end if dim foundItems set foundItems = Context.Scope.CurrentWebProject.GetArticlesByStyleName("Warenkorb / Onlineshop-Konfiguration") if foundItems.Count <= 0 then Context.Scope.Library.CheckAsyncStopProcessing Context.Scope.Library.LogError "Fehler bei Onlineshop-Erstellung. Um einen Onlineshop-Artikel einzubinden, " &_ "müßen Sie zuerst das aktive Objekt ""Warenkorb / Onlineshop-Konfiguration"" auf einer neuen Seite einfügen." else set basketWebPageItem = foundItems(0) shopCurrency = basketWebPageItem.GetValue("Currency") ' Format the Price as told in the configuration. ' This is a little workaround because there is no method for formatting with given special chars currentArticleAttribut = "#data(artikelAttBez)" dim price dim priceDbl priceDbl = Replace("#data(unitPrice)",",",".") SetLocale("en-US") price = FormatNumber(priceDbl,2,-1,0,-1) currentArticlePrice = FormatNumber(priceDbl,2,-1,0,0) currentArticlePriceFormatted = Replace(price, ",", "@") currentArticlePriceFormatted = Replace(currentArticlePriceFormatted, ".", basketWebPageItem.GetValue("currency_comma")) currentArticlePriceFormatted = Replace(currentArticlePriceFormatted, "@", basketWebPageItem.GetValue("currency_thousands")) end if shopIncPath = Context.Scope.CurrentWebProject.GetRelativePathFromTo( _ Context.Scope.CurrentPage.AbsoluteUrlWithoutServer, _ "/media/Scripting/ServerSideScripting/PHP/shop/shop.inc.php") end sub $> <$ LoadBasketConfiguration() $>
<$ if Context.Scope.CurrentArticle.Name <> "" then $>

#data(name)

<$ end if $>
<$ if Context.Scope.CurrentArticle.Values.GetValue("Bild") <> "" then $> #data(Bild, description)
<$end if$>
#data(Beschreibung)

<$ if language="de" then Context.Write("Preis:") else if language="en" then Context.Write("Price:") end if$> <$=currentArticlePriceFormatted$> <$=shopCurrency$>
<$ if language="de" then Context.Write("inkl. MwSt zzgl. Versandkosten") else if language="en" then Context.Write("incl. VAT, excl. Shipping costs") end if$>
<$ if currentArticleAttribut <> "" then $> #data(artikelAttBez)      <$end if$>  #data(quantityUnit)
<$ if language="de" then Context.Write("Zum Warenkorb hinzufügen") else if language="en" then Context.Write("Add to basket") end if$>
#text(ArticleSeparator)]]>
##### Speichern und schließen Sie die Datei template.xml! Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\templates\articletable.php" mit dem Notepad: Suchen nach der Sequenz "" und Austausch mit folgendem Code: ##### foreach($articles as $article) { ?> _['showPosNo']) echo '' . sprintf("%03s", $pos) . ''; ?> _['showArticleNo']) echo '' . $article->no . ''; ?> _['allowEdit']) { ?> quantity ?> text ?> text2 ?> text3 ?> unitPrice) ?> sumPrice) ?> _['allowRemove']) echo '' . 'Entfernen' . ''; ?> dbId = $dbId; $this->id = $id; $this->no = $no; $this->quantity = $quantity; $this->quantityUnit = $quantityUnit; $this->text = $text; $this->text2 = $text2; $this->text3 = $text3; $this->unitPrice = $unitPrice; $this->sumPrice = $unitPrice * $quantity; } /** * Changes the quantity and calculates the sum * @param $newQuantity The new quantity */ function ChangeQuantity( $newQuantity) { $this->quantity = $newQuantity; $this->sumPrice = $newQuantity * $this->unitPrice; } } ##### Speichern und schließen Sie die Datei article.php! Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\classes\model.php" mit dem Notepad: Austausch der Sequenz "function AddArticle(" durch folgenden Code: ##### /** * Adds an article to the session basket * * @param $articleId * @param $articleNo * @param $articleQuantity * @param $articleQuantityUnit * @param $articleText * @param $articleText2 * @param $articleText3 * @param $articlePrice */ function AddArticle( $articleId, $articleNo, $articleQuantity, $articleQuantityUnit, $articleText, $articleText2, $articleText3, $articlePrice) { @ob_start(); if (isset($_SESSION['article_count'])) { $_SESSION['article_count']++; } else { $_SESSION['article_count'] = 1; } $id = $_SESSION['article_count']; if(!is_numeric($articleQuantity) || $articleQuantity <= 0) { $articleQuantity = 1; } $article = new Article( $id, $articleId, $articleNo, $articleText, $articleText2, $articleText3, $articleQuantity, $articleQuantityUnit, $articlePrice); $_SESSION['aitem_'.$id] = $article; } ##### Speichern und schließen Sie die Datei model.php! Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\classes\controller.php" mit dem Notepad: Austausch der Sequenz "case 'sendOrder'" durch folgenden Code: ##### case 'add': Model::AddArticle( $this->request['aid'], $this->request['ano'], $this->request['aqty'], $this->request['aqtyunit'], $this->request['atext'], $this->request['atext2'], $this->request['atext3'], $this->request['aprice']); $url = Configuration::$conf_basketurl; header("Location: $url"); exit; ##### Speichern und schließen Sie die Datei controller.php! Starten Sie nun den Zeta-Producer und öffnen Sie in ihrem Projekt einen Bestellartikel. Hier gibt es nun eine Option "Attribute". Tragen Sie hier z.B. "Größe" ein. Und in den folgenden "Attributen" "XS", "S", "M", "L", "XL", "XXL" Webprojekt komplett neu erstellen und veröffentlichen. Nun gibt es bei diesem Bestellartikel die Auswahl der Größe. Es können bis zu 10 Attributswerte angegeben werden! Bei Klick auf Warenkorb wird der Artikel mit dem ausgewählten Attribut in der Warenkorbsliste angezeigt. Werden keine Attribute angegeben, so werden diese "Leer"-Attribute auch nicht angezeigt!