Neu Wie ändere ich die nTemplateVersion? v=1

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Hallo zusammen,
was muss ich machen, um den Zähler bei den einzubindenen Template-Dateien zu ändern? Also das v=1 am Ende der URLs?
HTML:
<link type="text/css" href="xxx/bootstrap.css?v=1" rel="stylesheet">
<link type="text/css" href="xxx/basteltheme.css?v=1" rel="stylesheet">
<link type="text/css" href="xxx/offcanvas-menu.css?v=1" rel="stylesheet">

PHP:
<link type="text/css" href="{$cCSS}?v={$nTemplateVersion}" rel="stylesheet">
Wie ändere ich den Wert von nTemplateVersion?

Ich möchte den Expires Wert auf einen Monat erhöhen, dann brauche ich aber eine Möglichkeit bei einem Update auch die neuen Daten an die User ausliefern zu können.

Danke und frohe Ostern,
Mike
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
Schau am besten in die header.tpl und auch in die footer.tpl, dort werden die einzelnen Dateien ja eingebunden.


Mein Vorschlag, da ich denke das du den cache unter anderem für Google erhöhen möchtest, mach das so

Im Original sieht das im header so aus
Code:
  <link type="text/css" href="asset/{$Einstellungen.template.theme.theme_default}.css{if isset($cPluginCss_arr) && $cPluginCss_arr|@count > 0},plugin_css{/if}?v={$nTemplateVersion}" rel="stylesheet">

ändere das auf
Code:
            <link type="text/css" href="asset/{$Einstellungen.template.theme.theme_default}.css{if isset($cPluginCss_arr) && $cPluginCss_arr|@count > 0},plugin_css{/if}&{$smarty.now|date_format:'%e%I'}" rel="stylesheet">

nun ist dein cache für diese Datei ein Jahr haltbar, in Wirklichkeit erneuert sich der für einen wiederkommenden User aber nach einer Stunde, es könnte ja sein das du mal Änderungen am stylesheet vornimmst.

gleiches machst du auch in den JS Dateien die sich im Footer befinden.

was habe ich gemacht:

aus dem ?v={$nTemplateVersion} was einen cache von 24h produziert, habe ich ein &{$smarty.now|date_format:'%e%I'} gemacht.

warum:
In der config vom minifi steht drin das wenn man &1234 übergibt, wird der cache automatisch auf ein Jahr gesetzt.
Da wir aber wollen das der User unsere css und js nicht wirklich ein Jahr cached weil ja immer Änderungen vorkommen können, habe ich nur einen Teil von einem Zeitstempel übergeben.

Mach das aber nur mit den Minifizierten Daten.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Hi,
so etwas empfinde ich aber eher als "Notlösung". Warum kann man das nicht gleich "richtig" machen? Wir haben damals einen eigenen XTC-Fork rausgebracht. Dort wurden auch die CSS und JS für das Template automatisch zusammengefasst und verkleinert. Bei Änderungen (wenn der Shop die CSS neu generieren musste) wurde automatisch ein Zähler erhöht und alle haben sofort die Änderungen mitbekommen.

Ich habe mir jetzt noch mal den Code angesehen - es war viel zu einfach! :D

Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Template>
    <Name>Basteln-Selbermachen Template</Name>
    <URL>https://www.basteln-selbermachen.de</URL>
    <Version>1.02</Version>
    <ShopVersion>405</ShopVersion>
    <Parent>Evo</Parent>

Ich hatte schon testweise die Version in der tempate.xml hochgezählt - dann sehe ich das im Backend bei der Übersicht schon richtig, aber es hatte keinerlei Auswirkung auf den generierten Code. Ich muss nur einmal in die Einstellungen des Templates, nichts ändern, aber "Speichern" klicken. Dann wird die Version in die Datenbank übernommen und mit dem Code ausgeliefert. Man muss nur drauf achten, dass man bei einer Fließkommazahl bleibt.

Frohe Ostern,
Mike
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
ja dann hast du aber nur einen cache von 24h was Google nicht gefällt.

Im XTC war das alles ein wenig einfacher, da man dort direkt im Code rummurksen "konnte/musste"
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Hm,
ok, in der /includes/libs/minify/config.php habe ich den einen Tag gefunden:
PHP:
$min_serveOptions['maxAge'] = 86400;

Aber ich vermute mal, da läuft was schief, denn in der /includes/libs/minify/index.php gibt es eigentlich diesen Code:
PHP:
// check for URI versioning
if (preg_match('/&\\d/', $_SERVER['QUERY_STRING']) || isset($_GET['v'])) {
    $min_serveOptions['maxAge'] = 31536000;
}
Der sollte dafür sorgen, dass bei einem "v" als GET-Parameter das maxAge auf ein Jahr hoch gesetzt wird.

Aber wenn ich diese URL aufrufe: /asset/basteltheme.css?v=1
dann besteht $_GET nur noch aus:
Code:
 ["g"]=> string(15) "basteltheme.css"
Scheinbar wird das $_GET-Array bereinigt und damit fehlt das v=1 beim Minify ...

Dazu müssten sich mal die JTL- Shop Entwickler äussern. :(
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Stimmt ...
Code:
RewriteRule ^asset/(.*)$ includes/libs/minify/?g=$1 [L]
liefert laut einem Online-Tool zwei Fragezeichen (%3F = ?) in der URL:

Ich war schon mal besser in Sachen RegEx :( Hat jemand eine Idee, wie man die .haccess anpassen müsste, dass der GET-Parameter korrekt angehängt wird?

Code:
 http://www.example.com/includes/libs/minify/?g=basteltheme.css&v=1
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Nachtrag:
Wenn ich in $_SERVER["REQUEST_URI"] prüfe, ob das ?v= enthalten ist, dann sind die Daten auch ein Jahr gültig:
PHP:
// check for URI versioning
if (preg_match('/&\\d/', $_SERVER['QUERY_STRING']) || isset($_GET['v']) || (strpos($_SERVER['REQUEST_URI'], '?v=') !== false)) {
    $min_serveOptions['maxAge'] = 31536000;
}

Ich mache mal ein Ticket auf.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
Ich habe das damals zur 4.04er mal angesprochen, da hieß es das es so gedacht ist.

Ich sehe darin auch einige Probleme, wenn man es so macht wie du das gerne hättest, daher habe ich ja den oben gezeigten Weg gewählt.
Ich kann einem User keinen Cache von einem Jahr geben, da ich ja auch innerhalb einer Templateversion an den Styles und auch am JS Änderungen vornehme (jedes Plugin kann beides bei der Installation ändern) und wie du ja schon bemerkt hast gibt es ja keine einzelne Versionierung der Styles und Scripts.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Hm, Änderungen am Code, ohne gleichzeitig eine irgendwie geartete Versionsnummer zu erhöhen, ist auch nicht sauber / wünschenswert, oder? Meinen kompletten Shop habe ich in einem Git-Repository. Wenn ich da an meinem Child-Template etwas ändere, dann kann ich problemlos die Version im Template hochzählen. Aber das macht sicherlich nicht jeder. Um so wichtiger wäre dann aus meine Sicht so etwas wie eine "Build"-Nummer oder vergleichbar zu implementieren. Eine Nummer, die (ggf. sogar automatisch) bei jeder Änderung hoch gezählt wird. Die wird z. B. bei jedem Speichern eines Templates / Plugins im Backend hoch gezählt. Dann bekommen die User immer die korrekte Dateiversion ausgeliefert, die dann auch eine lange Gültigkeit haben. Und wenn ich eine Änderung mache, dann möchte ich auch nicht, dass die User die noch bis zu 24 Stunden weiter verwenden müssen.
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
Das jemand das in einem Git hat oder ständig die Version hochzählt wird sehr selten vorkommen, noch dazu schrieb ich ja schon, das auch Plugins die du installierst das css und JS verändern.

plugin_css
plugin_js_body
plugin_js_head

Dann musst du bei jedem Plugin Update deine Templateversion hochzählen.

Hm, Änderungen am Code, ohne gleichzeitig eine irgendwie geartete Versionsnummer zu erhöhen, ist auch nicht sauber / wünschenswert, oder?

Der Core bleibt bei meiner Version ja unberührt, es wird über das Child in der header und footer.tpl geändert.
 

Xantiva

Sehr aktives Mitglied
28. August 2016
1.789
315
Düsseldorf
Dann musst du bei jedem Plugin Update deine Templateversion hochzählen.
Nein - eben nicht. Wenn der Shop so etwas wie eine Build-Nummer automatisch generiert, braucht man das nicht.

PHP:
<link type="text/css" href="{$cCSS}?v={$nTemplateVersion}.{$nTemplateBuildNumber}" rel="stylesheet">

Das Minify Package sieht das Verhalten ja aus gutem Grund genau so vor: https://github.com/mrclay/minify/blob/master/docs/UserGuide.wiki.md#far-future-expires-headers
 

css-umsetzung

Offizieller Servicepartner
SPBanner
6. Juli 2011
7.222
1.958
Berlin
Das macht der Shop aber nicht und das Template kann nicht wissen was die Plugins machen, ich glaube der Aufwand die auch noch zu überwachen wäre zu groß.

Ich habe in meinem Child Template z.B. einen eigenen Less Compiler integriert.
Wenn ich die entsprechende Einstellung im Child wähle, werden die einzelnen css und less Dateien aus dem Template überwacht und bei Änderungen automatisch neu compiled oder immer neu Generiert,
An diesem Punkt könnte man vermutlich direkt die Variable {$nTemplateVersion} ändern und um eine Buildnummer erweitern, aber wer weiß was man dann durcheinander bringt, ich glaube es gibt im Shop selbst auch Abfragen welche Templateversion verwendet wird.

Aber auch hier wird nur das Template selbst überwacht und nicht die Plugin Ressourcen.
 
Ähnliche Themen
Titel Forum Antworten Datum
Neu Überverkäufe mit Kindartikeln - wie richtig einstellen ? User helfen Usern - Fragen zu JTL-Wawi 23
Neu Closest Droppoint: Wie im Shop dem Kunden anbieten? JTL-ShippingLabels - Fehler und Bugs 4
Neu Sonderpreise zum Mengenabverkauf von Überverkaufsprodukten - wie löst ihr das? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wie erstelle ich Bundles mit JTL Wawi? User helfen Usern 1
Auftrag Inlandskunde mit USt-Id - wie erfassen JTL-Wawi 1.7 6
Neu Konto an den Shop übertragen - wie funktioniert das praktisch? Umstieg auf JTL-Shop 0
Beantwortet E-Mail Vorlage Versandbestätigung per Workflow ausführen, wie? JTL-Workflows - Ideen, Lob und Kritik 7
Neu Wie löscht man eine Lizenz aus der Lizenzverwaltung im KC? Allgemeine Fragen zu JTL-Shop 2
Neu REST-API - Auftrag erstellen - wie Versandposition hinzufügen? Schnittstellen Import / Export 0
Neu Wie handelt Ihr die GPSR Anforderung an Produktbilder bei Amazon ? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Wie legt man neue Erlöskonten an Arbeitsabläufe in JTL-Wawi 2
Neu Wie kann ich die DOM-Size reduzieren? Technische Fragen zu Plugins und Templates 1
Neu Wie kann man Freipositionen in einem Auftrag gruppiert darstellen? Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 4
Neu Wie kann ich die Verfügbarkeiten eines Artikels bei Amazon steuern? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Sprachvariablen: Statt mehreren Variablen (wie z. B. %s %s) nur eine bestimmte ausgeben Allgemeine Fragen zu JTL-Shop 2
Neu Sendungsnummern an ebay übertragen? wie? eBay-Anbindung - Fehler und Bugs 6
Neu E-Rechnung verarbeiten, wie löst ihr das? Smalltalk 2
Wie versendet die Wawi E-Mails? JTL-Wawi 1.9 4
Neu Wie finde ich per SQL heraus welche Aufträge auf Teillieferbar stehen? JTL Ameise - Eigene Exporte 1
Neu Wie kann ich Artikel mit Lagerbestand 0 beim Import inaktiv setzen) JTL-Ameise - Ideen, Lob und Kritik 17
Neu JTL-Worker als Windows-Dienst - wie macht Ihr das? User helfen Usern - Fragen zu JTL-Wawi 8
Neu Wie entferne ich die Lastschrift Checkbox? Allgemeine Fragen zu JTL-Shop 2
Neu Ameise (WAWI 1.9.5.2) -> Wie funktioniert der Upload der Produktion JTL-Plan&Produce - Ideen, Lob und Kritik 0
Bestehender eBay-Shop -- JTL Shop neu -- Abgleich -- wie vorgehen? JTL-Wawi 1.9 1
Wie lange benötigt bei euch die Wawi zum starten JTL-Wawi 1.9 7
Neu .htaccess wie nun einstellen ? Installation / Updates von JTL-Shop 2
Beantwortet Manueller Worklfow Rechnung für Mahnung, wie den offenen Rechnungsbetrag bei Teilrechnung ausgeben? JTL-Workflows - Ideen, Lob und Kritik 9
Neu Wie in der Wawi gebrauchte Artikel vom Endkunden einkaufen User helfen Usern - Fragen zu JTL-Wawi 4
Neu Wie kann ich den Titel bei Google Ergebnissen ändern? Allgemeine Fragen zu JTL-Shop 6
Neu Bildgrößen auf der Startseite (in den Boxen wie z.B. Top-Angebot) Allgemeine Fragen zu JTL-Shop 4
Neu Hersteller ändert SKU von Kind Artikel (Varianten) | Vater beleibt gleich - wie verfahren bei "gemischtem" Lager alt/neu User helfen Usern - Fragen zu JTL-Wawi 3
Neu Sortierung nach Bestand - so wie im JTL Shop 4 JTL-Shop - Ideen, Lob und Kritik 2
Neu Wie kann ich bestimmte Wörter in der Suchfunktion von JTL-Shop ausschließen? Allgemeine Fragen zu JTL-Shop 0
Neu Vererben der Bildern einer Variation auf alle anderen Variationen, wie beim Vererben von Vater zu Kind-Artikeln, möglich wie? User helfen Usern - Fragen zu JTL-Wawi 0
Neu Drop Shipping - Beide Firmen mit JTL Wawi - Wie löse ich das? Arbeitsabläufe in JTL-Wawi 10
Neu Wie das neue Funktionsattribut storefront_presentation_main_product anlegen? Shopware-Connector 7
Neu GPSR Verordnung - Wie handhabt ihr das im Shop mit dem Nova Template? Betrieb / Pflege von JTL-Shop 26
Neu Bei VarKombi-Artikeln, wie immer eine Farbe und Größe vorauswählen, damit alle Bilder angezeigt werden? Allgemeine Fragen zu JTL-Shop 4
Neu Wechsel Auftragspaket im Kundencenter - wie und wann ? User helfen Usern - Fragen zu JTL-Wawi 6
Paypal Kontosperre / Verbot bestimmte Artikel in bestimmte Länder zu liefern - wie Umsetzen? JTL-Wawi 1.9 2
Neu Wie kann ich über eigene Felder eine Mehrfachauswahl erstellen? User helfen Usern - Fragen zu JTL-Wawi 4
Neu Wie andere Länder und Sprachen vom Google Shopping Plugin mit dem Merchant Center verbinden Plugins für JTL-Shop 6
Neu Wie macht ihr euch euch Testumgebung? Gelöste Themen in diesem Bereich 6
Neu Ebay Verkäufe - Auswahlartikel mit händischer Auswahl in der Rechnung - wie bei Wawi 1.9 vorgehen ?! Arbeitsabläufe in JTL-Wawi 0
Neu Unterschiedliche Lagerplätze, wie konfigurieren? Waage nur mit WMS? Arbeitsabläufe in JTL-WMS / JTL-Packtisch+ 2
Neu Wie Reklamationen aus Statistik ausschließen? Arbeitsabläufe in JTL-Wawi 2
Wie FBA Gutschrift erzeugen ohne Auftragsbezug? JTL-Wawi 1.9 0
Neu Gebinde wie angelegt unter sonstiges als Barcode ausgeben Druck-/ E-Mail-/ Exportvorlagen in JTL-Wawi 11
Neu Kunde zahlt bar bei Anlieferung, wie löse ich das? Arbeitsabläufe in JTL-Wawi 15
Warum kann ich die Wawi 1.9.6.0 nicht downloaden? JTL-Wawi 1.9 11

Ähnliche Themen