was kommt denn bei $Aktiv raus / was steht drin?
Das ist eine gute Frage. Soweit ich das verstanden habe kann ich mir den Inhalt der Variablen ja irgendwie mit var_dump() ausgeben lassen. Nur wie das genau funktioniert müsste ich noch herausfinden. (Wenn ich einfach in meiner test_oxarticle.php var_dump($Aktiv) einfüge, dann erscheint oberhalb des “Angebot der Woche” folgendes:
NULL NULL NULL NULL NULL NULL NULL
aber ich nehme mal an, dass ich var_dump() nur falsch verwendet habe.
Falls mir jetzt doch eventuell jemand sagen könnte wie ich überprüfen kann, ob die Checkbox “Aktiv” gesetzt ist würde ich mich freuen. So scheint es ja nicht zu funktionieren:
$Aktiv = $this->oxarticles__oxactive->value;
$oUser = $this->getUser();
if($oUser && $oUser->inGroup('0810672640493985c161475b0b487087'))
{
if($Aktiv == 1)
{
$sQ = " $sTable.testhide = 0";
}
else
{
$sQ = " $sTable.oxactive = 1 ";
}
}
else
{
$sQ = " $sTable.oxactive = 1 ";
}
Beginnen wir mal bei 0…
Wie sieht denn die Abfrage insgesamt aus, wenn Du sie ausgibst?
[QUOTE=rogu;94415]
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.[/QUOTE]
Das Ziel ist seltsam. Um die Artikel doch zu sehen müsste man sich nur ausloggen.
$Aktiv = $this->oxarticles__oxactive->value;
In der Listenansicht hast du in $this keinen bestimmten Artikel, im PHP-Code kannst du daher an dieser Stelle gar nicht prüfen ob ein einzelner Artikel einen bestimmten Wert hat, das musst du im SQL mit abfragen: “oxactive=1 and testhide=0”.
Okay, das hilft mir denke ich dann schonmal weiter, dann weiß ich ja jetzt, dass ich an einer anderen Stelle ansetzen muss.
Leider habe ich momentan ein andres Problem.
Ich habe ein wenig an den Checkboxeinstellungen rumexperimentiert (<td class=“edittext” width=“120”> auf 60 gesetzt) und nunja, jetzt kann ích nicht mehr auf den Administrationsbereich zugreifen, garnicht. Hab alle Dateien wieder auf genau den Stand gebracht als noch alles lief, aber trotzdem bekomme ich wenn ich den Adminbereich aufrufe nur folgende Meldung:
Warning: Smarty error: unable to read resource: “message/exception.tpl” in C:\xampp\htdocs\oxid\core\smarty\Smarty.class.php on line 1093
Vielleicht könnt ihr mir ja auch hier helfen.
Ich finde es übrigens toll wie hilfsbereit ihr alle seid
/tmp geleert?
Ja, das war das erste das ich probiert habe - hilft nur leider nicht.
Was denkt ihr? Sollte ich den Shop einfach von nocheinmal komplett neu herunterladen und audsetzen? Ist ja eh nur ein Testshop. Die paar Veränderungen die ich bis jetzt vorgenommen habe dürfte ich wohl wieder hinbekommen.
Oder seht ihr einen anderen, einfachen Weg das Problem zu beheben?
Du kannst doch einfach die veraenderte datei kopieren und dann die veraenderungen nochmal nach und nach einfuegen.
Viele gruesse aus Belgien
So, Shop läuft wieder wie er soll.
[QUOTE=leofonic;94540]Das Ziel ist seltsam. Um die Artikel doch zu sehen müsste man sich nur ausloggen.
In der Listenansicht hast du in $this keinen bestimmten Artikel, im PHP-Code kannst du daher an dieser Stelle gar nicht prüfen ob ein einzelner Artikel einen bestimmten Wert hat, das musst du im SQL mit abfragen: “oxactive=1 and testhide=0”.[/QUOTE]
Das mag zwar seltsam sein, aber genau das ist die Aufgabe
Danke für den Hinweis mit der Listenansicht. So mühe ich schonmal nicht unnötig dort damit herum die If-Abfrage ans laufen zu bekommen.
Könntest du mir eventuell auch noch dabei helfen die Datei zu finden in der ich im SQL meine Abfrage einbauen kann?
Einfach in deinem schon bestehenden Code. Falls dir das noch nicht so klar ist: getActiveCheckQuery liefert einen SQL-Teilstring zurück.
$sQ = " $sTable.testhide = 0 and $sTable.oxactive = 1 ";
Vielen Dank, klappt wunderbar!
Das getActiveCheckQuery einen SQL-Teilstring zurückgibt war mir zwar klar, aber ich wusste nicht, dass es dann doch so einfach geht
Eine vorerst letzte Frage hätte ich aber noch:
Wenn der Artikel dann verborgen wird (wie gewünscht), dann zählt er trotzdem noch als Inhalt einer Kategorie.
Was ich damit meine ist:
In der Kategorie Downloads ist im Demonshop nur ein Artikel. Das ganze wird ja dann als Downloads (1) dargestellt. Wenn ich diesen Artikel verstecke wird leider immernoch Downloads (1) angezeigt, nur sieht man den Artikel dann eben nicht.
Das lässt sich denke ich sehr ähnlich ändern, nur ist die Frage “wo?”
Ich muss euch allen aber wirklich ein Kompliment machen, so ausführliche und schnelle Hilfe ist wirklich super!
Die Anzahl der Artikel ist gecached, das lässt sich nur schwer für eine gefilterte Ansicht umsetzen, ebenso das Ausblenden von leeren Kategorien. Ich würde dir vorschlagen die Anzeige der Artikelanzahl abzuschalten und für die Kategorien einen ähnlichen (manuell im Backend zu setzenden) Haken einzubauen wie bei den Artikeln, also “wenn User in Gruppe x dann diese Kategorie nicht anzeigen”.
getNrOfArticles kannst du umschreiben, wird aber evtl. langsam ohne caching.
Ja, das Gefühl habe ich auch bekommen als ich mir die ganzen Funktionen angesehen habe die da mit rein spielen.
Leere Kategorien wollte ich eigentl. garnicht ausblenen, ich wollte nur, dass die Menge der Inhalte einer Kategorie richtig angezeigt wird.
Jetzt hätte ich aber noch eine etwas blöde Frage:
Wo kann ich das Anzeigen der Anzahl der Inhalte einer Kategorie (eben die (1) bei zB. Downloads (1)) ausblenden?
Das geht doch sicher irgendwo im Administrationsbereich, oder? Natürlich könnte ich auch einfach im Template einen entsprechenden Teil löschen/auskommentieren, aber das ist ja nicht die feine englische Art
Im Admin, Grundeinstellungen/Performance glaub ich.
Stammdaten -> Grundeinstellungen -> Performance -> “Anzahl enthaltener Artikel hinter den Kategorienamen anzeigen”
(unterer Bereich, rechte Spalte)
Ah, vielen Dank