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: MODUL: Cache Delete Buttons (CDB) zum Cache löschen von überall im Admin-Bereich

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
    Hallo an Alle,

    hier ein Schmankerl für die Community. Weil ich keine Lust mehr hatte, immer in auf die Seite 'Cache Optionen' wechseln zu müssen, um die Caches zu löschen, habe ich grade in rd. 30 Minuten ein kleines Plugin geschrieben (gewissermaßen ein Mini-Core-Hack), welches es ermöglicht, die beiden Caches von jedem Punkt aus im Admin-Bereich zu löschen. Es erscheinen 2 kleine Icons oben rechts neben dem Admin-Searchbar (anbei ein Screenshot). Dazu müssen nur 2 Dateien angepasst werden.

    Die veränderten Dateien der aktuellen 1.06´er Version sowie die 2 Icons habe ich als .zip angehängt. Für diejenigen, die jene Dateien bereits verändert haben, hier ein kurzer Workaround:

    In der admin/configuration.php die derzeitigen Zeilen 119 und 133:
    Code: PHP  [Auswählen]
            xtc_redirect(xtc_href_link(FILENAME_CONFIGURATION, 'gID=' . (int)$_GET['gID']));

    (also beide Zeilen) jeweils ersetzen mit:
    Code: PHP  [Auswählen]
                    ### BOC - Cache Cleaner Extension - added by I.J., OWL-Concept.com, 23.02.2013 ###
                    if (isset($_POST['go']) && ($_POST['go'] == 'back')) {
                            echo ('<html><body onload="history.go(-1)"></body></html>');
                    } else {
                            xtc_redirect(xtc_href_link(FILENAME_CONFIGURATION, 'gID=' . (int)$_GET['gID']));
                    }
                    ### EOC - Cache Cleaner Extension - added by I.J., OWL-Concept.com, 23.02.2013 ###

    Dann in der admin/includes/admin_search_bar.php nach dem letzten </li> Tag (also nach Zeile 65) folgendes einfügen:
    Code: PHP  [Auswählen]
    <li>
            <form style="display:inline" name="del_cache" action="configuration.php?gID=11&action=delcache" method="post">
                    <input type="hidden" name="go" value="back">
                    <input type="image" style="border:0px" src="images/icons/del_cache.png" alt="<?php echo BUTTON_DELETE_CACHE; ?>" title="<?php echo BUTTON_DELETE_CACHE; ?>">
            </form>
    </li>
    <li>
            <form style="display:inline" name="del_temp_c" action="configuration.php?gID=11&action=deltempcache" method="post">
                    <input type="hidden" name="go" value="back">
                    <input type="image" style="border:0px" src="images/icons/del_temp_c.png" alt="<?php echo BUTTON_DELETE_TEMP_CACHE; ?>" title="<?php echo BUTTON_DELETE_TEMP_CACHE; ?>">
            </form>
    </li>

    Nun noch die 2 Icons in den Ordner admin/images/icons hochladen und fertig!

    Viel Spass damit und Gruß,  :bye:

    Ingo

    [EDIT Tomcraft 02.04.2013: Modul auf Version rel.02 aktualisiert.]
    [EDIT Tomcraft 02.04.2013: Modul auf Version rel.03 aktualisiert.]
    [EDIT Tomcraft 02.04.2013: Modul auf Version rel.04 aktualisiert.]

    Linkback: https://www.modified-shop.org/forum/index.php?topic=24951.0

    Tommy200463

    • Neu im Forum
    • Beiträge: 27
    • Geschlecht:
     :thx: Funzt, problemloser Einbau!

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Denke mal, die Funktion wäre im Frontend (natürlich als eingelogter Admin) besser aufgehoben, da man zum Cache leeren ja eingelogt sein muß und erst den Adminbereich aufrufen muß um es ausführen zu können.

    Trotzdem danke für Deine Inputs.

    Gerd

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
    @Tommy200463: Supi, freut mich!  :thumbs: Hoffe das passt sich gut in das Standard-Admin-Template ein. Könntest Du evtl. davon auch einen Screen machen?

    @Gradler: Tja, man kann wohl viele Funktionen, die ins Backend gehören, auch im Frontend einbauen. Ich hatte auch daran gedacht, aber falls an irgend einer Stelle im Script mal was schief geht (z. B. nach einem Update), dann steuern irgendwann Deine Kunden Deinen Shop  :lol2:. Aber mal im Ernst: sicher wäre das Leeren des Caches da nicht so sicherheitsrelevant, aber das ist wohl eher eine Frage des Prinzips. Und es ist so, wie es jetzt ist, definitiv nur 1 Klick mehr, denn wenn man es im Frontend ausführen würde, müsste man noch einen page refresh machen. Im Backend hat man sich aber jetzt schon 2 Klicks gespart: den, um zu den Cache Optionen zu kommen, und jenen, um wieder auf die ursprüngliche Seite zurückzukehren.

    Oder sagen wir mal so: Für Entwickler, die permanent neue Layout-Dateien per FTP hochschieben, wäre es sinnvoll, den Template-Cache-Button dort zu haben. Für reine Shopbetreiber eher nicht, denn den (Daten-)Cache wird dieser i. A. nur dann leeren müssen, wenn er was DB-mäßig im Backend geändert hat - d. h. er befindet sich ohnehin grade im Admin-Bereich.

    Aber wer das auch im Frontend haben möchte, dem programmiere ich das gerne gegen Honorar ... oder Du machst das, Gradler ...  :-D

    Gruß, Ingo

    mrheat

    • Frisch an Board
    • Beiträge: 68
    • Geschlecht:
    ist IMHO eine super Funktion, gerade in der Entwicklungsphase - mal schauen, ob ich es hinbekomme dies wie Gerd vorgeschlagen hat, im Frontend zu implementieren.

    Gruss  Dirk

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
    Hallo Dik,

    ja, mach das mal - bin echt gespannt. Tipp: wenn Du es in die Admin-Info-Box einbauen willst (dort wo auch der Administrator-Button erscheint), dann musst Du wahrscheinlich nur die Variable $box_content in der Datei templates/xtc5/source/boxes/admin.php ergänzen.

    Gruß, Ingo

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
    ... ach komm egal, was soll´s  :-D . Hab das grade mal in die Hand genommen ... anbei das geänderte Komplettpaket. Es sind die o. g. Datei sowie 2 Icons hinzugefügt worden. Also es wurde in der templates/xtc5/source/boxes/admin.php folgendes ergänzt:

    nach Zeile 20 folgendes einfügen:
    Code: PHP  [Auswählen]
    $cache_clean_buttons="";

    suche (etwa Zeile 53) das hier:
    Code: PHP  [Auswählen]
      $box_content= '<strong>' . BOX_TITLE_STATISTICS . '</strong><br />' . $orders_contents . '<br />' .
                                             BOX_ENTRY_CUSTOMERS . ' ' . $customers['count'] . '<br />' .
                                             BOX_ENTRY_PRODUCTS . ' ' . $products['count'] . '<br />' .
                                             BOX_ENTRY_REVIEWS . ' ' . $reviews['count'] .'<br />' .
                                             $admin_image . '<br />' .$admin_link;

    und ersetze es mit diesem hier:
    Code: PHP  [Auswählen]
      $cache_clean_buttons = '
      <div style="margin-top:10px; padding:5px 0 2px 10px; border:1px solid #707070;" >
                    <form style="display:inline; padding-right:15px;" name="del_cache" action="admin/configuration.php?gID=11&action=delcache" method="post">
                            <input type="hidden" name="go" value="back">
                            <input type="image" style="border:0px" src="admin/images/icons/del_cache_2.png" alt="'
    .BUTTON_DELETE_CACHE.'" title="'.BUTTON_DELETE_CACHE.'">
                    </form>
                    <form style="display:inline" name="del_temp_c" action="admin/configuration.php?gID=11&action=deltempcache" method="post">
                            <input type="hidden" name="go" value="back">
                            <input type="image" style="border:0px" src="admin/images/icons/del_temp_c_2.png" alt="'
    .BUTTON_DELETE_TEMP_CACHE.'" title="'.BUTTON_DELETE_TEMP_CACHE.'">
                    </form>
      </div>'
    ;
      $box_content= '<strong>' . BOX_TITLE_STATISTICS . '</strong><br />' . $orders_contents . '<br />' .
                                             BOX_ENTRY_CUSTOMERS . ' ' . $customers['count'] . '<br />' .
                                             BOX_ENTRY_PRODUCTS . ' ' . $products['count'] . '<br />' .
                                             BOX_ENTRY_REVIEWS . ' ' . $reviews['count'] .'<br />' .
                                             $admin_image . '<br />' .$admin_link .
                                             $cache_clean_buttons;
    und schon habt ihr den ganzen Salat auch im Frontend, sofern Ihr eingeloggt seid.  :lol2: Einbau auf eigene Gefahr ... *gg

    @Tomcraft: bitte einmal verschieben - danke Dir.

    Gruß, Ingo

    P.S.: Hab da noch Platz gelassen für eventuelle weitere Funktionen *gg. Übrigens ist ein page refresh nach Leeren eines Caches eventuell doch nicht mehr erforderlich.

    [EDIT Tomcraft 02.04.2013: Modul in Beitrag 1 aktualisiert.]

    mrheat

    • Frisch an Board
    • Beiträge: 68
    • Geschlecht:
    Hi Ingo,

    super - da ist man gerade mal frühstücken ....

    Gruss  Dirk

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
    hehe ... ach Mist. Hab grade bemerkt, dass die entsprechenden Sprachkonstanten im Frontend ja nicht mitgeladen werden. Hier nochmal die hoffentliche Endversion mit angepassten Sprachdateien.

    also noch ergänzt wurde in der lang/german/german.php :
    Code: PHP  [Auswählen]
    // Button texts for extension 'Cache Delete Buttons'
    define('BUTTON_DELETE_CACHE', 'Cache leeren');
    define('BUTTON_DELETE_TEMP_CACHE', 'Templatecache leeren');

    bzw. in der lang/english/english.php :
    Code: PHP  [Auswählen]
    // Button texts for extension 'Cache Delete Buttons'
    define('BUTTON_DELETE_CACHE', 'Delete Cache');
    define('BUTTON_DELETE_TEMP_CACHE', 'Delete Templatecache');

    Gruß, Ingo

    [EDIT Tomcraft 02.04.2013: Modul in Beitrag 1 aktualisiert.]

    mrheat

    • Frisch an Board
    • Beiträge: 68
    • Geschlecht:
    Ingo,
    danke nochmals fürs teilen - funktioniert hervorragend  :thx:

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Erstmal Danke für die Erweiterung.

    Im Adminbereich funktioniert es lokal einwandfrei. Probleme gibt es im Frontend. Es werden die Buttons angezeigt, beim drauflicken blitzt kurz ein Fehlermeldung (weiße Textseite) auf und der Cache bleibt ungellert.

    Code: PHP  [Auswählen]
    Warning: Cannot modify header information - headers already sent by (output startet at S:\xampp\htdocs\u106\admin\configuration.php:139) in S:\xampp\htdocs\u106\admin\includes\functions\general.php on line 198

    Es wurden das Paket CDB - Cache Delete Buttons_rel.03.zip auf einer aktuellen 1.06 R4356 installer Version installiert.

    Denke mal, da fehlt was?

    Gerd

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
    Hallo Gerd,

    nein, müsste alles vorhanden sein. Bei den anderen beiden und bei mir funktioniert es ja auch. hast Du die Dateien so übernommen, wie sie im Anhang sind, oder hast du den Code eingebaut? Falls letzteres, überprüfe mal den Code der entsprechenden PHP-Dateien nach Whitespaces (insbesondere am Anfang, vor "<?php") ... wenn es das nicht war, lasse bei diesen Dateien mal das schließende "?>" am Ende weg.

    Es kann aber auch sein, dass durch die Veränderungen an Deinem Datei-System, an anderer Stelle (in einer von der application_top.php aufgerufenen Datei) ein Whitespace sitzt ... Deine Fehlermeldung ist immer mein Horror, weil man teilweise ewig sucht, bis man den Fehler gefunden hat.

    Probier´s einfach mal ...

    Gruß, Ingo

    P.S.: auf ´nem XAMPP hatte ich das übrigens noch nicht getestet ...
    Und nochwas: wenn er den Rücksprung macht, sollte der Cache aber geleert worden sein. Bei Cache-Leerung im Frontend wird er sofort wieder befüllt mit den neuen Cache-Daten - überprüfe auch mal den Änderungszeitpunkt der Dateien. Möglicherweise glaubst Du nur, dass er nicht geleert wurde.

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Hallo Ingo,

    danke für den Input. Mit den ekelhaften Zeichen vor dem <?php hattest Du Recht. Ich hatte die Dateien kurz mal mit einem anderen Editor als sonst geöffnet. Und der hat vielleicht sein Eigenleben beim "speichern unter" ins xampp Shopverzeichnis ausgelebt?!?

    Vermutlich auch mit dem, daß sich der Cache im Frontend nach dem Leeren gleich wieder füllt, da ja kurzfristig das Backend aufblitzt mit der Configuration-Seite vom Cache leeren.

    Das mit dem Datum muß ich heute abend mal checken. Bin es halt gewohnt den Cache manuell im Ordner zu löschen in xampp.

    Gerd

    Gradler

    • Viel Schreiber
    • Beiträge: 2.083
    • Geschlecht:
    Hallo Ingo,

    hab jetzt das Szenario nochmal ausgeführt. Es läuft auch im Frontend. Du hast Recht, der Cache füllt sich wieder und alle darin vorhanden Daten - nach dem Cache leeren - haben neueres Datum bzw. Uhrzeit.

    Es läuft auch auf XAMPP, warum auch nicht.

    Also, perfekte Erweiterung, Danke nochmals, weiter so

    Gerd

    John_Delay

    • Mitglied
    • Beiträge: 124
    • Geschlecht:
     :thumbs:
    Shop Hosting
    6 Antworten
    6732 Aufrufe
    07. Februar 2010, 19:59:35 von Tomcraft
    7 Antworten
    1646 Aufrufe
    03. Februar 2023, 09:54:31 von Tomcraft
    7 Antworten
    7355 Aufrufe
    04. Mai 2010, 16:08:36 von doni