ACHTUNG: ======== Neues Onlineshopgesetz seit 01.08.2012! Wer seinen Shop abmahnsicher haben möchte benötigt folgende Änderungen im ZP-Shop: 1.) Verlinkung des Textes "inkl MwSt zzgl Versandkosten" auf eine extra erstellte Seite "Versandkosten" 2.) Bestellbutton muss eine der folgenden Texte beinhalten "zahlungspflichtig bestellen", "kaufen" oder "zahlungspflichtigen Vertrag schließen" Beide Punkte sind in folgender Änderung enthalten! 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! +++++++ ist die Eingrenzung fast ganz unten für das Cars-Layout 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: (Hier werden die neuen Optionen im Fenster angepasst) ##### ##### Markieren Sie nun in der gleichen Zeile den kompletten Inhalt von "DynamicSettings" und ersetzen Sie diesen mit folgendem Code: (Hier wird die vertikale Scrollleiste aktiviert) ##### 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 gg== 0 True 0 0 150 iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGPC/xhBQAAAAlwSFlz AAALDAAACwwBP0AiyAAAAAd0SU1FB9gEDw0qAhbnvCMAAALWSURBVDhPnZPJT1NBHMefMf4THhQj IAgRNCwxREKigvHCAZfoQbayqqWlQgEBEfq6UhYpLaRIm5KggJUlgESiNw7IUhYRF6pC0CJrW1kK xX6dVyhgxIuTzLxf3rz55PO+M0PFsZLoAoFkRlSi2KCLK5BTKDXz88XvMvIFXezMvNo7vFxBCi8n JYnLj2SxeQE3Y1IPU9evHqRcrYgWzmNPs5N6lQxmMkzOLsIw/hkvewbwpK0bIkUNMorkSOBkb16O umEMDguPpEQS6U8HWRQYGAj141oMjYxBUVmF8U9fMPV9Fqa5Rdg2HbD/ApjvmL6+CRSrtAgICZsg AJnVBRDQIhhGx5www/Bb5/N5a7uzM/V74yTKK5RYJwsa9a1w8/Beo2ixxPIHgBj8C9BnGHXOrRED ja4eR9y9rBQtkliYCJgJxmDIZTCybdC2a+AC2BhAXT3c3L2XKSExcAHoPwBbJs37ANZIHlU1Ghw9 7mX+LwCzSyq1hhg4AdKlHQOhCB8+GqFQqmDYzqKFGDAWjE3/drArBPBIpSYGJ5gMxOa9gMTERDQ1 6fF1ahotJP1vPxbQ2zeInPt5GBzeCnF5AyipqMYxTx8LA3BmsEH2+k3/AFgsFjpedIHD4UIskYIc NEREXEI2AfQO7gLKqzTw9PG3UIUC4SIDcJC9ZA5LR0cn4uLicSs6GibTLGJJPb9kRdSVa+jpG3Ea WIlBabUWJ88EL1Kc9HsNWl0durpfw2Z3gM/nIzklBew0LtK46WBzeUi+zUZMfMIuwAYoNI3wDQq1 MFfiQGVldZisVFHAzczqFUjkK0q1Dg3N7aBlpRg3TuNieASSUu9i1mqHyWyDZY2EqH2G0yEX5nYu lavw8zt1SCyWB4nk5enSMoU+v1C8UKZUO3RPm9H5qgcLZPEq+dUyrR5+Iecn/gLs9yKr4IHHQ6Es llx7DScjdzKvSOzwDQ6d8T8XfvY3wXCEv8JNg/QAAAAASUVORK5CYII= ##### Scrollen Sie herunter bis zum Eintrag "Warenkorb / Onlineshop-Konfiguration" in der Spalte "Name". Markieren Sie in dieser Zeile den kompletten Inhalt von "FieldDefs" und ersetzen Sie diesen mit folgendem Code: (Hier werden die neuen Optionen im Fenster angepasst) ##### ##### Schließen Sie die Tabelle wieder und danach Microsoft Access. Die Änderungen wurden jetzt in die web.mdb übernommen. (Ab hier werden die neuen Optionen im Programmcode eingebunden) Öffnen Sie nun die 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 shopQuestion public shopPorto public shopIncPath public language public currentArticleAttribut public currentPictureURL public currentArticleTable public currentPictureWidth public currentPictureHight public currentArticleNo public currentAllowNews public currentQuestion public currentEmailCommendation 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") shopQuestion = basketWebPageItem.GetValue("Question") shopPorto = basketWebPageItem.GetValue("PortoPage") ' 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)" currentPictureURL = "#data(pictureURL)" currentArticleTable = "#data(allowArticleTable)" currentPictureWidth = "#data(pictureWidth)" currentPictureHight = "#data(pictureHight)" currentArticleNo = "#data(articleNo)" currentAllowNews = "#data(allowNews)" currentQuestion = "#data(EmailQuestion)" currentEmailCommendation = "#data(EmailCommendation)" 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 currentAllowNews = "1" then $>
<$else$>
<$ end if $> <$ if Context.Scope.CurrentArticle.Name <> "" then $>

#data(name)

<$ end if $> <$ if currentAllowNews = "1" then $>
<$ end if $> <$ if currentArticleTable = "1" then $>
<$ if currentPictureWidth <> "" then $>
<$ if Context.Scope.CurrentArticle.Values.GetValue("Bild") <> "" then $> <$ if currentPictureURL <> "" then $><$end if$> #data(Bild, description) <$ if currentPictureURL <> "" then $><$end if$> <$end if$>
<$else$>
<$ if Context.Scope.CurrentArticle.Values.GetValue("Bild") <> "" then $> <$ if currentPictureURL <> "" then $><$end if$> #data(Bild, description) <$ if currentPictureURL <> "" then $><$end if$> <$end if$>
<$end if$> <$else$> <$ if currentPictureWidth <> "" then $> <$ if Context.Scope.CurrentArticle.Values.GetValue("Bild") <> "" then $> <$ if currentPictureURL <> "" then $><$end if$> #data(Bild, description) <$ if currentPictureURL <> "" then $><$end if$> <$end if$> <$else$> <$ if Context.Scope.CurrentArticle.Values.GetValue("Bild") <> "" then $> <$ if currentPictureURL <> "" then $><$end if$> #data(Bild, description) <$ if currentPictureURL <> "" then $><$end if$> <$end if$> <$end if$> <$end if$> <$ if currentArticleTable = "1" then $>
<$end if$> #data(Beschreibung)
<$ if currentArticleTable = "1" then $>
<$end if$> <$ if currentQuestion = "1" then $> <$ if currentArticleTable = "1" then $>      <$else$>
<$end if$> <$end if$> <$ if currentEmailCommendation = "1" then $> <$ if currentArticleTable = "1" then $>  <$else$>
<$end if$> <$ end if $> <$ if currentQuestion <> "" or currentEmailCommendation = "1" then $>
<$ end if $> <$ if currentArticleTable = "1" then $>
<$end if$> <$ if language="de" then Context.Write("Preis:") else if language="en" then Context.Write("Price:") end if$> <$=currentArticlePriceFormatted$> <$=shopCurrency$>
<$ if language="de" then $>inkl. MwSt zzgl. Versandkosten<$ end if$> <$ if language="en" then $>incl. VAT, excl. Shipping costs<$ end if$>

<$ if currentArticleNo <> "" then $>[Art-Nr: #data(articleNo)]    <$ if currentAllowNews = "1" then $>
<$ end if $><$ end if $> <$ if currentArticleAttribut <> "" then $> #data(artikelAttBez)      <$ if currentAllowNews = "1" then $>
<$ end if $><$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$>

<$ if currentArticleTable = "1" then $>
<$end if$> <$ if currentAllowNews = "1" then $>
<$ end if $>
#text(ArticleSeparator)]]> ##### Suchen nach folgendem Inhalt: articlestyle="Warenkorb / Onlineshop-Konfiguration" markieren des kompletten Items und ersetzen durch folgenden Inhalt: ##### <$ if Context.Scope.CurrentArticle.Name <> "" then $>#data(name)<$ end if $> #text(PHP_ArticleStandardBegin) <$ if Context.Scope.CurrentPage.FileType = ".php" then $> <$$ ' BEGINN - Make shop configuration public PhpConfigFilePath public PhpShopIncFilePath sub CreateShopConfig() dim configFileName configFileName = "config.inc.php" dim configFilePath configFilePath = Context.Scope.Library.CombinePath( _ Context.Scope.Library.ExpandDollarMacros("$(WebOutputBaseFolder)"), _ "/media/Scripting/ServerSideScripting/PHP/shop" ) configFilePath = Context.Scope.Library.CombinePath( configFilePath, configFileName ) configFilePath = Replace( configFilePath, "/", "\") dim configFolderPath configFolderPath = Context.Scope.CurrentWebProject.GetPathFromFullFilePath( configFilePath ) dim fso set fso = CreateObject("Scripting.FileSystemObject") if not fso.FolderExists( configFolderPath ) then CreateFolder( configFolderPath ) end if dim configFileRelativePathV configFileRelativePathV = "/media/Scripting/ServerSideScripting/PHP/shop/" & configFileName dim configFilePathV configFilePathV = Context.Scope.CurrentWebProject.GetRelativePathFromTo( _ Context.Scope.CurrentPage.VirtualPath, _ "/media/Scripting/ServerSideScripting/PHP/shop/" & configFileName ) dim configFileRelativePathFtpV configFileRelativePathFtpV = _ Context.Scope.CurrentWebProject.FtpServerFolderName & _ Context.Scope.Library.LTrimEx(configFileRelativePathV, "/") dim configFilePathFtpV configFilePathFtpV = Context.Scope.Library.CombinePathV( _ Context.Scope.CurrentWebProject.FtpServerFolderName, _ configFilePathV ) configFilePathFtpV = Context.Scope.Library.LTrimEx(configFilePathFtpV, "/") configFilePathV = "/" & Context.Scope.Library.LTrimEx(configFilePathV, "/") dim file set file = fso.CreateTextFile(configFilePath, true) file.WriteLine("") file.Close set file = nothing ' Add to publishing chain. Context.Scope.CurrentWebProject.NotifyFileCreated( configFilePath ) set fso = nothing ' The path for the PHP is somewhat different. PhpConfigFilePath = Context.Scope.Library.LTrimEx(configFilePathV, "/") PhpShopIncFilePath = Context.Scope.CurrentWebProject.GetRelativePathFromTo( _ Context.Scope.CurrentPage.AbsoluteUrlWithoutServer, _ "/media/Scripting/ServerSideScripting/PHP/shop/shop.inc.php") end sub ' END - Make shop configuration $> <$ CreateShopConfig() $> "); ?> <$ else Context.Scope.Library.CheckAsyncStopProcessing Context.Scope.Library.LogError "Falschen Dateityp vergeben. Bitte vergeben Sie in den Seiteneigenschaften dieser Seite den Dateityp "".php""" end if $> #text(PHP_ArticleStandardEnd) #text(ArticleSeparator) <$ ' Special workaround to get out some http headers before content is sent to the client dim text text = """""" Context.Scope.AddScriptToRunOnFinishedPage( "<" & "$Context.Write(" & text & " & vbCrLf & Context.Scope.RenderedText )$" & ">" ) $>]]> ##### 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 'add'" 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; ##### Austausch der Sequenz "case 'sendOrder'" durch folgenden Code: ##### case 'sendOrder': $error = ShopManager::ValidateAddressFormInput( $this->request); // If no error occurred send the order if(empty($error)) { ShopManager::SendOrderEmail( $this->request, Model::GetArticles()); if ($this->request['payment_method'] == 'paypal') { $this->DisplayPayPal( $this->request, $view, Model::GetArticles()); } else { session_unset(); $view->SetTemplate('ordersent'); } } else { $this->AttachAddressFormView( $this->request, $view, $error); $this->DisplayBasket( $this->request, $view, false, false, 'sendOrder'); } break; ##### Hinzufügen folgender Funktion in die gleiche Datei: ##### /** * Displays the PayPal-Callsite * * @param Array * @param View * @param Articles. */ public function DisplayPayPal( $request, $view, $articles) { $view->SetTemplate('paypalordersent'); foreach($articles as $article) { $total_sum += $article->sumPrice; } if (Configuration::$conf_shippingcosts > 0) { $total_sum += Configuration::$conf_shippingcosts; } $view->Assign('paypal_cmd', "_xclick" ); $view->Assign('paypal_business', Configuration::$conf_shopemail ); $view->Assign('paypal_item_name', Configuration::$conf_shopname . ' - Bestellung vom ' . date( 'd.m.Y H:i' ) . ' fuer ' . trim( $request['name'] ) ); $view->Assign('paypal_amount', $total_sum ); $view->Assign('paypal_currency_code', Configuration::$conf_currency ); } ##### Speichern und schließen Sie die Datei controller.php! Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\classes\shopmanager.php" mit dem Notepad: Austausch der Sequenz "public function GetPaymentMethodText" durch folgenden Code: ##### public function GetPaymentMethodText( $paymentMethod) { // Translation not implemented yet. switch($paymentMethod) { case 'paypal': return 'PayPal'; case 'delivery': return 'Nachnahme'; case 'advance': return 'Vorkasse (Überweisung)'; case 'bill': return 'Rechnung'; case 'cash': return 'Barzahlung'; default: return 'Vorkasse (Überweisung)'; } } ##### Austausch der Sequenz "public function AssignShopConfiguration" durch folgenden Code: ##### public function AssignShopConfiguration( $view) { $view->Assign('conf_shopName', Configuration::$conf_shopname); $view->Assign('conf_shopEmail', Configuration::$conf_shopemail); $view->Assign('conf_shippingCosts', Configuration::$conf_shippingcosts); $view->Assign('conf_currency', Configuration::$conf_currency); $view->Assign('conf_curr_comma', Configuration::$conf_curr_comma); $view->Assign('conf_curr_thousands', Configuration::$conf_curr_thousands); $view->Assign('conf_curr_decimals', Configuration::$conf_curr_decimals); $view->Assign('conf_payment_advance',Configuration::$conf_payment_advance); $view->Assign('conf_payment_bill', Configuration::$conf_payment_bill); $view->Assign('conf_payment_cash', Configuration::$conf_payment_cash); $view->Assign('conf_payment_delivery', Configuration::$conf_payment_delivery); $view->Assign('conf_payment_paypal', Configuration::$conf_payment_paypal); $view->Assign('conf_page_agb', Configuration::$conf_page_agb); $view->Assign('conf_basketUrl', Configuration::$conf_basketurl); } ##### Speichern und schließen Sie die Datei shopmanager.php! Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\templates\default.php" mit dem Notepad: Ersetzen des kompletten Inhalts mit folgendem Code: #####
_['action'] == "generateOrder") { echo '

Bestellung aufgeben

'; if (!empty($this->_['error'])) { echo '

Bitte füllen Sie das Formular vollständig aus.

'; } } if ( $this->_['action'] == "generateOrder" || $this->_['action'] == "sendOrder" ) { echo $this->_['addressForm']; } if( count( $this->_['articles'] ) > 0 ) { echo $this->_['articletable']; } else { echo '

Es befinden sich keine Artikel in Ihrem Warenkorb.

'; } if ( !empty($this->_['error']) ) { echo '

 

' . $error . '

'; } if ( $this->_['action'] == "generateOrder" || $this->_['action'] == "sendOrder" ) { ?>

_['articles'] ) > 0 ) { ?>

Warenkorb aktualisieren

 

Adresse eingeben und Bestellung absenden

##### Speichern und schließen Sie die Datei default.php! Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\templates\addressform.php" mit dem Notepad: Ersetzen des kompletten Inhalts mit folgendem Code: ##### _['error']) ) { echo '

 

' . $this->_['error'] . '

'; } ?>
Name:
E-Mail-Adresse:
Anschrift:
Gewünschte Zahlungsweise: _['conf_payment_paypal']) { echo('_['form_input']['payment_method'] == 'paypal') echo 'checked="checked"'; echo('>PayPal
'); } if($this->_['conf_payment_advance']) { echo('_['form_input']['payment_method'] == 'advance') echo 'checked="checked"'; echo('>Vorkasse (Überweisung)
'); } if($this->_['conf_payment_bill']) { echo('_['form_input']['payment_method'] == 'bill') echo 'checked="checked"'; echo('>Rechnung
'); } if($this->_['conf_payment_cash']) { echo('_['form_input']['payment_method'] == 'cash') echo 'checked="checked"'; echo('>Barzahlung
'); } if($this->_['conf_payment_delivery']) { echo('_['form_input']['payment_method'] == 'delivery') echo 'checked="checked"'; echo('>Nachnahme'); } ?>
_['form_input']['acceptagb']) echo 'checked="checked"'; ?>/> Ich akzeptiere Ihre AGB, den Hinweis zu meinem Widerrufsrecht habe ich verstanden.
##### Speichern und schließen Sie die Datei addressform.php! Kopieren der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\templates\ordersent.php" und umbenennen nach "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\templates\paypalordersent.php", dann mit Notepad öffnen und mit folgendem Code ersetzen: #####

Vielen Dank!

Ihre Bestellung wurde abgesendet.

Sie erhalten umgehend eine Bestellbestätigung per E-Mail.


Bitte bezahlen Sie gleich hier direkt über PayPal:

##### Speichern und schließen Sie die Datei paypalordersent.php! Wer in seinem Onlineshop-Warenkorb auch noch die Positon und die Artikelnummer anzeigen lassen möchte, muss noch folgendes tun: Öffnen der Datei "C:\Users\xxxx\Documents\Zeta Producer 10\Stationary\DEU\Scripting\ServerSideScripting\PHP\shop\classes\controller.php" mit dem Notepad: Suchen nach folgender Sequenz: ##### public function DisplayBasket( $request, $view, $allowRemove, $allowEdit, $nextActionPage) { $view->SetTemplate('default'); $articles = Model::GetArticles(); $articleTable = new View(); $articleTable->SetTemplate('articletable'); $articleTable->Assign('articles', $articles); $articleTable->Assign('allowRemove', $allowRemove); $articleTable->Assign('allowEdit', $allowEdit); $articleTable->Assign('showPosNo', false); $articleTable->Assign('showArticleNo', false); $this->shopmanager->AssignShopConfiguration($articleTable); $view->Assign('nextAction', $nextActionPage ); $view->Assign('articletable', $articleTable->LoadTemplate()); $view->Assign('articles', $articles); } ##### Um die Position anzuzeigen den Eintrag $articleTable->Assign('showPosNo', false); auf $articleTable->Assign('showPosNo', true); ändern. Um die Artikelnummer anzuzeigen den Eintrag $articleTable->Assign('showArticleNo', false); auf $articleTable->Assign('showArticleNo', true); ändern. Speichern und schließen Sie die Datei controller.php! ++++++++++++++++++++++++++++++++++++ Anpassung der Warenkorbanzeig in Cars-Layout-Derivaten: Suchen im Cars-Layout-Derivat nach der Datei /templates/default.html und mit notepad öffnen. Suchen nach folgendem Inhalt: ##### <$ end if $> ##### und mit diesem ersetzen: #####
<$ if LCase(Context.Scope.CurrentPage.GetInheritedAttribute("show_breadcrumb").Value = "true") then $> <$ end if $>
##### Nun die Datei wieder speichern. Nun dem Projekt ein anderes Layout zuordnen und nach Komplettberechnung wieder das eigene Layout zuordnen. Jetzt sieht das in der Vorschau dann ungefähr so aus: Sie befinden sich hier: Demoseite Display(); ?> Und in der Veröffentlichung: Sie befinden sich hier: Demoseite Mein Warenkorb: 0 Artikel (0,00 EUR) Falls man im News-Bereich einen Bestellartikel als oberste Stelle haben möchte, dann macht man folgendes: Man muss auf jeden Fall als ersten Artikel einen leeren Newsartikel hinzufügen! Danach kann man einen Bestellartikel hinzufügen. Damit dieser nun korrekt angezeigt wird folgende Datei mit notepad öffnen: /_media/styles.css Hier sucht man diesen Eintrag: ##### /***** NEWS *****/ #news { float: right; margin: 0; padding: 0; width: 180px; position: relative; z-index: 1; } #news-edge { margin: 0; padding: 0; width: 13px; height: 13px; position: absolute; left: 0; top: 0; z-index: 3; } #news-bottom-edge{ margin: 0; padding: 0; width: 13px; height: 13px; position: absolute; left: 0; bottom: 0; z-index: 4; } .newsbox { margin: 0; padding: 0; background-color: #text(newsarticle-background-color); background-image: url(#text(newsarticle-background-image)); background-repeat: repeat-x; } .newstext { margin: 0; padding: 10px 5px 20px 10px; font-size: #text(newstext-font-size); color: #text(newstext-font-color); } .newstext p { margin: 0 0 #text(news-paragraph-spacing) 0; padding: 0; } ##### Und ändert folgendes ab: ##### .newstext { margin: 0; padding: 0px 5px 1px 10px; font-size: #text(newstext-font-size); color: #text(newstext-font-color); } ##### Also nur die Zeile "padding" innerhalb ".newstext {" Nun die Datei wieder speichern. ++++++++++++++++++++++++++++++++++++ Starten Sie nun den Zeta-Producer und öffnen Sie ihr Projekt. Zur korrekten Übernahme wählen Sie bitte erst ein Standardlayout und wechseln dann wieder auf Ihr eigenes Layout. Wählen Sie anschließend Projekt komplett erstellen. Dadurch werden alle Änderungen übernommen und das Projekt wirklich komplett neu erstellt! Bei der ersten Veröffentlichung ebenfalls das Projekt komplett veröffentlichen! Öffnen Sie nun in Ihrem Projekt den Warenkorb-Artikel. Hier gibt es nun folgende neue Optionen: "E-Mail-Adresse für Artikelanfragen" Diese Adresse wird bei einer Email-Artikelanfrage eines Bestellartikels verwendet "Zahlung per PayPal erlauben" Nach "kaufen" gibt es im Emailbestätigungsfenster einen PayPal-Link-Button der direkt zur Paypal-Bezahlseite linkt mit dem aktuellen Warenkorbwert. "Barzahlung erlauben" Auf besonderen Wunsch "Versandkosten-Seite:" Pflichtfeld. "inkl. MwSt zzgl. Versandkosten" linkt nun auf diese Seite Öffnen Sie nun in Ihrem Projekt einen Bestellartikel. Hier gibt es nun folgende weitere Optionen: "Bildbreite" Geben Sie hier die Anzeigebreite in Pixel ein. Steht nichts drin wird die Bild-Standardbreite verwendet! "Bildhöhe" Geben Sie hier die Anzeigehöhe in Pixel ein. Ist "Bildbreite" leer wird die Bild-Standardhöhe verwendet! "Bild-URL" Geben Sie hier ihre gewünschte URL ein. Bei URL-Inhalt wird das Bild mit der URL verknüpft. "Bild und Beschreibung zweispaltig" Standard = aktiviert => Bild links, Beschreibung rechts deaktiviert => Bild oben, Beschreibung drunter "Als Newsartikel darstellen" Der Hintergrund wird wie ein Newsartikel dargestellt, Artikelnummer, Attribute und Menge werden untereinander gelistet. "Emailanfrage" aktiviert gibt es einen Link "Artikelanfrage". Klickt man drauf geht der Emailclient mit Anfrage auf "Empfehlung an einen Freund per Email" aktiviert gibt es einen Link "Emailempfehlung". Klickt man drauf geht der Emailclient mit Linkverweis des Artikels auf. "Attributsbezeichnung" Hier kann dem Artikel ein Attribut hinzugefügt werden, z.B.: Größe. Ist dieses Feld leer wird keine Auswahlbox angezeigt! "Attribut 1-10" Hier können bis zu 10 verschiedene Attribute angegeben werden, die dann in einer Auswahlbox erscheinenen. Z.B.: "S", "M", "XL" usw. Zusätzlich sind für einen korrekten Onlineshop noch diverse rechtliche Texte nötig. Diese habe ich gesondert als Worddateien mit aufgeführt: AGB.doc Impressum.doc Versandkosten.doc Widerrufsbelehrung.doc AGB als PDF - Anleitung.doc die darin enthalten TAGS <...> sind mit Ihren Echtdaten auszufüllen! Achten Sie auf die korrekte Übernahme der Fettschreibung! In die Bestellbestätigungsemail gehört auch noch das Impressum und die Widerrufsbelehrung. Diese können Sie im Warenkorb als Nachtext aus den Vorgaben hineinkopieren!