Новости 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 Гость просматривают эту тему.
  • 6 Ответов
  • 1287 Просмотров
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Скрипт на mootools
« : 12.03.2014, 11:13:56 »
Здравствуйте! Ищу простой скрипт смены изображений из заданной папки. Нашел вот такой, но мне надо на  мутулс.

<script type="text/javascript">
function smoothChange(id){
setTimeout(function(){
changePhoto(id)},5000);
}
function changePhoto(id){
var el=document.getElementById(id);
var num=el.name.substring(3);
if(num>2){num=0;}
var dir="http://site.ru/imgs/";
el.src=dir+'pic'+(num*1+1)+'.jpg';
el.name='pic'+(num*1+1);
}
</script>
<img width="270" class="photo" src="" name="pic1" onload="smoothChange('photoframe')" id="photoframe">
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Скрипт на mootools
« Ответ #1 : 12.03.2014, 15:02:34 »
Mick_20? тут пару строк чистого javascript зачем здесь костыль в виде Mootools. Для поиска элемента по ид?
Если код работает то используйте. Немного подправил функцию
Код: javascript
function changePhoto(id){
var el = document.getElementById(id),
dir = "http://site.ru/imgs/",
num = +el.name.substring(3);
num = num > 2 ? 0 : num++;
el.src = dir + 'pic' + num + '.jpg';
el.name = 'pic' + num;
}
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Скрипт на mootools
« Ответ #2 : 13.03.2014, 07:47:30 »
а можно еще вопрос)
Мне нужно обернуть картинку в тег ссылки:
Код
<a href="http://site.ru/imgs/pic1.jpg"><img width="270" class="photo" src="http://site.ru/imgs/pic1.jpg" name="pic1" onload="smoothChange('photoframe')" id="photoframe"></a>

как сделать чтобы href тоже менялся вместе с картинкой?
Мой сайт про корабли
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Скрипт на mootools
« Ответ #3 : 13.03.2014, 12:32:55 »
Код: javascript
function changePhoto(id){
var el = document.getElementById(id),
dir = "http://site.ru/imgs/",
num = +el.name.substring(3),
par = el.parentNode || el.parentElement;
num = num > 2 ? 0 : num++;
el.src = dir + 'pic' + num + '.jpg';
el.name = 'pic' + num;
par.href = el.src;
}
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Скрипт на mootools
« Ответ #4 : 13.03.2014, 13:29:41 »
1)чот не хочет менять картинки в вашем коде

2)даже с моим кодом href не меняется:

Код
<script type="text/javascript">
function smoothChange(id){
setTimeout(function(){
changePhoto(id)},5000);
}
function changePhoto(id){
var el=document.getElementById(id);
var num=el.name.substring(3);
if(num>7){num=0;}
var dir="http://uspeh.tspu.ru/tomsk/";
el.src=dir+'pic'+(num*1+1)+'.jpg';
el.name='pic'+(num*1+1);
par.href = el.src;
}
</script>
<p><a href="tomsk/pic1.jpg" class="modal"><img width="250" class="photo" src="tomsk/pic1.jpg" name="pic1" onload="smoothChange('photoframe')" id="photoframe" /></a></p>
« Последнее редактирование: 13.03.2014, 13:33:10 от Mick_20 »
Мой сайт про корабли
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Скрипт на mootools
« Ответ #5 : 13.03.2014, 14:25:20 »
http://learn.javascript.ru/play/30O01b
pic0.jpg - отсутствует, соответственно событие onload не срабатывает
*

Mick_20

  • Завсегдатай
  • 1029
  • 13 / 0
  • Что тут писать?
Re: Скрипт на mootools
« Ответ #6 : 14.03.2014, 09:08:23 »
Здорово )) Спасибо большое еще раз))
Мой сайт про корабли
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Ссылка на внешний скрипт

Автор Vokson

Ответов: 4
Просмотров: 1326
Последний ответ 24.07.2014, 11:51:22
от Fedor Vlasenko
sh скрипт

Автор mxm199

Ответов: 7
Просмотров: 1491
Последний ответ 09.07.2014, 01:43:50
от dremora