質問: joomla内でファイルの変更時に更新するようにcssとjsの自動バージョン管理を強制する方法!テンプレート? テンプレート内のcssとjsのバージョンがファイルの変更時に自動的に更新されるようにしたいと思います。 jhtmlを自動バージョン管理で試しましたが、望ましい結果は得られませんでした。jhtml::_('stylesheet', 'template.css', array('version' => 'auto', 'relative' => true)); ファイルの変更時にバージョンの自動更新は可能ですか?そうでない場合、手動でバージョンを強制的に更新する方法はありますか?
回答: 古い非推奨の方法は、_md5sum_ファイルをアセットフォルダに配置し、アセットファイルが変更されるたびにそれを更新することです。ファイルを作成したら、バージョンなしまたはバージョンとして_md5sum_を使用してアセットを追加します。_jhtml::_('stylesheet', 'template.css', array('relative' => true)); jhtml::_('stylesheet', 'template2.css', array('version' => 'md5sum', 'relative' => true)); _このメソッドはjoomla 4.0ではサポートされません。テンプレートファイルは最終的なものなので(オーバーライドできません)、変更時間をバージョンとして使用するのが簡単な方法です。_$version = filemtime(jpath_themes . '/' . $this->template . '/css/template.css'); jhtml::_('stylesheet', 'template.css', array('version' => $version, 'relative' => true)); _他のすべてのファイルについては、変更できるため、変更時間のチェックはより複雑です。 jhtml::stylesheet()でpathonlyオプションを設定すると、ファイルへの相対urlを取得できます。次に、urlからルートパスを削除し、実際のルートパスを追加します。_// get joomla web root path. $root = juri::root(true); // get relative url to file. $relative = jhtml::_('stylesheet', 'template.css', array('pathonly' => true, 'relative' => true)); // remove web root path if needed. $relative = $root !== '' ? substr_replace($relative, '', 0, strlen($root)) : $relative; // prepend real root path. $version = filemtime(jpath_root . $relative); // add the stylesheet with custom version. jhtml::_('stylesheet', 'template.css', array('version' => $version, 'relative' => true)); _