Inhaltsverzeichnis

Oxid

Ab 15.08.2022 neue Lizenz: nicht mehr kostenlos (CE), sondern min. 111 EU/Monat.

2023: Download der letzten freien Open Source Versionen: https://github.com/proudcommerce/oxid-downloads

Gutscheincodes

Images/Bilder

Meine Änderungen

Datenbank-Schema

Testinstallation, bei der die Namen der CSS-Elemente angezeigt werden

Tutorials (Liste)

Klassen-Dok/Hierarchie

Verwendete Komponenten:

Tips&Tricks

Ansicht aller Module/Elemente im Layout: http://oxid-tpl-debug.stahlwarenhaus-hebsacker.de/azure/

Grafische Hierarchie der Klassen

Tutorials/Understanding OXID eShop Template Hierarchy and Override System

Blog: http://planet.oxidforge.org/

Build an Infinite Scroll List – Implementation

Elemente ausblenden (& Angebote auf Startseite)

Fehlermeldungen anzeigen

Fehler/Exceptions ansehen: Exceptions werden mitgeloggt in: /var/www/webserver/oxid/log/EXCEPTION_LOG.txt

Quelle1):

Diese finden Sie bis Shopversion 4.1.6 im Hauptordner Ihres Shops. In späteren Versionen liegt diese Datei mit dem Namen „EXCEPTION_LOG.txt“ bzw. „oxideshop.log“ im Shop-Unterverzeichnis „log“. Diese Datei erfordert zwingend Schreibrechte.

Fügen Sie vor der Zeile

    } catch( oxSystemComponentException $oEx ) {
    bitte folgenden Absatz ein:
    } catch (Exception $oEx) {
    dumpvar($oEx);
    die();

Der Abschnitt sieht dann wie folgt aus:

    try {
    $this->_process( $sClass, $sFunction );
    } catch (Exception $oEx) {
    dumpvar($oEx);
    die();
    } catch( oxSystemComponentException $oEx ) {

Stellen Sie nach der Fehlersuche unbedingt die Sicherung dieser Datei wieder her!

Nun sollten Sie eine Fehlermeldung sehen, anhand dieser wir das Problem besser einschätzen können.

Datenbankdesign

Tutorials/Getting, updating and storing database data

Quelle2) sehr gut

Model = Datenbanktabelle

Ein Model besitzt in der Regel eine dazugehörige Datenbanktabelle. Beispiel die Datenbanktabelle oxarticles wird dem Model /application/models/oxarticle.php zugeordnet.

Verknüpfungstabellen

Zusätzlich gibt es eine Vielzahl von Verknüpfungstabellen. Die Verknüpfungstabellen enthalten meist eine “2” innerhalb ihres Datenbanktabellennamens z.B. oxobject2category.

Datenbank Views

Datenbank Views werden innerhalb OXID eShops verwendet um z.B. unterschiedliche Sprachen abzubilden.

VIEWs sind Abfragen, die in der Datenbank als Objekt fest gespeichert sind. Sie können als virtuelle Tabellen verstanden werden, deren Inhalt und Struktur auf anderen Tabellen oder Views basieren, und können in (fast) jedem SELECT-Befehl anstelle einer „echten“ Tabelle verwendet werden.

Quelle: Wikibooks – Erstellen von Views

Datenverarbeitung

Die Datenverarbeitung läuft über das jeweilige Model der Datenbanktabelle.

Zum Auslesen der Daten instanziiert man die Modelklasse über das OXID Framework und lädt über die OXID den Datensatz in der Datenbanktabelle. Beispiel: Artikel laden

$product = oxNew( 'oxarticle' ); // creating model's object
$product->load( 'demoId' ); // loading data

Beispiel: Daten ausgeben

//getting some informations
echo $product->oxarticles__oxtitle->value;
echo $product->oxarticles__oxshortdesc->value;

Beispiel: Neuen Datensatz speichern

$product = oxNew( 'oxarticle' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();

Beispiel: Datensatz aktualisieren

$product = oxNew( 'oxarticle' );
$product->load( 'demoId' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();

$product = oxNew( 'oxarticle' );
$product->setId( 'demoId' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();

Config

List of Config options

Eigene Module entwickeln

Bestehende Klassen werden durch eigenen überladen (overload).

Tutorial: http://wiki.oxidforge.org/Tutorials

Einführung http://blog.oxid-esales.com/2009/02/how-extend-oxid-eshop-with-modules-part-1/

phpmagazin http://phpmagazin.de/Module-f%C3%BCr-PHP-basierte-E-Commerce-Systeme-schreiben-4487.html

Tutorials/Understanding OXID eShop Template Hierarchy and Override System http://wiki.oxidforge.org/Tutorials/How_template_hierarchy_and_override_system_works

Admin: menu.xml

Menupunkte hinzufügen/ändern

http://www.commodule.de/blog/allgemein/oxid-admin-menue/

Eigene Admin-Seite erstellen

http://www.einscommerce.com/eine-oxid-eshop-admin-seite-erstellen-oxid-eshop-4-7/

Programmierung

Quelle3)

The OXID eShop architecture is based on MVC patterns. To implement models, active record pattern is used. So in general, each model class is linked with a database table. For example, the oxArticle model is linked with the oxarticles table, oxorder with the oxorders table etc. All models are stored in the directory application/models (from OXID eShop v.5.0 and 4.7 on). Let’s take one of them, for example the oxArticle model, and try to fetch the product (with the ID ‘demoId’) data from database.

$product = oxNew( 'oxarticle' ); // creating model's object
$product->load( 'demoId' ); // loading data
//getting some informations
echo $product->oxarticles__oxtitle->value;
echo $product->oxarticles__oxshortdesc->value;

Magic getters are used to get models attributes; they are constructed in this approach:

$model->tablename__columnname->value;

To set data to a model and store it, database magic setters (with the same approach as magic getters) are used:

$product = oxNew( 'oxarticle' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();

In this example the new record will be inserted into the table. To update an information, we have to load the model, set the new data and call the save()-method:

$product = oxNew( 'oxarticle' );
$product->load( 'demoId' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();

There are other ways to do the same - without loading the data - just simply setting the ID with the setId()-method:

$product = oxNew( 'oxarticle' );
$product->setId( 'demoId' );
$product->oxarticles__oxtitle = new oxField ( 'productTitle' );
$product->oxarticles__oxshortdesc = new oxField( 'shortdescription' );
$product->save();

In this example, it will be checked if this ID exists and if so, the record in the database will be updated with the new record.

Artikeldetails aus Warenkorb auslesen

Quelle4)

Oxid Source: Anbei ein Ansatz zum Auslesen von Artikeldetails aus dem Warenkorb…

    $basket = oxSession::getInstance()->getBasket();
    $oBasket = $basket->getContents();
    foreach ( $oBasket as $oBasketItem ) {
    $oBasketItem->getProductId();
    //usw.
    }  

oxid 4.9x Invoice PDF Umlautausgabe (Filename)

Quelle5)

Oxid Source: Folgendes in invoicepdforder_overview.php unterhalb von createPDF(){…} einfügen.

    public function makeValidFileName($sFilename)
    {
    $sFilename = preg_replace(‘/[\s]+/’, ‘_’, $sFilename);
    $sFilename = preg_replace(‘/[^a-zA-Z0-9_\.-äöüÄÜÖß]/’, ”, $sFilename);

    return str_replace(‘ ‘, ‘_’, $sFilename);
    }

User einer bestimmten Benutzergruppe abfragen*

MySQL: Kundengruppe “Noch nicht bestellt” (ID: ‘oxidnotyetordered’):

    SELECT * FROM oxuser WHERE oxid IN (SELECT oxobjectid FROM oxobject2group WHERE oxgroupsid = ‘oxidnotyetordered’)

Artikeln nachträglich ein Gewicht hinzufügen*

MySQL: Mit folgendem Befehl können Sie Artikeln einer bestimmten Kategorie nachträglich ein Gewicht hinzufügen:

    UPDATE oxarticles SET oxweight = 0
    where oxparentid = “” and oxid IN (
    SELECT oxobjectid from oxobject2category
    where oxcatnid = ‘KATEGORIEID‘
    ) 

Artikel einer Kategorie löschen*

MySQL:

    DELETE FROM oxarticles
    WHERE oxid IN (
    SELECT oxobjectid
    FROM oxobject2category
    WHERE oxcatnid = ‘KATEGORIEID‘
    )

Mit Smarty rechnen

Smarty:

    [{math assign=”ox_ek” equation=”(x-y)”
    x=$product->oxarticles__oxtprice->value
    y=$product->oxarticles__oxprice->value }]
    [{ $ox_ek|number_format:”2″}]

php <-> Smarty – Datenaustausch

Smarty:

    [{assign var=wasauchimmer value=$Price->getBruttoPrice()}]
    [{php}]
    $wasauchimmer=& $this->get_template_vars(‘wasauchimmer’);
    /*jetzt ist die Variable $wasauchimmer in php und kann verarbeitet werden*/

    $ergebnis_der_verarbeitung = $xxxxxyyyyyyzzzzz + $wasauchimmer

    /*jetzt könnte die Variable $ergebnis_der_verarbeitung wieder an Smarty*/
    $oSmarty->assign(“ergebnis”, $ergebnis_der_verarbeitung);

    [{/php}]
    /*Ergebnis in Smarty ausgeben*/
    [{$ergebnis}]

Einfache SQL-Abfrage, ob sich die selben Benutzer mehrfach angemeldet haben

Mit folgendem SQL-Statement kann man Merfachaccounts mit gleichem Nachnamen und PLZ aus der Datenbank auslesen:

SELECT oxuser.oxfname, oxuser.oxlname, oxuser.oxstreet, oxuser.oxstreetnr, oxuser.oxzip, oxuser.oxcity, oxuser.oxboni
FROM oxuser, (
SELECT oxlname, oxzip
FROM oxuser
GROUP BY oxlname, oxzip
HAVING COUNT( * ) >1
) AS doubles
WHERE oxuser.oxlname = doubles.oxlname
AND oxuser.oxzip = doubles.oxzip
ORDER BY oxuser.oxlname, oxuser.oxzip

Admin: Zuerst “alle” Oxid-Bestellungen anzeigen*

Quelle6)

Oxid Source: Folgendes in der order_list.php (oxid 4.87) einfügen/ersetzen:

    public function render()
    {
    parent::render();

    $aFolders = $this->getConfig()->getConfigParam( ‚aOrderfolder‘ );
    $sFolder  = oxConfig::getParameter( „folder“ );
    // first display new orders
    if ( !$sFolder && is_array( $aFolders )) {
    $aNames = array_keys( $aFolders );
    $sFolder = $aNames[-1];
    }

    $aSearch    = array( ‚oxorderarticles‘ => ‚ARTID‘, ‚oxpayments‘ => ‚PAYMENT‘);
    $sSearch    = oxConfig::getParameter( „addsearch“ );
    $sSearchfld = oxConfig::getParameter( „addsearchfld“ );

    $this->_aViewData[„folder“]       = $sFolder ? $sFolder : -1;
    $this->_aViewData[„addsearchfld“] = $sSearchfld ? $sSearchfld : -1;
    $this->_aViewData[„asearch“]      = $aSearch;
    $this->_aViewData[„addsearch“]    = $sSearch;
    $this->_aViewData[„afolder“]      = $aFolders;

    return „order_list.tpl“;
    }

    /**
    * Adding folder check
    *
    * @param array  $aWhere  SQL condition array
    * @param string $sqlFull SQL query string
    *
    * @return $sQ
    */
    protected function _prepareWhereQuery( $aWhere, $sqlFull )
    {
    $oDb = oxDb::getDb();
    $sQ = parent::_prepareWhereQuery( $aWhere, $sqlFull );
    $myConfig = $this->getConfig();
    $aFolders = $myConfig->getConfigParam( ‚aOrderfolder‘ );
    $sFolder = oxConfig::getParameter( ‚folder‘ );
    //searchong for empty oxfolder fields
    if ( $sFolder && $sFolder != ‚-1‘ ) {
    $sQ .= “ and ( oxorder.oxfolder = „.$oDb->quote( $sFolder ).“ )“;
    } elseif ( !$sFolder && is_array( $aFolders ) ) {
    $aFolderNames = array_keys( $aFolders );
    //$sQ .= “ and ( oxorder.oxfolder = „.$oDb->quote( $aFolderNames[0] ).“ )“;
    }

    return $sQ;
    }
    

Oxid Captcha unleserlich

Quelle7)

Update gemacht? 4.9.7?

Evtl. config.inc.php vergessen?

    /**
    * Captcha encryption key.
    */
    $this->captchaKey = ‚<captchaKey>‘;

Admin: Erledigte Bestellungen hervorheben

Quelle8)

Oxid Source: Folgendes in der order_list.tpl (oxid 4.87) in Zeile 110 einfügen:

    <style>
    .ready{
    color:#00CC33;
    }
    </style>

Dann unterhalb von:

    [{ if $listitem->getId() == $oxid }]
    [{assign var=“listclass“ value=listitem4 }]
    [{ /if}]

folgendes einfügen (ca. Zeile 134):

    [{assign var=“ready“ value=“ ready“ }]
    [{ if $listitem->oxorder__oxfolder->value == „ORDERFOLDER_FINISHED“}][{assign var=“listclass“ value=$listclass$ready“ }]  [{ /if}]

Probleme

Ein

cat /var/www/webserver/oxid/log/EXCEPTION_LOG.txt

hilft oft weiter.

Ebenso ein

rm /var/www/webserver/oxid/tmp/*
rm /var/www/webserver/oxid/tmp/smarty/*

Weiße Seite

Problem mit zu vielen Sprachen

Problem: Nachdem eine eingerichtete Sprache, die nicht installiert ist (keine Sprachdateien), zeigt der Admin-Bereich nur noch ein 'Array' an. Man kommt nicht mehr rein. Shop an sich funktioniert aber ganz normal.

Lösung: Öffne Datei oxid/core/oxlang.php Ab ca. Zeile 155:

   public function getBaseLanguage()
    {
        if ($this->_iBaseLanguageId === null) {

            $myConfig = $this->getConfig();
            $blAdmin = $this->isAdmin();

            // languages and search engines
            if ($blAdmin && (($iSeLang = oxRegistry::getConfig()->getRequestParameter('changelang')) !== null)) {
                $this->_iBaseLanguageId = $iSeLang;
            }

            if (is_null($this->_iBaseLanguageId)) {
                $this->_iBaseLanguageId = oxRegistry::getConfig()->getRequestParameter('lang');
            }

            //or determining by domain
            $aLanguageUrls = $myConfig->getConfigParam('aLanguageURLs');

Kommeniere eine Zeile aus:

   public function getBaseLanguage()
    {
        if ($this->_iBaseLanguageId === null) {

            $myConfig = $this->getConfig();
            $blAdmin = $this->isAdmin();

            // languages and search engines
            if ($blAdmin && (($iSeLang = oxRegistry::getConfig()->getRequestParameter('changelang')) !== null)) {
                //$this->_iBaseLanguageId = $iSeLang; // HIER WEG
            }

            if (is_null($this->_iBaseLanguageId)) {
                $this->_iBaseLanguageId = oxRegistry::getConfig()->getRequestParameter('lang');
            }

            //or determining by domain
            $aLanguageUrls = $myConfig->getConfigParam('aLanguageURLs');

Jetzt kann man wieder in den Admin-Bereich und die Sprache löschen (statt deaktivieren). Jetzt Kommentar wieder raus. Fertig.

Module werden doppelt geparst

Passiert anscheinend gerne bei der Entwicklung von Modulen: Modulfragmente werden doppelt geparst (also auch angezeigt). Das liegt daran, dass der Einrag in der DB doppelt ist.

Lösung: doppelte Einräge löschen (nur je EINEN Eintrag löschen!).

In Tabelle oxtplblocks nach OXMODULE sortieren und schauen, welche Templates doppelt für den Block geparst werden. Die Doppelten löschen.

In der Tabelle oxconfig & oxconfigdisplay sind die Einstellungen der Module gespeichert. Die kommen auch gerne mal doppelt vor. (oxconfig: nach OXMODULE ordnen)

Erweiterungen zu Entwickeln von Modulen

DB-Änderungen

Nach jeder Änderung müssen die Views geupdated werden. Admin→Service→Tools Dort unten: VIEWS jetzt updaten.

Hat sich wohl erledigt, weil ich die nbnumbers jetzt in pers_params speichere:

ALTER TABLE `oxorderarticles` ADD `nbnumber` VARCHAR( 15 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL 
ALTER TABLE `oxuserbasketitems` ADD `nbnumber` VARCHAR( 15 ) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL 

Zum Speichern der Nummern in den Userdaten:

ALTER TABLE `oxuser` ADD `nbnumbers` TEXT NOT NULL ,
ADD `act_nbnumber` CHAR( 10 ) CHARACTER SET CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL 

Kopier-Anweisung für Tags aus der Tabelle oxArticles

Quelle9)

MySQL: Kopieren von Tag-Inhalten aus der Tabelle oxarticles in die Tabelle oxartextends

    UPDATE oxartextends a
    JOIN oxarticles b ON a.oxid = b.oxid
    SET a.oxtags = b.oxsearchkeys

Allgemeine Tipps

OXID Datenbankdump ohne Views

Quelle10)

OXID nutzt für die Mehrsprachigkeit die Views von MySQL. Bei einigen Hostern machen diese jedoch Probleme, wenn man die Datenbank per mysqldump sichern möchte.

Glücklicherweise beginnen die Views alle mit “oxv_”, so dass man diese auschließen kann.

Hier das Entsprechende Script für den Aufruf auf der Commandline:

mysql [dbname] -u [username] -p[password] -e 'show tables where tables_in_[dbname] not like "oxv\_%"' | grep -v Tables_in | xargs mysqldump [dbname] -u [username] -p[password] > [dump_file]

Es werden alle Tabellen ausgelesen, welche nicht mit oxv_ beginnen und ein Dump mit allen anderen erzeugt.

Nachdem man den Dump in die neue Datenbank importiert hat, im Backend unter “Tools” einfach die Views neu erzeugen.

In manchen Versionen ist jedoch ohne Views gar kein Login ins Backend möglich. Hier hilft das setzen des entprechenden Eintrags in der config.inc.php

$this->blSkipViewUsage = true;

Quelle11)

Using arguments in translations in Smarty

There is a possibility to use variables with arguments in translations. To use them, you need to know how sprintf or vsprintf methods work and pass the parameters accordingly. Example usage:

[{ oxmultilang ident="VAT_PLUS_PERCENT_AMOUNT" suffix="COLON" args=$key }], 

translation:

'VAT_PLUS_PERCENT_AMOUNT' => "plus VAT %s%% Amount",

%s is replaced with $key value. To use translations with multiple arguments, you have to pass an array as „args“ parameter. Example:

[{assign_adv var="invite_array" value="array ( 
'0' => '$sender_name',
'1' => '$shop_name'
)"}] 

[{ oxmultilang ident="INVITE_TO_SHOP" args=$invite_array }]

translation:

'INVITE_TO_SHOP' => "An invitation from %s to visit %s", 

The array here is formed in smarty, but it is possible to form the array in the controller, and pass it to the template. When using „oxmultilangassign“, you can use translations with arguments too. Example usage:

[{assign var="_statusMessage" value="THANK_YOU_MESSAGE"|oxmultilangassign:$oxcmp_shop->oxshops__oxname->value}]

Wichtige Objekte in OXID-Templates

Klasse oxViewConfig (views/oxviewsconfig.php)

  $oViewConf->getFbAppId() - Returns facebook application key value
  $oViewConf->getImageUrl() - Returns image url
  $oViewConf->getResourceUrl() - Returns shops resource url
  $oViewConf->getHomeLink() - Returns shops home link
  $oViewConf->getSelfLink() - Returns shops self link
  $oViewConf->getHelpPageLink() - Returns shop help link
  $oxViewConfig->getActArticleId() - Returns active article id
  $oxViewConfig->getActCatId() - Returns active category id
  $oxViewConfig->getActLanguageId() - Returns session language id
  $oxViewConfig->getActManufacturerId() - Returns active manufacturer id
  $oxViewConfig->getActTplName - Returns active template name (if set)
  $oxViewConfig->getAdminDir() - Returns admin path
  $oxViewConfig->getBaseDir() - Returns shops base directory path
  $oxViewConfig->getBasketLink() - Returns shops basket link
  $oxViewConfig->getCurrentHomeDir() - Returns shops home path
  $oxViewConfig->getLogoutLink() - Returns shop logout link
  $oxViewConfig->getSslSelfLink() - Returns shops self ssl link
  oxViewConfig.getUrlTemplateDir() - Returns shops current templates url

Häufig benutzte Smary-Variablen

$shop->sid
	d3377e513705b17d12c22828b10503a6
	 
$shop->hiddensid
	<input type="hidden" name="sid" value="d3377e513705b17d12c22828b10503a6" /> 	 
$shop->selflink
	http://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6& 	ebenfalls im Admin einsetzbar
$shop->sslselflink 	https://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6& 	 
$shop->basedir
	http://www.myDomain.de/
	 
$shop->selfactionlink
	http(s)://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6& 	als Target in Formularen zu verwenden
$shop->currenthomedir
	http://www.myDomain.de/
	 
$shop->basketlink
	http://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=basket 	 
$shop->orderlink
	http(s)://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=user 	 
$shop->paymentlink 	http(s)://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=payment 	 
$shop->exeorderlink 	http(s)://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=order&fnc=execute 	 
$shop->orderconfirmlink 	http(s)://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=order 	 
$shop->basetpldir
	http://www.myDomain.de/out/oxbaseshop/html/ 	ebenfalls im Admin einsetzbar
$shop->templatedir
	/out/oxbaseshop/html/0/templates 	ebenfalls im Admin einsetzbar
$shop->urltemplatedir
	http://www.myDomain.de/out/oxbaseshop/html/0/templates 	ebenfalls im Admin einsetzbar
$shop->imagedir
	http(s)://www.myDomain.de/out/oxbaseshop/html/0/images 	ebenfalls im Admin einsetzbar
$shop->nosslimagedir
	http://www.myDomain.de/out/oxbaseshop/html/0/images 	ebenfalls im Admin einsetzbar
$shop->dimagedir
	http(s)://www.myDomain.de/out/oxbaseshop/html/0/dyn_images 	 
$shop->admindir
	admin
	URL-Erweiterung für Adminbereich, nur im Admin verfügbar
$shop->isSSL
	true oder false 	Prüfung auf SSL-Mode
$shop->IP
	217.237.149.225
	 
$shop->blUseStock
	true oder false
	Prüfung, ob Lager genutzt wird
$shop->cl
	user
	aktuell genutzte Klasse
$shop->tpl
	impressum.tpl
	aktuell genutztes Template
$shop->lang
	0
	aktuelle Sprache
$shop->helplink
	http://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=help&page=user&tpl= 	 
$shop->logoutlink
	http(s)://www.myDomain.de/index.php?sid=d3377e513705b17d12c22828b10503a6&cl=user&cnid=&fnc=logout&tpl=&redirect=1 	 
Wird als Beispiel "http" bzw. "https" verwendet. wird auch nur explizit diese im Shop registrierte Adresse verwendet. Steht hingegen "http(s)", schaltet der Shop die Variable je nach Shopzustand selbst.

Shop offline

Sehr guter Überglick (auch technisch): http://www.marmalade.de/magazin/2014/07/oxid-wann-wird-die-offline-seite-angezeigt/

Bevor es live geht

http://wiki.oxidforge.org/Tutorials/Check_vor_dem_Livegang

Stammdaten →Grundeinstellungen → Haken bei Produktivmodus

Stammdaten →Grundeinstellungen → Perform. → Überprüfen ob Templates neu kompiliert werden müssen. Schalten Sie diese Einstellung aus, wenn der eShop in den Live-Betrieb geht.