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

biosila

  • Захожу иногда
  • 85
  • 3 / 0
Предыстория такова:
Решил перевезти сайты с обычного хостинга на VSD чтобы отгородить друг от друга сайты понадёжнее.
Начал переезжать, но часть сайтов перестала грузится. Суть в том что непонятно почему, сайты пытаются зайти в какую либо папку на которой у них нет прав.
Возникает это только на шаблонах yootheme (из последних редакций) пробовал новые чисты шаблоны в них уверен на 99,999%
И долбятся они к сайтам в те же шаблоны.
+ на некоторых ошибка ​Fatal error: Class 'Joomla\Application\AbstractApplication' not found in /libraries/joomla/application/base.php on line 23
Админ с жумлой дело не имел.
Голову поломал, пришел к выводу что беда в open_basedir
Для текста отключил его, сайты заработали.
Далее предложил так:
Админ:
По стандарту можно так:
{Значение}:{еще\значение}:{и\еще}

А джамла умеет только так:
{значение}

Правится в /home/пользователь/conf/web/apache2.conf
в php_admin_value open_basedir стираешь все после первого : и само :


Вот интересует правильность данного решения, так как сам не разбираюсь.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Решил перевезти сайты с обычного хостинга на VSD чтобы отгородить друг от друга сайты понадёжнее.
в принципе верное решение. только для этого нужен кто-то, который настроит VDS лучше, чем был настроен хостинг.

сайты пытаются зайти в какую либо папку на которой у них нет прав
в "какую либо"?

И долбятся они к сайтам в те же шаблоны.
кто они и к каким сайтам?

Админ с жумлой дело не имел.
конечно лучше бы, если бы имел, но не критично. критично, чтобы с веб сервером имел дело

А джамла умеет только так:
это лишено смысла. сама Joomla относится к open_basedir примерно так же, как ежик к паровозу
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
Цитировать
Вот интересует правильность данного решения

Система привилегий в UNIX не позволит взломать операционку, если Вы не положили какой-нибудь private_key в общедоступную папку со стандартными правами 755 (что происходит при элементарной закачке файла). По умолчанию привилегии настроены надёжно, пароли зашифрованы сильными шифрами, однако любое неосторожное движение может поставить всё это дело под высокий риск.

Вывод таков, что open_basedir должен быть обязательно: защита от дурака будет полезна даже тому, кто плавает в Unix как рыба в воде. Ибо за всем не уследишь.

Как минимум, open_basedir должен ограничиваться папками /home и /tmp. То есть в php.ini нужно прописать базовое правило. А в настройках http-сервера затем динамически "запирать" отдельные хосты.
*

biosila

  • Захожу иногда
  • 85
  • 3 / 0
Удалить
« Последнее редактирование: 04.12.2016, 11:22:45 от biosila »
*

biosila

  • Захожу иногда
  • 85
  • 3 / 0
К разным на том же сервере .




Понял что надо еще настраивать.
Но не понял, вариант от админа не является ли ущербом для безопасности или еще что то.
*

ProtectYourSite

  • Живу я здесь
  • 2366
  • 138 / 4
  • Безопасность вебсайтов
Скорее всего некорректно настроен или basedir или tmp каталог, или и то и другое вместе.
Приведите пример вашего open_basedir для buhuslugi74?
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Админу по шапке дать . Для домена прописать отдельный  конфиг, с определением open_basedir и под отдельного юзера
А лучше прикрутить ISP Manager к VDS.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Понял что надо еще настраивать.
Но не понял, вариант от админа не является ли ущербом для безопасности или еще что то.
надо сначала понять, что это за админ, а потом уже по шапке давать :) может он до этого только принтеры заправлял да виндоуз с 1С устанавливал :)

ТС, если видя такую ошибку, админ рекомендует отключить open_basedir, то это свидетельствует только об одном: как админ веб сервера на данный момент он не годится. если вы наняли его специально для этой цели, то его надо сменить. если он работает у вас в должности системного администратора - то вы должны понимать, что админы бывают разные. он не может и не должен уметь все. системный администратор и администратор веб сервера - по хорошему это 2 разных администратора, с разными знаниями и опытом. не говорю, что он в конечном счете не научится, но это время. если вы готовы ждать - то пожалуйста. но на данный момент я вижу, что сервера у вас не готовы к работе в веб. возвращайтесь на хостинг, для вас это будет правильнее. либо ищите другого человека.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

biosila

  • Захожу иногда
  • 85
  • 3 / 0
Админу по шапке дать . Для домена прописать отдельный  конфиг, с определением open_basedir и под отдельного юзера
А лучше прикрутить ISP Manager к VDS.
ISP Manager же платная? да и мне версия нужна, где юзеры разделены, а версия с поддержкой данного функционала еще дороже.
Или ошибаюсь?
*

biosila

  • Захожу иногда
  • 85
  • 3 / 0
Вот пример настройки теперешней ( сайт работает) php_admin_value open_basedir /home/buhuslugi74.ru/web/buhuslugi74.ru/public_html:/home/buhuslugi74.ru/tmp
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
ISP Manager не только платная, но ещё и привязывает вас к определённому IP/хостингу. Она не даёт никакой гибкости в настройке конфигурации под себя. Справедливо заметить, что это недостаток всех панелей управления, как платных, так и открытых. Я раньше клиентам ставил Vesta, теперь ставлю её только тем, кто вообще не дружит с компьютером. Для более продвинутых юзеров пишу консольные утилиты, которых для рутинных задач обслуживания сайтов хватает с лихвой.
*

biosila

  • Захожу иногда
  • 85
  • 3 / 0
Я не ошибаюсь, но тут http://yootheme.com/support/question/95509 пишут отключать basedir ?
*

mgnhost

  • Захожу иногда
  • 183
  • 14 / 0
админ рекомендует отключить open_basedir, то это свидетельствует только об одном: как админ веб сервера на данный момент он не годится.

Чем Вам поможет open_basedir от веб шелла например на питоне?
open_basedir работает только для php скриптов, если используется apache mpm-itk, то смысла в использовании open_basedir вообще ни какого нет.
Главное выставлять правильные права доступа к файлам и директориям, а не разрешать чтение и запись всем подряд.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
это вопрос из серии "зачем закрывать дверь на замок, если стену могут камазом вынести?" :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Филипп Сорокин

  • Завсегдатай
  • 1918
  • 160 / 4
  • разработчик.москва
это вопрос из серии "зачем закрывать дверь на замок, если стену могут камазом вынести?" :)
Который надо сначало отбуксировать до двери, т.к. сам он не доедет.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Какая версия PHP установлена на вашем сайте (сервере хостера)?

Автор smart

Ответов: 80
Просмотров: 51587
Последний ответ 20.09.2019, 08:22:35
от shawnkinginfo
ISP 5 Manager - настройка SQL

Автор Taatshi

Ответов: 10
Просмотров: 3716
Последний ответ 06.06.2016, 15:31:33
от Apoca1ypto
"Пропадает" свободное место на сервере

Автор Alukard

Ответов: 4
Просмотров: 3014
Последний ответ 19.08.2013, 08:37:06
от draff
Превышен лимит по количеству файлов на сервере.

Автор Aquasonick

Ответов: 4
Просмотров: 2463
Последний ответ 01.10.2012, 14:10:57
от joooomlaman
Авария на сервере node1-2 хостинга WhiteSuite.

Автор Marques

Ответов: 4
Просмотров: 2547
Последний ответ 04.09.2012, 22:53:50
от Marques