Shop Offline Ansicht exisitert so etwas?

Hallo,
ich frage mich schon seit längerem, ob es im Shop irgendwo die Funktion gibt, den Shop offline zu setzen, ihn aber dennoch als Admin im Frontend zu testen.

Habe ich diese Möglichkeit einfach übersehen oder gibt es sie nicht?
Bei XTC war so etwas ja möglich und wie ich fand, sehr hilfreich.

Gruß

Ullrich

Hallo Ullrich,

schau mal, das Thema gibt’s schonmal, heisst bloss anders :wink:
http://www.oxid-esales.com/forum/showthread.php?t=4439

Gruß

[QUOTE=energie-materie;25668]Bei XTC war so etwas ja möglich und wie ich fand, sehr hilfreich[/QUOTE]
Warum war das bei xtc möglich?

Weil ein “Community member” dafür ein entsprechendes “Modul” entwickelt hat.

Wer war das gleich noch mal???

Ach ja, ich glaub’, das war sogar ich…

Soll heißen:

Vieles von dem, was unter xtc möglich ist, geht auf die Initiative der “Community” zurück.

Und so sollte das auch unter OXID CE funktionieren…

So, dann will ich mal meine Tradition fortsetzen, einen [B]Wartungsmodus [/B]für den Shop zu erlauben…

Folgend ist eine modifizierte Datei “[B]views/oxcmp_shop.php[/B]”, die jetzt einen Wartungsmodus zu lässt…

(Da diese Klasse nur diese eine Routine hat, habe ich die komplett geändert. Man könnte/sollte das auch als Modul konzipieren…)

Die Idee ist, dass man den [B]Wartungsmodus [/B]dadurch anstößt, dass man in den Admin-Einstellungen den Shop [B]inaktiv [/B]setzt ("[B]Aktiv[/B]" in den Grundeinstellungen abwählen).

Um nun als Admin dennoch den Shop starten zu können, [B]muss [/B]man das Shop-Frontend mit den [B]Parametern [/B]"?[B]user[/B]=admin_user_name&[B]pass[/B]=admin_password" aufrufen. (Gültige Admin Login-Daten.)

Die geänderte Routine prüft diese Daten auf Gültigkeit, und startet dann den Shop (obwohl er eigentlich inaktiv ist) wenn diese OK sind.

Das erfolgreiche Login wird auch in der SESSION gespeichert, so dass bei Folgeaktionen die Information über das erfolgreiche Login auch ohne diese Parameter erhalten bleibt.

Gleichzeitig wurde auch das Verhalten geändert, wenn der Shop [B]wirklich inaktiv [/B]ist, und kein Admin sich wie zuvor beschrieben einloggt.

OXID generiert in diesem Fall normalerweise eine (ziemlich nichtssagende) “Exception”, jetzt wird der Shop auf die Datei “[B]offline.htm[/B]l” umgeleitet…

Diese Seite kann man dann schön gestalten, so dass man dem Besucher eine sinnvolle und professionelle Meldung über den (für ihn) inaktiven Shop gibt.

<?php
/**
 *    This file is part of OXID eShop Community Edition.
 *
 *    OXID eShop Community Edition is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    OXID eShop Community Edition is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with OXID eShop Community Edition.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @link http://www.oxid-esales.com
 * @package views
 * @copyright (C) OXID eSales AG 2003-2009
 * @version OXID eShop CE
 * $Id: oxcmp_shop.php 16306 2009-02-05 10:28:05Z rimvydas.paskevicius $
 */

/**
 * Translarent shop manager (executed automatically), sets
 * registration information and current shop object.
 * @subpackage oxcmp
 */
class oxcmp_shop extends oxView
{
    /**
     * Marking object as component
     * @var bool
     */
    protected $_blIsComponent = true;

    /**
     * Executes parent::render() and returns active shop object.
     *
     * @return  object  $this->oActShop active shop object
     */
    public function render()
    {
        parent::render();

        $myConfig = $this->getConfig();
            $sShopLogo = $myConfig->getConfigParam( 'sShopLogo' );
            if ( $sShopLogo && file_exists( $myConfig->getAbsImageDir().'/'.$sShopLogo ) ) {
                $this->_oParent->setShopLogo($sShopLogo);
                // Passing to view. Left for compatibility reasons for a while. Will be removed in future
                $this->_oParent->addTplParam( 'shoplogo', $this->_oParent->getShopLogo() );
            }

        // is shop active?
        $oShop = $myConfig->getActiveShop();
        if ( !$oShop->oxshops__oxactive->value && 'oxstart' != $myConfig->getActiveView()->getClassName() && !$this->isAdmin() ) 
        {
          //Avenger
          $logged_in=false;
          $sUser=$_GET['user'];
          $sPassword=$_GET['pass'];
          if ($sUser && $sPassword)
          {
            $_GET['lgn_usr']=$sUser ;
            $_GET['lgn_pwd']=$sPassword;
            $oUser=oxnew('oxcmp_user');
            $logged_in=$oUser->login($sUser, $sPassword);
            $_SESSION['logged_in']=$logged_in;
          }
          else
          {
            $logged_in=$_SESSION['logged_in'];
          }
          if (!$logged_in)
          {
            oxUtils::getInstance()->redirect( 'offline.html',false,302);
            /*
            $oEx = oxNew( 'oxShopException' );
            $oEx->setMessage( 'EXCEPTION_SHOP_NOTACTIVE' );
            throw $oEx;
            */
          }
          //Avenger
        }

        return $oShop;
    }
}
?>

[B]Edit:[/B]

Wenn das kein Zufall ist: das ist mein 1.000 Post hier im Forum.

Ist also quasi mein Jubiläums-Geschenk…

Wenn das kein Zufall ist: das ist mein 1.000 Post hier im Forum.

Herzlichen Glückwunsch und Dankeschön :slight_smile:

Gruß

Vielen Dank auch von meiner Seite. Damit lässt sich doch schon etwas anfangen.

Gruß

Ullrich

[QUOTE=avenger;26292]Folgend ist eine modifizierte Datei “[B]views/oxcmp_shop.php[/B]”, die jetzt einen Wartungsmodus zu lässt…

(Da diese Klasse nur diese eine Routine hat, habe ich die komplett geändert. Man könnte/sollte das auch als Modul konzipieren…)[/QUOTE]

Ich habe das nun doch noch als Klasse implementiert, damit das nicht beim nächsten Update verloren geht (Die Version 4.3 lauert ja quasi um die Ecke…).

Den folgenden Code als “[B]modules/powertemplate/pt_oxcmp_shop/pt_oxcmp_shop.php[/B]” abspeichern, und mit “[B]oxcmp_shop => powertemplate/pt_oxcmp_shop/pt_oxcmp_shop[/B]” in den Modulen einbinden.

<?php
/**
 *    This file is part of OXID eShop Community Edition.
 *
 *    OXID eShop Community Edition is free software: you can redistribute it and/or modify
 *    it under the terms of the GNU General Public License as published by
 *    the Free Software Foundation, either version 3 of the License, or
 *    (at your option) any later version.
 *
 *    OXID eShop Community Edition is distributed in the hope that it will be useful,
 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *    GNU General Public License for more details.
 *
 *    You should have received a copy of the GNU General Public License
 *    along with OXID eShop Community Edition.  If not, see <http://www.gnu.org/licenses/>.
 *
 * @link http://www.oxid-esales.com
 * @package views
 * @copyright (C) OXID eSales AG 2003-2009
 * @version OXID eShop CE
 * $Id: oxcmp_shop.php 16306 2009-02-05 10:28:05Z rimvydas.paskevicius $
 * 
 * Modified by Avenger to allow admin logins to front-end for inactive shops
 * 
 * @copyright (C) Avenger 2010
 * @version OXID eShop CE
 * $Id: pt_oxcmp_shop.php 1702 2010-02-04 06:22:13Z avenger $
 * 
 * Activate with: oxcmp_shop => powertemplate/pt_oxcmp_shop/pt_oxcmp_shop
 */

/**
 * Translarent shop manager (executed automatically), sets
 * registration information and current shop object.
 * @subpackage oxcmp
 */
 
class pt_oxcmp_shop extends pt_oxcmp_shop_parent
{
  /**
   * Marking object as component
   * @var bool
   */
  protected $_blIsComponent = true;

  /**
  * Executes parent::render() and returns active shop object.
  *
  * @return  object  $this->oActShop active shop object
  */
  public function render()
  {
    //Avenger
    $myConfig = $this->getConfig();
    // is shop active?
    $oShop = $myConfig->getActiveShop();
    if (!$oShop->oxshops__oxactive->value && !$this->isAdmin() && 'oxstart' != $myConfig->getActiveView()->getClassName()) 
    {
      $logged_in=false;
      $sUser=$_GET['user'];
      $sPassword=$_GET['pass'];
      if ($sUser && $sPassword)
      {
        $_GET['lgn_usr']=$sUser ;
        $_GET['lgn_pwd']=$sPassword;
        $oUser=oxnew('oxcmp_user');
        $logged_in=$oUser->login($sUser, $sPassword);
        $logged_in=$logged_in<>'user';
        $_SESSION['logged_in']=$logged_in;
      }
      else
      {
        $logged_in=$_SESSION['logged_in'];
      }
      if (!$logged_in)
      {
        oxUtils::getInstance()->redirect( 'offline.html',false,302);
        //Use alternate template for maintenance announcement
        //oxUtils::getInstance()->redirect( 'maintenance.html',false,302);
      }
    }
    $sShopLogo = $myConfig->getConfigParam( 'sShopLogo' );
    if ( $sShopLogo && file_exists( $myConfig->getAbsImageDir().'/'.$sShopLogo ) ) 
    {
      $this->_oParent->setShopLogo($sShopLogo);
      // Passing to view. Left for compatibility reasons for a while. Will be removed in future
      $this->_oParent->addTplParam( 'shoplogo', $this->_oParent->getShopLogo() );
    }
    //Avenger
    return $oShop;
  }
}
?>

Wenn man für diesen Fall des Wartungsmodus nicht die ‘offline.html’ zur Information verwenden will, kann man in dieser Code-Sequenz

        oxUtils::getInstance()->redirect( 'offline.html',false,302);
        //Use alternate template for maintenance announcement
        //oxUtils::getInstance()->redirect( 'maintenance.html',false,302);

“//oxUtils::getInstance()->redirect( ‘offline.html’,false,302);” auskommentieren, und ‘oxUtils::getInstance()->redirect( ‘maintenance.html’,false,302);’ entkommentieren…

Dann kann man ein Formular ‘maintenance.html’ dafür verwenden.

Besten Dank für das Modul, funktioniert einwandfrei!

Viele Grüße
Jörg

[QUOTE=avenger;27169]Ich habe das nun doch noch als Klasse implementiert, damit das nicht beim nächsten Update verloren geht (Die Version 4.3 lauert ja quasi um die Ecke…).

Den folgenden Code als “[B]modules/powertemplate/pt_oxcmp_shop/pt_oxcmp_shop.php[/B]” abspeichern, und mit “[B]oxcmp_shop => powertemplate/pt_oxcmp_shop/pt_oxcmp_shop[/B]” in den Modulen einbinden…
[/QUOTE]

Hallo,

habe alles so gemacht wie in diesem Post beschrieben. Es funktioniert aber irgendwie nicht. Oder muss ich das aus dem ersten Post von avenger auch machen.

[QUOTE=BlackP;35433]Hallo,

habe alles so gemacht wie in diesem Post beschrieben. Es funktioniert aber irgendwie nicht. Oder muss ich das aus dem ersten Post von avenger auch machen.[/QUOTE]
Eigentlich nicht…

Was funktioniert denn nicht?

Welche OXID-Version verwendest Du?

Könnte daran liegen, dass neuere Version (nach 4.2, für die das Modul entwickelt wurde) evtl. andere Login-Informationen zurückmelden.

Ja daran könnte es liegen setze die aktuelle Version ein. 4.4.
Hat alles geklappt mit der Einrichtung des Moduls. Nur wenn ich mich nun im Backend anmelde werde ich immer noch auf die offline Seite geleitet.

[QUOTE=BlackP;35440]Ja daran könnte es liegen setze die aktuelle Version ein. 4.4.
Hat alles geklappt mit der Einrichtung des Moduls. Nur wenn ich mich nun im Backend anmelde werde ich immer noch auf die offline Seite geleitet.[/QUOTE]
Du musst dich ja auch im [B]Front-End[/B] anmelden…

An die Shop-URL die definierten Parameter anhägen.

ups. OK
und wie lauten die Parameter, damit er sich anmeldet über die url.?
:o

[QUOTE=BlackP;35442]ups. OK
und wie lauten die Parameter, damit er sich anmeldet über die url.?
:o[/QUOTE]
Auszug aus einem früheren Post:

Um nun als Admin dennoch den Shop starten zu können, muss man das Shop-Frontend mit den Parametern “?user=admin_user_name&pass=admin_password” aufrufen. (Gültige Admin Login-Daten.)

ja stimmt, eben fällt mir es wieder ein das steht ja weiter oben im ersten Post mit der ersten Lösung.
oh man.
Naja trotzdem danke, funzt Einwandfrei jetzt alles auch mit der 4.4 Version.

DANKE

PS: die Traetwerk Seite sieht echt super aus Komplement.

[QUOTE=avenger;26292]

Wenn das kein Zufall ist: das ist mein 1.000 Post hier im Forum.

Ist also quasi mein Jubiläums-Geschenk…[/QUOTE]

Gäb es ein Danke Modus, würde ich ihn mehrmals drücken…:D:D:D

Lieben Dank für dieses Geschenk!!

PS: funktioniert übrigens auch mit der aktuellsten Version!!

in die Tutorials aufgenommen http://wiki.oxidforge.org/Tutorials/en/maintenance-mode