Guten Tag,
Dank der Hilfe hier im Forum bin ich meinem Anliegen schon ein großes Stück näher gekommen, leider komme ich momentan nicht weiter.
Mein Ziel ist es, ein Modul zu schreiben mit dem es mir möglich ist bei bestimmten Artikeln als Admin einen Haken bei meiner neu angelegten “Verstecken”-Checkbox zu setzen, wodurch diese Artikel für eine Bestimmte Benutzergruppe “Testgruppe” versteckt, also nicht angezeigt werden sollen.
Ich benutze OXID CE 4.6.1_45706
Was ich bisher getan habe:
- Ich habe in der DB ein neues Feld “TESTHIDE” angelegt.
- Ich habe die article_main.tpl entsprechend angepasst, so das unter der “Akiv” Checkbox im Admin->Artikel Bereich nun auch meine neue Checkbox erscheint.
- Ich habe eine Übersetzung für diese Checkbox im deutschen und englischen lang.php File eingetragen.
- Dann habe ich einen neuen Modulordner “test_hide” angelegt.
- In diesem befindet sich eine modifizierte Version der Datei oxarticle.php welche ich test_oxarticle.php genannt habe.
- Ich habe das Modul per oxarticle => test_hide/test_oxarticle geladen.
Soweit so gut.
Hier erstmal der Code meiner test_oxarticle.php:
class test_oxarticle extends test_oxarticle_parent
{
public function getActiveCheckQuery( $blForceCoreTable = null )
{
$sTable = $this->getViewName( $blForceCoreTable );
if($oxcmp_user && $oxcmp_user->inGroup('0810672640493985c161475b0b487087'))
{
if(oxactive == 1)
{
$sQ = " $sTable.testhide = 0";
}
else
{
$sQ = " $sTable.oxactive = 1 ";
}
}
else
{
$sQ = " $sTable.oxactive = 1 ";
}
if ( $this->getConfig()->getConfigParam( 'blUseTimeCheck' ) ) {
$sDate = date( 'Y-m-d H:i:s', oxUtilsDate::getInstance()->getTime() );
$sQ = "( $sQ or ( $sTable.oxactivefrom < '$sDate' and $sTable.oxactiveto > '$sDate' ) ) ";
}
return $sQ;
}
}
Ziel hierbei war es, dass geprüft wird ob der Benutzer eingeloggt und in besagter Testgruppe ist. Wenn dies der Fall ist und ein Haken in der “Aktiv”-Checkbox (oxactive) gesetzt ist, soll anhand der “Verstecken”-Checkbox (testhide) entschieden werden welcher Artikel geladen wird.
Sollte entweder kein Haken bei “Aktiv” gesetzt oder der Benutzer nicht eingeloggt/in der Testgruppe sein, so soll anhand der “Aktiv”-Checkbox entschieden werden welche Artikel geladen werden.
Ich bin mir sicher, dass es da elegantere Wege gibt, aber das macht erstmal nichts.
Das Problem ist nur, dass die Abfrage über $oxcmp_user nicht funktioniert.
Ich habe Testweise auch einmal
[{if $oxcmp_user && $oxcmp_user->inGroup('0810672640493985c161475b0b487087')}]
ist in gruppe
[{else}]
ist nicht in gruppe
[{/if}]
in die header.tpl eingebunden. Dort funktioniert das ganze einwandfrei.
Hat jemand eine Idee wie ich das ganze lösen könnte? Muss ich hier doch irgendwie mit Smarty arbeiten? Oder geht es auch so (bzw. so ähnlich) wie von mir ursprünglich gedacht, nur mit der test_oxarticle.php?
Für Hilfestellungen, Denkanstöße etc wäre ich sehr dankbar