it-swarm.com.de

Joomla 3. Wie funktioniert MediaVersion?

Ich hatte ein Problem in Joomla. Zum Beispiel versuche ich, eine JavaScript -Datei mit der Option für die automatische Version hinzuzufügen:

JHtml::_('script', '/path/to/script.js', array('version' => 'auto'));

Es klappt. CMS fügt hinzu HTML so etwas:

<script src="/path/to/script.js?1e1d67808f340bae20c17f7434590e08" type="text/javascript"></script>

Wenn ich diese Datei ändere, bleibt diese Version jedoch dieselbe.

Ich fand in Kernklassen Dokument und Version und Methoden für Manipulationen mit MediaVersion, aber es klärte nichts.

Also meine Frage. Wie funktioniert es. Wie wird diese Version aktualisiert?

3
AnkIF

Ebenfalls zu spät zur Party, aber der Grund für das Hinzufügen der Medienversion zu Javascript-Dateien usw. finden Sie unter https://api.joomla.org/cms-3/classes/Joomla.CMS.Version.html#) method_getMediaVersion , indem Sie auf den getMediaVersion-Text auf dieser Seite klicken. Zitieren:

Diese Medienversion wird zum Anhängen an Joomla-Kernmedien verwendet, um Browser zum erneuten Laden von CSS und JavaScript zu verleiten, da sie der Meinung sind, dass die Dateien erneuert werden. Die Medienversion wird nach dem Aktualisieren, Installieren, Erkennen und Deinstallieren des Joomla-Kerns erneuert.

Der Hauptgrund ist, dass Browser CSS- und JS-Dateien zwischenspeichern, sodass die folgende Situation auftreten kann:

  • ein Benutzer greift auf eine Joomla-Site zu, und die CSS- und JS-Dateien werden in den Browser des Benutzers heruntergeladen
  • die Joomla-Instanz wird aktualisiert. Dabei wird der Inhalt mehrerer CSS- und JS-Dateien geändert, die Dateinamen bleiben jedoch gleich
  • der Benutzer greift auf die neu aktualisierte Site zu, die neuen CSS- und JS-Dateien werden jedoch nicht neu geladen, da der Browser des Benutzers stattdessen die zwischengespeicherten Versionen verwendet.

Wenn die Medienversion verwendet wird, unterscheidet sich das Attribut src des Tags <script> Nach dem Upgrade und der Browser lädt die neue Datei.

Wenn Sie also selbst eine Erweiterung entwickeln, lohnt es sich, diesen Mechanismus mit Ihren eigenen CSS- und JS-Dateien zu verwenden, indem Sie die in der Frage beschriebene Option array('version' => 'auto') verwenden. Dies liegt daran, dass Joomla die Medienversion aktualisiert, wenn etwas auf der Instanz installiert oder neu installiert wird, nicht nur der Joomla-Kern.

Wie in der anderen Antwort erwähnt, wird die Medienversion in der Tabelle extensions im Feld params des Datensatzes mit name LIB_JOOMLA gespeichert. Bei jeder HTTP-Anforderung wird eine neue Medienversion erstellt, wenn JDEBUG aktiviert ist.

Mit Blick auf den Code wird die Medienversion aus Faktoren wie der Joomla-Version, der Joomla-Instanz secret und dem aktuellen Datum/der aktuellen Uhrzeit der Generierung der Medienversion generiert.

3
Robbie Jackson

Ein bisschen spät zur Party, aber ich habe mich das Gleiche gefragt. Wenn Sie die Version nicht selbst in den Optionen von addScript festlegen, überprüft Joomla die Tabellenzeile der Joomla-Bibliothekserweiterungsdatenbank. Wenn der Parameter nicht festgelegt ist oder Sie sich im Debug-Modus befinden, wird eine neue Version generiert. Um eine neue Version zu erhalten, schalten Sie Joomla Debug einfach ein und aus.

1
JulienV