Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Cache ignorieren wenn Admin

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Cache ignorieren wenn Admin
    am: 26. April 2021, 21:40:38
    Ich versuche einen Weg zu finden, wie der Cache ignoriert werden kann, sobald ich als Admin angemeldet bin.
    Ich hab die Funktion in der /includes/aplications_top.php entdeckt:

    Code: PHP  [Auswählen]
    function CacheCheck() {
      if (USE_CACHE == 'false'
          || !isset($_COOKIE['MODsid'])
          || (isset($GLOBALS['disable_smarty_cache'])
              && $GLOBALS['disable_smarty_cache'] === true
              )
          )
      {
        return false;
      }
      return true;
    }
     

    und die if-Abfrage um diese Zeile erweitert:

    Code: PHP  [Auswählen]
     || $_SESSION['customer_status_value']['customers_status_id'] == '0'
     

    Leider scheint das keinen Effekt zu haben.
    Hat jemand ne Ahnung was ich da falsch mache? Ist das überhaupt der richtige Ansatz?

    Linkback: https://www.modified-shop.org/forum/index.php?topic=41844.0
    Templateshop - Eine große Auswahl an neuen und modernen Templates für die modified eCommerce Shopsoftware

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #1 am: 26. April 2021, 22:34:59
    [...]
    Leider scheint das keinen Effekt zu haben.
    Hat jemand ne Ahnung was ich da falsch mache? Ist das überhaupt der richtige Ansatz?

    Die Funktion CacheCheck() steht in der Zeile 200 der Datei /includes/aplications_top.php, die Session wird aber erst in der Zeile 247 gestartet.

    Vorschlag:
    Erstelle im Ordner /includes/extra/application_top/application_top_end/ eine PHP-Datei mit folgendem Inhalt.

    Code: PHP  [Auswählen]
    <?php
    if ($_SESSION['customer_status_value']['customers_status_id'] == '0') $disable_smarty_cache = true;

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #2 am: 26. April 2021, 23:30:31
    Sorry
    [...]
    Die Funktion CacheCheck() steht in der Zeile 200 der Datei /includes/aplications_top.php, die Session wird aber erst in der Zeile 247 gestartet.
    [...]

    ist Quatsch, aufgerufen wird die Funktion ja erst nach dem Start der Session.

    Gruss
    Hanspeter

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #3 am: 27. April 2021, 00:56:01
    Nächster Vorschlag:
    Erstelle im Ordner /includes/extra/application_top/application_top_end/ eine PHP-Datei mit folgendem Inhalt.

    Code: PHP  [Auswählen]
    <?php
    if (isset($_SESSION['customers_status']['customers_status_id']) && $_SESSION['customers_status']['customers_status_id'] == '0') $disable_smarty_cache = true;

    Gruss
    Hanspeter

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #4 am: 27. April 2021, 08:43:53
    Schon mal danke für die Vorschläge.
    Eine kurze Rückmeldung: Ich hab das gerade getestet aber das scheint nicht zu funktionieren.
    Das kann ja eigentlich nur an der Position des Einbaus liegen, wenn das nicht greift. Ich schaue mir das nochmal an.

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #5 am: 27. April 2021, 10:17:03
    Kommando zurück. Ich hab das in einem Test-Shop getestet und da funktioniert es wunderbar. Seltsam. Dann muss ich hier wohl irgendwie noch ein anderes Cache Problem haben. Danke auf jeden Fall.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #6 am: 27. April 2021, 10:48:05
    Bist du in deinem Shop ev. nicht als Hauptadministrator unterwegs, denn die '0' ist "normalerweise" die $_SESSION['customers_status']['customers_status_id'] des Hauptadministrators?

    Gruss
    Hanspeter

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #7 am: 27. April 2021, 11:06:09
    Jetzt bin ich verwirrt. Ich bin tatsächlich nicht der "Hauptadmin". Aber customers_status_id ist doch nicht die ID des customers sondern die ID des statuses. In so fern dürfte das doch vom Prinzip her alles korrekt sein.

    Der Cache scheint bei mir momentan gerade gar nicht mehr zu funktionieren. Also immer ausgeschaltet auch wenn er eigentlich an ist. Und das für alle Kundengruppen. Echt seltsam, da es vor kurzem noch ging.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #8 am: 27. April 2021, 11:47:48
    Füge doch mal testweise nach dem du dich als Admin am Shop angemeldet hast folgenden Code ans Ende, aber vor '?>', der Datei /includes/aplications_top.php ein, und schau dir danach die Ausgabe im Browser an.

    Code: PHP  [Auswählen]
    echo 'Meine Status ID: '.$_SESSION['customers_status']['customers_status_id'];
    die;

    Gruss
    Hanspeter

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #9 am: 27. April 2021, 11:52:17
    Ok. Da bekomme ich wie zu erwarten die 0 zurück.

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #10 am: 27. April 2021, 14:15:57
    Also dieses ganze Cache-Thema ist irgendwie sehr verwirrend. Nach zig mal hin- und her-probieren macht der Shop nun doch das was er soll im Prinzip, obwohl ich nichts geändert habe.

    Eine Sache die mich allerdings on top wundert ist, ist folgende:

    Ich baue gerade ein individuelles products_listing_xy.html template.
    Dabei ist der Titel mit {$LIST_TITLE} dynamisch in dem template drin. Alles andere statisch.
    Ändere ich nun den statischen Text im Template und reloade die Seite, dann wird mir (jetzt mal unabhängig von dem o.g. kleinen Umbau) die Änderung immer angezeigt. Ändere ich nur den Titel der Kategorie im Backend, dann greift der Cache und diese Änderung wird mir nur angezeigt, wenn ich den Cache lösche (oder eben Hanspeters kleinen Umbau drin habe).

    Vermutlich hab ich ein falsches Verständnis davon, was der Cache wirklich macht.
    Es ist hier wohl so, dass nicht die ganze Seite dann gecached wird, sondern nur die im Template befindlichen Smarty-Angaben. Richtig?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #11 am: 27. April 2021, 15:46:44
    Bist du in deinem Shop ev. nicht als Hauptadministrator unterwegs, denn die '0' ist "normalerweise" die $_SESSION['customers_status']['customers_status_id'] des Hauptadministrators?
    ...

    Nein. Jeder Admin hat die 0 als $_SESSION['customers_status']['customers_status_id'].
    Der Super- oder Haupt-Admin unterscheided sich durch die S_SESSION['customer_id'], welche 1 ist, von den anderen Admins, welche IDs > 1 haben.

    demoncleaner hat das auch bereits angedeutet
    Jetzt bin ich verwirrt. Ich bin tatsächlich nicht der "Hauptadmin". Aber customers_status_id ist doch nicht die ID des customers sondern die ID des statuses. In so fern dürfte das doch vom Prinzip her alles korrekt sein.
    ...

    worauf jedoch nicht eingegangen wurde.

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #12 am: 27. April 2021, 15:50:30
    Danke noRiddle, dass du das nochmal klar gestellt hast. Liege ich denn mit meiner Vermutung bezgl. des Cachings generell richtig? Und wäre es nicht grundsätzlich interessant eine Funktion in modified zu haben, die den Admin von Hause aus vom Caching ausschließt. Ich fänd das praktisch. Denn der Admin ist doch der der ständig was ändert. Aber man will nicht unbedingt immer dafür dann den kompletten Cache leeren müssen. Da wäre das doch eigentlich eine angenehme Alternative oder?

    noRiddle (revilonetz)

    • Experte
    • Beiträge: 13.743
    • Geschlecht:
    Re: Cache ignorieren wenn Admin
    Antwort #13 am: 27. April 2021, 15:58:25
    Ich habe mir die Funktion des Caches noch nie genau angeschaut. Das könnte sicherlich GTB genau beantworten.

    Den Admin, oder generell alle Admins (= customers_status_id 0) aus der Cache-Funktion auszuschließen wäre, soweit ich das sehe, nicht nur sehr aufwändig im Code umzusetzen, sondern ist auch nicht wirklich nötig. Wenn ich etwas am Shop ändere und testen möchte schalte ich den Cache eben solange einfach aus.
    Wenn ich an einem Live-Shop arbeite und die Arbeiten umfangreicher sind wäre es vielleicht besser eine Test-Umgebung dafür zu haben.
    Oder fehlt mir da die Idee zu einem Anwendungsfall ?

    Gruß,
    noRiddle

    demoncleaner

    • Fördermitglied
    • Beiträge: 468
    Re: Cache ignorieren wenn Admin
    Antwort #14 am: 28. April 2021, 10:00:26
    Also der von Hanspeter vorgeschlagene Weg funktioniert soweit ich das sehen kann ganz gut. Muss das aber vielleicht nochmal länger beobachten. Das ist ja relativ easy diese beiden Zeilen in den extras zu ergänzen. Oder sind hier cache (nicht Browsercache!) und smartycache zwei verschiedene Dinge?

    Ein simpler Anwendungsfall wäre z.B. (so wie bei mir jetzt) dass es neben dem Admin noch andere Personen gibt, die am Content arbeiten und die aus diversen Gründen zwingend in der Liveumgebung arbeiten müssen. Da passiert es dann sehr schnell, dass nach der Bearbeitung vergessen wird den Cache wieder einzuschalten. Da wär es eben praktischer, wenn der Admin gar nicht schalten muss sondern für ihn der Cache einfach nicht greift.
    2 Antworten
    290 Aufrufe
    27. November 2023, 21:37:45 von lullifatz
    0 Antworten
    1297 Aufrufe
    02. April 2015, 18:12:26 von UIaLMFdVA
               
    anything