Сброс кеша файлов, подключаемых в теме дизайна, при их редактировании файлов по ftp Есть решение
Во темах дизайна .js, .css файлы подключаются в head.html таким образом:
<link href="{$wa_theme_url}css/site.css?v{$wa_theme_version}" rel="stylesheet">При редактировании файла "site.css" через админку переменная {$wa_theme_version} меняет свое значение и у пользователей сайта закешированный файл сбрасывается (если, конечно, на сервере настроено кеширование и пользователь уже был на сайте).
Однако если редактировать файл по ftp (я использую для подключения filezilla и редактор notepad++), то переменная не меняет свое значение и кеш не сбрасывается. Я взял за привычку каждый раз после редактирования .css файла заходить в head.html и вручную корректировать это значение. например, так:
<link href="{$wa_theme_url}css/site.css?v11" rel="stylesheet">Хотя, пожалуй, можно было бы делать так:
<link href="{$wa_theme_url}css/site.css?v11{$wa_theme_version}" rel="stylesheet">Но не суть. Это немного поднадоело. Всё равно нет-нет, но забудешь вручную обновить версию. Может, кто знает как можно автоматически обновлять {$wa_theme_version} в таком случае?
Эта тема в архиве. Добавление комментариев к ней отключено.










10 ответов
В theme.xml править номер версии?
Как автоматически править в момент сохранения файла?
Примерно понимаю, что это может работать как-то так:
{filesaved} {$counter = getThemeVersion()} {$counter = $counter + 1} {setThemeVersion($counter)} {/filesavedНо не могу понять как вызывать функцию {filesaved} в момент сохранения файла (и куда вообще подобный код работает, если речь, например, о файле .css)? Есть ли вообще такая техническая возможность? Может есть в других программах, например, phpstorm? Или я сейчас вообще фигню несу, и все разработчики при изменении одного файла и необходимостью изменения другого файла просто руками вносят эти правки в другом файле?
По ftp никак, имхо.
Если по взрослому, то локальный git-репозитарий, git-хук pre-commit и скрипт который будет менять версию в theme.xml. Само собой, на каждый клиентский сайт свой git-репо, заодно и история изменений и возможность отката и пр.
По простому - менять руками версию или не забывать после заливки по ftp заходить в админку, "пошевелить" какой-нибудь шаблон.
> По простому - менять руками версию или не забывать после заливки по ftp заходить в админку, "пошевелить" какой-нибудь шаблон.
- Когда-то давно любил экономить время и делать мелкие правки в админке. Потом, правда, заходил в тот же шаблон по ftp, а там каша. Вся табуляция летела к чертовой матери. Да и одно нечаянное движение из визуального редактора в обычный может привести к неожиданным последствиям, вплоть до фатал еррора. У меня, например, был случай когда на странице был такой код:
{if $smth} <span>blabla</span> {/if}А после правок со стороны клиента чудесным образом превращался визуальным редактором примерно в такой:
<p>{if $smth}</p> <p><span></span><span>blabla</span><span></span><span></span><span></span></p><p></p> <span></span>{/if}<span></span>С того раза шевеление шаблонов в админке у меня под запретом =)
> Если по взрослому, то локальный git-репозитарий, git-хук pre-commit и скрипт который будет менять версию в theme.xml.
- Спасибо большое! Понял куда копать.
Осталось понять, как определить что пора взрослеть и разбираться с git?)
И, по опыту, сколько времени на освоение основ всей этой магии уйдет? день-два или неделя-три?
Чтобы просто начать работать с git час максимум. С нуля. Настройка, gitignore, инициалиация, комиты. Если работаете над проектом в одиночку, то ветки, мёрджи, разрешение конфликтов, пуш/пул и пр. вам скорее всего еще долго не понадобятся.
Инфы в инете полно по этому делу.
Работа с шаблонами в режиме визуального редактора у нас под запретом. И всем клиентам строго на строго запрещено что-то там ковырять. Не удержались - переключили с html в визуальный? Сохранили? Сломалось? Молодцы - в кассу -)
подсказали в телеге.
А как оно работает?
md5 вычисляется например в index.html. то есть именно этот шаблон компилируется и кэшируется.
Если меняется user.css, то технически в index.html ничего не поменялось и скопилированный шаблон будет жить до истечения кэша. Потом md5 пересчитается и будет ок(по умолчанию через час вроде).
Если отключать кэширование, то любой более-менее нагруженный сайт загнётся.
Или я чего то не понял?
Оно читает файл css в память, берёт хэш от его содержимого и добавляется в параметр.
На период разработки можно было бы просто сделать
<link href="{$wa_theme_url}css/site.css?v{$wa_theme_version}{time()}" rel="stylesheet">Либо проверку по cookie.
Это понятно. Немного не так представлял себе работу механизма кэширования у smarty, пришлось поплотнее копнуть. Считал что такие вещи, как тот же md5 он хранит уже в вычисленном виде. Оказалось что нет.