Новости Joomla

Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list

👩‍💻 Совет по Joomla: несколько значений по умолчанию в XML-формах для стандартных полей типа list.При работе над плагином возникла необходимость указать стандартный набор из нескольких элементов стандартного поля списка. И хотелось указать их в стандартном же атрибуте default для полей. Когда это нужно?Когда Ваши пользователи устанавливают плагин и НЕ заходят в настройки - в коде вы можете использовать значения по умолчанию с помощью класса Registry (писал об этом ранее) и всегда быть уверенным, что хоть какие-то жизненно необходимые параметры к вам придут всегда. 🧐 Но как сделать то же самое для интерфейса админки?Пользователя нужно направлять, предлагать очевидный работоспособный сценарий для начала, а дальше он уже сам разберется. Когда человек заходит в параметры свежеустановленного плагина в Form ещё нет данных и параметры по умолчанию выставляются из атрибутов default в xml-полях.
<field name="showdesc" type="radio"                       label="PLG_CFI_PARAM_SHOWDESC"                       class="btn-group btn-group-yesno"                       default="1">                    <option value="0">JNO</option>                    <option value="1">JYES</option>                </field>
Здесь по умолчанию будет включено "Да". И если пользователь не переключит параметр, то при сохранении мы ожидаемо получим "да" в params плагина.Для поля списков type=&quot;list&quot; можно указать значение по умолчанию и многие знают, что его можно указать только одно.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default="id"                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
Но у нас поле с множественным выбором (атрибут multiple) и хотелось бы указать несколько значений по умолчанию...Оказывается, так можно сделать. Для этого в атрибуте default нужно указать json с нужными параметрами в виде {int}key : {string} value.Например, default='{"0":"id","1":"title"}'.
<field type="list"                       name="article_fields"                       label="article_fields"                       description="article_fields_desc"                       layout="joomla.form.field.list-fancy-select"                       multiple="true"                       default='{"0":"id","1":"title"}'                >                    <option value="id">id</option>                    <option value="title">title</option>                    <option value="alias">alias</option>                    <option value="introtext">introtext</option>                    <option value="fulltext">fulltext</option>                    <option value="state">state</option></field>
⚠️ Обратите внимание на кавычки! Поскольку json_decode не понимает одинарные кавычки собственно json нужно писать с двойными, а значение для атрибута default писать в одинарные.🙏 За подсказанное решение огромное спасибо участникам нашего сообщества - разработчикам Дмитрию Васюкову (@fictionlabs) и Игорю Бердичевскому (@septdir).@joomlafeed#joomla #разработка #webdev #development

0 Пользователей и 1 Гость просматривают эту тему.
  • 16 Ответов
  • 2767 Просмотров
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Версии CSS и JS файлов
« : 07.08.2018, 08:09:50 »
Привет, коллеги!
В последних версиях Joomla появилась такая штука как автоматический контроль версий CSS и JS файлов и обновление путей до них.

В шаблонах это выглядит так:
Код
JHtml::_('stylesheet', 'main.css', array('version' => 'auto', 'relative' => true));
'version' => 'auto'

В HTML коде страницы:
Код
<link href="/templates/mkelektro/css/main.css?dada6753446d773121b16e74c4633248" rel="stylesheet" />
Параметр ?dada6753446d773121b16e74c4633248
Соответственно, параметр время от времени обновляется.

Это очень круто. Но:
Кто знает, как это работает?
Когда обновляются пути? После какого действия или события?
Предлагаю это немного обсудить  ^-^

Поискал на оф. сайте, не нашёл.
Поделитесь, пожалуйста, если кто знает.
« Последнее редактирование: 07.08.2018, 08:33:26 от rsn »
Возможно, будет интересно: Интеграция с Ozon
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Версии CSS и JS файлов
« Ответ #1 : 07.08.2018, 09:59:42 »
по факту это актуально только для файлов ядра Joomla. параметр этот - это по сути просто версия Joomla.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Re: Версии CSS и JS файлов
« Ответ #2 : 07.08.2018, 10:47:28 »
del
 
« Последнее редактирование: 07.08.2018, 11:56:45 от draff »
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #3 : 07.08.2018, 12:28:34 »
по факту это актуально только для файлов ядра Joomla. параметр этот - это по сути просто версия Joomla.
Спасибо за ответ.
Можно уточнить: почему Вы считаете именно так, что событием для обновления параметра служит обновление Joomla?

Мне показалось, что параметр обновляется чаще, чем обновление Joomla. Хотя строго не следил, могу и ошибаться.

И кстати, это не менее актуально для файлов шаблона. Что я, собственно, и использую.
Возможно, будет интересно: Интеграция с Ozon
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Версии CSS и JS файлов
« Ответ #4 : 07.08.2018, 12:46:34 »
я не сказал, что событием для обновления параметра служит обновление Joomla. я сказал что по сути этот параметр - это версия Joomla :) а параметр обновляется гораздо чаще, например после установки расширений. а при включенном дебаге - вообще каждый раз при загрузке страницы. но вопрос в том, что это никак не влияет на сторонние расширения. ну вернее влияет, только толку что вы например установили какой-нибудь модуль, хеш версии поменялся, а файлы CSS например шаблона даже не думали меняться.  а тем не менее они будут перезагружены. разве это правильно? и наоборот - вы по фтп поменяли css шаблона, хеш версии при этом само собой не менялся. итого браузер грузит файл из кеша. короче, имхо идея нормальная, а реализация хромает.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Версии CSS и JS файлов
« Ответ #5 : 07.08.2018, 13:13:34 »
я не сказал, что событием для обновления параметра служит обновление Joomla. я сказал что по сути этот параметр - это версия Joomla :) а параметр обновляется гораздо чаще, например после установки расширений. а при включенном дебаге - вообще каждый раз при загрузке страницы. но вопрос в том, что это никак не влияет на сторонние расширения. ну вернее влияет, только толку что вы например установили какой-нибудь модуль, хеш версии поменялся, а файлы CSS например шаблона даже не думали меняться.  а тем не менее они будут перезагружены. разве это правильно? и наоборот - вы по ftp поменяли CSS шаблона, хеш версии при этом само собой не менялся. итого браузер грузит файл из кеша. короче, имхо идея нормальная, а реализация хромает.
Кстати, в более ранних версиях был такой метод getMd5Version. Сейчас он depricated, т.к. создаёт большую нагрузку, при каждой загрузке сайта.
Нынешний метод getMediaVersion не создаёт такой нагрузки, но не даёт правдивости хэшей, но если использовать встроенный кэш Joomla - проблема, как бы, сама себя ликвидирует. Т.к. хэш медиаверсии кэшируется и любое изменение в стилях должно приводить к сбросу кэша, а значит и к генерации нового хэша. Как по мне - реализация неплохая, но ей мало кто пользуется. Да и на боевых проектах редко вносятся такие изменения, что хэши постоянно сбрасывать приходится
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #6 : 07.08.2018, 13:23:30 »
Теперь понятнее. Спасибо.
и наоборот - вы по ftp поменяли CSS шаблона, хеш версии при этом само собой не менялся. итого браузер грузит файл из кеша. короче, имхо идея нормальная, а реализация хромает.
Согласен.
Развить бы то того, чтобы хеш обновлялся при обновлении даты редактирования css/js файла, вот это была бы вещь.
Возможно, это будет реализовано позже.

Да и на боевых проектах редко вносятся такие изменения, что хэши постоянно сбрасывать приходится
По-моему, как раз на "боевых" проектах, это и актуально.
Да, не очень часто. Но вручную обновлять версию, чтобы у старых пользователей обновилось, тоже не очень приятно на постоянной основе.
Возможно, будет интересно: Интеграция с Ozon
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Версии CSS и JS файлов
« Ответ #7 : 07.08.2018, 13:27:20 »
Развить бы то того, чтобы хеш обновлялся при обновлении даты редактирования css/js файла, вот это была бы вещь.
да, так и нужно
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #8 : 09.08.2018, 07:45:16 »
Код
JHtml::_('stylesheet', 'main.css', array('version' => 'auto', 'relative' => true));
Тут вместо auto можно указать просто число, номер версии.

Соответственно, можно этот номер править руками или подставить переменную.

Разумеется, тоже самое (подставить переменную) можно сделать в случае прямого указания ссылки на CSS в виде строки:
Код
<link rel="stylesheet" href="/templates/mkelektro/css/bottom.css?<?php echo $peremennaya; ?>">

Как думаете, что если сделать небольшой скрипт, который выполнять кроном каждые 5-10 минут, чтобы он записывал в дополнительный небольшой файл (в шаблоне) номер версии (если изменилась дата обновления файла css), и подцеплять этот файл в шаблон для использования номера версии?

Интересны мнения на этот счёт
Возможно, будет интересно: Интеграция с Ozon
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Re: Версии CSS и JS файлов
« Ответ #9 : 09.08.2018, 08:18:10 »
Народ, а нельзя как-то вручную обновить вот этот рандомный хвост в один клик? Было бы удобно.
*

kern.USR

  • Давно я тут
  • 827
  • 68 / 1
Re: Версии CSS и JS файлов
« Ответ #10 : 09.08.2018, 09:06:51 »
Включить режим отладки, зайти на фронтенд, выключить режим отладки
*

Театрал

  • Захожу иногда
  • 232
  • 7 / 0
Re: Версии CSS и JS файлов
« Ответ #11 : 12.01.2020, 02:03:01 »
Тоже вот хотелось бы, чтоб при малейшем изменении файла менялась и "его версия"... не включая режим отладки!

====

В общем вот, что смог придумать:

Код

function fileVersion ($fileName) {
    $folder = end(explode(".", $fileName)); // имя папки берём из расширения файла, т.к. стили и скрипты лежат в папках CSS и JS
    $realpath = realpath(dirname(__FILE__) . '/' . $folder . '/' . $fileName);
    return  'ver=' . date("Ymdhi", filemtime($realpath));
}

JHtml::_('stylesheet', 'template.css', array('version' => fileVersion ('template.css'), 'relative' => true));

JHtml::_('script', 'template.js', array('version' => fileVersion ('template.js'), 'relative' => true));


Проверок на существование файла нет, т.к. если JHtml::_('stylesheet', 'template.css' не сработает (файл отсутствует), то и функция не будет вызвана.
« Последнее редактирование: 26.12.2021, 12:21:31 от Театрал »
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Re: Версии CSS и JS файлов
« Ответ #12 : 12.01.2020, 10:12:41 »
Так а чем плох
Код
JHtml::_('script', 'template.js', array('version' => 'auto'));
или
Код
JDocument::addScriptVersion('template.js');
?
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
Re: Версии CSS и JS файлов
« Ответ #13 : 12.01.2020, 10:51:35 »
Там версия насколько понимаю зависит от версии Joomla, если вручную вносить правки, то версия не изменится.
*

sivers

  • Живу я здесь
  • 2593
  • 360 / 0
Re: Версии CSS и JS файлов
« Ответ #14 : 12.01.2020, 11:05:24 »
Там версия насколько понимаю зависит от версии Joomla, если вручную вносить правки, то версия не изменится.
Надо же - действительно так. Проверил сейчас - версия не поменялась.
На связи в telegram @sivers
sivers @ inbox . ru
https://sivers.su/
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #15 : 13.01.2020, 09:21:21 »
Я пока остановился на этом:

Разово:
В начале index.php шаблона после defined('_JEXEC') or die;
Код
$version = 221
;
Ниже, там, где подключаю CSS и JS - дописываю версию.
Так:
Код
JHtml::_('stylesheet', 'main.css', array('version' => $version, 'relative' => true));
И так:
Код
<link rel="stylesheet" href="<?php echo '/templates/'.$this->template.'/css/bottom.css?'.$version; ?>">
<script src="<?php echo '/templates/'.$this->template.'/js/custom.js?'.$version; ?>"></script>

В дальнейшем, если обновил CSS или JS и хочу, чтобы он точно обновился у посетителей, - правлю в начале index.php шаблона номер версии на следующий.
Это не кнопка в один клик, но тоже очень простое и быстрое действие.

Всё работает ОК. Никакой доп. нагрузки и задержки на проверку модификации файла.

Можно, конечно, это автоматизировать. Но пока другие задачи более приоритетны. Это и так устраивает.
Возможно, будет интересно: Интеграция с Ozon
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Re: Версии CSS и JS файлов
« Ответ #16 : 13.01.2020, 09:25:24 »
Кстати, сейчас подумал:
Можно номер версии брать из версии расширения (шаблона).
А эту версию шаблона, в свою очередь, проверять и обновлять, скажем, небольшим скриптом, запускаемым кроном хоть каждую минуту. Если изменился хотя бы 1 файл из шаблона - обновить последние цифры в версии шаблона.
Возможно, будет интересно: Интеграция с Ozon
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Плагин для транслитерации имен загружаемых файлов

Автор KSS

Ответов: 5
Просмотров: 2566
Последний ответ 02.10.2025, 09:57:13
от Леон
Не удается поменять название почты в мобильной версии ((

Автор stitch808

Ответов: 7
Просмотров: 1367
Последний ответ 27.03.2025, 23:23:58
от azm1n
Разные меню для мобильной и для ПК версии сайта

Автор jimka

Ответов: 7
Просмотров: 1337
Последний ответ 24.03.2025, 20:03:01
от R31rus
Валидация формы с загрузкой файлов на сервер

Автор kuliev

Ответов: 4
Просмотров: 919
Последний ответ 17.01.2025, 14:38:44
от kuliev
Отображение на мобильной версии

Автор annetkas

Ответов: 9
Просмотров: 9570
Последний ответ 28.10.2024, 10:56:18
от annetkas