Hey, Danke für die Antwort:
das habe ich zu erst probiert - ABER - ich müsste das ja auf jeder möglichen Seite irgendwo einfügen und die Anzeige bzw. Weiterleitung auf die LoginSeite ist damit auch noch nicht gelöst.
Also meinr Meinung nach hilft das nur wenn man Teile auf einer Template-Seite zeigen/verbergen möchte aber nicht für das was ich vorhabe.
Mach doch in einem Template, das immer geladen wird (z.B. _header.tpl), die Überprüfung rein. Wenn die dann negativ verläuft, wird eine Weiterleitung zur Anmeldeseite aktiv. Das könnte funzen.
okay klingt zwar nach workaround aber wenn es funktioniert
nur wie mache ich eine Weiterleitung auf Smartyebene?
Weiterhin muss das Login Template “account_login.tpl” ja von der Weiterleitung ausgenommen werden sonst habe ich eine Endlosschleife. (Wie) Kann ich in Smarty abfragen in welchem Template ich bin?
in der Datei: oxview.php muss man die render Funktion von
public function render()
{
return $this->_sThisTemplate;
}
abändern in
public function render()
{
// is logged in ?
$oUser = $this->getUser();
if ( !$oUser || $oUser->oxuser__oxpassword->value == '' ) {
return $this->_sThisTemplate = 'account_login.tpl';
}
return $this->_sThisTemplate;
}
dies bewirkt, dass man immer die Login Seite bekommt solange man nicht eingeloggt ist…
Idealerweise muss man die account_login.tpl Datei anpassen da im header, links und rechts immer noch Infos durchkommen könnten die man uneingeloggt nicht sehen soll.
ich hatte auch mal was geschrieben, vielleicht kannst du das ja verwenden (damit kann er sich dann auch registrieren und sein vergessenes Passwort wiederbekommen):
Hey ja genau das Problem hab ich nämlich jetzt das ich keine andere Seite aufrufen kann wenn ich nicht eingeloggt bin
die Klasse class ShopControl extends ShopControl_parent
gibt es bei meiner Version nicht und die _process Funktion von oxshopcontrol.php sieht ziemlich anders aus
Ich verstehe genau was du da machst, aber ich blicke in den ganzen Oxid Klassen (noch) nicht durch.
Die Klasse oxView hat auch eine Methode $this->getClassName() - dait könnte ich deine Lösung nachbauen - $this->getClassName() ist aber immer leer - versteh ich nicht.
hm ich hab zwar noch eine ältere Version aber ich glaube du suchst an der falschen Stelle.
Das Geschriebene ist ein Modul, also wirst du das nirgends finden.
Du kopierst einfach das was ich da stehen habe in eine Datei (PHP-Tags nicht vergessen) und speicherst die in einem Unterordner im Module Verzeichnis ab (zB als shopcontrol.php).
Dann gehst du ins Admin Panel unter Stammdaten->Grundeinstellungen->System->Module und gibst da in eine neue Zeile
oxshopcontrol => deinunterordner/derfilename
zB: oxshopcontrol => require_login/shopcontrol
ein. Damit ist das Modul aktiviert und sollte funktionieren.
wenn ich jetzt noch eine ContentSeite freigeben will sagen wir die Impressum-Seite…
dann habe ich ja als $sClass lediglich “content” was ja für alle Contentseiten gilt - wo/wie bekomme ich in meinem Modul die ContentId her um sie zu unterscheiden?
Das $oContent Objekt wird erzeugt… aber danach scheint irgendwas nicht zu stimmen.
was genau müsste oxConfig::getParameter( ‘tpl’ ) zurückgeben? ist bei mir leer…?!
auch das ist leer: $oContent->load( oxConfig::getParameter( ‘tpl’ ) );
[oxcontents__oxloadid] =>
ist auch leer
Ps: ich bin neu bei oxid und weiss noch nicht wo welcher Wert herkommt
Das klingt nicht nur sauberer, das ist auch sauberer, da dein Shop weiterhin updatefähig bleibt und du nicht jedes Mal deine Änderung nachziehen musst.
Hallo allemal, wenn ich den Code in der neuesten Version einbaue, kann ich ins Impressum gehen, ansosnten erhalte ich nur weiße Seiten wenn ich eingeloogt bin.