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

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Подскажите пожалуйста, как понять, что мы находимся уже в материале.
У меня

$id  =   intval( mosGetParam( $_REQUEST, 'id', null ) );     

работает, а

$view = strval( mosGetParam( $_REQUEST, 'view', null ) );
выводи Null.

Как определить переменную $view?
www.interesno.dn.ua - все, что интересно!
*

tsesl

  • Захожу иногда
  • 363
  • 87 / 0
  • Терпение и труд всё перетрут?
Re: Как определить переменную $view?
« Ответ #1 : 10.04.2008, 11:19:07 »
тебе $task нужен... Именно в нем ($task='view') когда в материале...
FAQ смотрел? Версию указал?
*

chtec

  • Захожу иногда
  • 230
  • 100 / 1
Осень тоже хорошо.
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #3 : 10.04.2008, 12:34:08 »
Так joomla 1.5. Ссылка вида

/index.php?option=com_content&view=article&id=3&Itemid=3
www.interesno.dn.ua - все, что интересно!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Как определить переменную $view?
« Ответ #4 : 10.04.2008, 12:48:06 »
Код
JRequest::getCmd( 'view' )
*

tsesl

  • Захожу иногда
  • 363
  • 87 / 0
  • Терпение и труд всё перетрут?
Re: Как определить переменную $view?
« Ответ #5 : 10.04.2008, 12:50:31 »
Так joomla 1.5...
упс... ))

а легаси моде включен? mosGetParam тока в режиме совместимости, вроде... Хотя, судя по тому, что id вытаскивает, то включен...
FAQ смотрел? Версию указал?
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #6 : 10.04.2008, 13:00:43 »
smart, а в global
кроме $mosConfig_offset, $option,  $mosConfig_live_site, $mainframe;
нужно еще что нибудь прописать?
www.interesno.dn.ua - все, что интересно!
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Как определить переменную $view?
« Ответ #7 : 10.04.2008, 13:22:19 »
smart, а в global
кроме $mosConfig_offset, $option,  $mosConfig_live_site, $mainframe;
нужно еще что нибудь прописать?
а зачем на 1.5 вам эти переменные? там все несколько иначе...
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #8 : 10.04.2008, 13:27:50 »
smart, в материалах в 1.5 есть выводить похожие материалы. оно чего то не работает (может из-за режима Legacy). я взял модуль DGM Read Also (SEO) 1.0 и чуть переделал. Все материалы похожие выводятся (задал значение view вручную) только вот переменную view не могу вытянуть из строки

/index.php?option=com_content&view=article&id=3&Itemid=3

Хотя может это впринципе неправильный подход делать так?

www.interesno.dn.ua - все, что интересно!
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #9 : 10.04.2008, 14:33:19 »
Стандартный модуль вывода похожих материалов не работает в Legacy т.к.
не работает $view = JRequest::getCmd('view');
www.interesno.dn.ua - все, что интересно!
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #10 : 10.04.2008, 17:24:36 »
Помогите плиз разобраться
www.interesno.dn.ua - все, что интересно!
*

tsesl

  • Захожу иногда
  • 363
  • 87 / 0
  • Терпение и труд всё перетрут?
Re: Как определить переменную $view?
« Ответ #11 : 10.04.2008, 17:36:07 »
Только что проверил. Твоя конструкция:


$view 
strvalmosGetParam$_REQUEST'view'null ) );


Абсолютно работоспособна на Joomla 1.5.2 и Legacy Mode 1.0 и ведет себя именно так, как задумывалось...

Более того, конструкция:


$view 
JRequest::getCmd('view');


так же работает без нареканий...
FAQ смотрел? Версию указал?
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #12 : 10.04.2008, 18:04:07 »
tsesl, я пишу
global $mosConfig_offset, $option, $task, $mosConfig_live_site, $mainframe;
$id  =   intval( mosGetParam( $_REQUEST, 'id', null ) );
$view = strval( mosGetParam( $_REQUEST, 'view', null ) );
$view=JRequest::getCmd( 'view' );
и ничего....где собака порылась?
www.interesno.dn.ua - все, что интересно!
*

Kotofeich

  • Осваиваюсь на форуме
  • 20
  • 22 / 1
Re: Как определить переменную $view?
« Ответ #13 : 11.04.2008, 10:27:44 »
Я обычно так пишу..

Получить шаблон:
Код
$layout=JRequest::getVar('layout');

Получить задачу:
Код
$task = JRequest::getVar('task');

Получить вид:
Код
$view = JRequest::getVar('view');
Linkfeedator - клиент к биржам sape, setlinks, linkfeed. Раскрутка и продвижение сайтов.
http://kjoomla.com - все для программистов на joomla 1.5
*

tsesl

  • Захожу иногда
  • 363
  • 87 / 0
  • Терпение и труд всё перетрут?
Re: Как определить переменную $view?
« Ответ #14 : 11.04.2008, 12:50:47 »
tsesl, я пишу
global $mosConfig_offset, $option, $task, $mosConfig_live_site, $mainframe;

вроде для определения $view не нужно ничего глобалить...
FAQ смотрел? Версию указал?
*

Alex_A

  • Осваиваюсь на форуме
  • 35
  • 11 / 0
Re: Как определить переменную $view?
« Ответ #15 : 11.04.2008, 13:52:34 »
Kotofeich, tsesl у меня стоит Jcomments. При их удалении все нормально определяется.
www.interesno.dn.ua - все, что интересно!
*

tsesl

  • Захожу иногда
  • 363
  • 87 / 0
  • Терпение и труд всё перетрут?
Re: Как определить переменную $view?
« Ответ #16 : 11.04.2008, 13:59:59 »
тогда ждем smart'а с рекомендациями....
FAQ смотрел? Версию указал?
*

smart

  • Администратор
  • 6478
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Как определить переменную $view?
« Ответ #17 : 11.04.2008, 16:06:04 »
Kotofeich, tsesl у меня стоит Jcomments. При их удалении все нормально определяется.
вот с этого и нужно было начинать... я ответил в разделе про компонент JComments...

Re: Как определить переменную $view?
« Ответ #18 : 18.04.2008, 18:42:58 »
$view = JRequest::getVar('view');
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как определить момент авторизации

Автор CTPZ

Ответов: 1
Просмотров: 1485
Последний ответ 17.10.2011, 16:24:58
от SmokerMan
Ошибка при инициализации View внутри контроллера

Автор croatian

Ответов: 2
Просмотров: 2090
Последний ответ 14.04.2009, 17:18:26
от croatian
Как определить включена ли SEO и SEF

Автор TrOn

Ответов: 4
Просмотров: 2659
Последний ответ 24.04.2008, 09:05:36
от TrOn