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

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Здравствуйте. Пользуюсь метками товаров в виде бэйджев с текстом. Но получается бэйдж один (цвет) а тексты разные (новый, акция и т.д.). Нужно бы и цветами их выделить. Придумалось решение добавлять к метке класс, который формируется из названия метки с помощью транслита. Нашел в интернете функцию, которая может это делать.
Код
function rus2translit($string) {
    $converter = array(
        'а' => 'a',   'б' => 'b',   'в' => 'v',
        'г' => 'g',   'д' => 'd',   'е' => 'e',
        'ё' => 'e',   'ж' => 'zh',  'з' => 'z',
        'и' => 'i',   'й' => 'y',   'к' => 'k',
        'л' => 'l',   'м' => 'm',   'н' => 'n',
        'о' => 'o',   'п' => 'p',   'р' => 'r',
        'с' => 's',   'т' => 't',   'у' => 'u',
        'ф' => 'f',   'х' => 'h',   'ц' => 'c',
        'ч' => 'ch',  'ш' => 'sh',  'щ' => 'sch',
        'ь' => '\'',  'ы' => 'y',   'ъ' => '\'',
        'э' => 'e',   'ю' => 'yu',  'я' => 'ya',
        
        'А' => 'A',   'Б' => 'B',   'В' => 'V',
        'Г' => 'G',   'Д' => 'D',   'Е' => 'E',
        'Ё' => 'E',   'Ж' => 'Zh',  'З' => 'Z',
        'И' => 'I',   'Й' => 'Y',   'К' => 'K',
        'Л' => 'L',   'М' => 'M',   'Н' => 'N',
        'О' => 'O',   'П' => 'P',   'Р' => 'R',
        'С' => 'S',   'Т' => 'T',   'У' => 'U',
        'Ф' => 'F',   'Х' => 'H',   'Ц' => 'C',
        'Ч' => 'Ch',  'Ш' => 'Sh',  'Щ' => 'Sch',
        'Ь' => '\'',  'Ы' => 'Y',   'Ъ' => '\'',
        'Э' => 'E',   'Ю' => 'Yu',  'Я' => 'Ya',
    );
    return strtr($string, $converter);
}
function str2url($str) {
    // переводим в транслит
    $str = rus2translit($str);
    // в нижний регистр
    $str = strtolower($str);
    // заменям все ненужное нам на "-"
    $str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
    // удаляем начальные и конечные '-'
    $str = trim($str, "-");
    return $str;
}

Теперь вопрос, куда ее (функцию) добавить/вставить, что бы потом обновлять магазин без проблем. В шаблон продукта не хочется, что бы не загромаждать его. С function.php она слетит при первом обновлении, забуду поправить и все. Может где-то в шаблоне JH есть аналогичный файл, куда эту функцию можно вписать и обновление магазина его не будет затрагивать (шаблон у меня не дефолтный)? Или создать отдельный файл с ф-ей и как-то его подключить к шаблону. Но тут я не силен.
Как лучше или как правильно?

Или может я не там копаю и есть решение с отдельными классами для меток проще/лучше?
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: Разные классы для меток товара
« Ответ #1 : 01.11.2015, 21:34:50 »
прив ещё раз
у меток есть свои таблицы, не насилуй их.
измени код и запрос, зачем ты ..........
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Разные классы для меток товара
« Ответ #2 : 01.11.2015, 21:39:11 »
JFilterOutput::stringURLSafe($string)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Re: Разные классы для меток товара
« Ответ #3 : 02.11.2015, 10:47:35 »
Дмитрий, я вставил в класс метки такой код
Код
<?php JFilterOutput::stringURLSafe($product->_label_name);?>
вывело пустоту. Я что-то не то сделал?
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Re: Разные классы для меток товара
« Ответ #4 : 02.11.2015, 10:52:44 »
нижнее подчёркивание зачем? и где this?
помоему неправильно строка создана.
и чем стили свои тебе мешают сделать?
зачем новый код? или у тебя там опять свои приколы новые?
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Re: Разные классы для меток товара
« Ответ #5 : 02.11.2015, 11:06:27 »
 vipiusss, на флуд смахивает. Код названия лэйбла взят из шаблона. Я бы вас попросил воздержаться от предположительных ответов/советов.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Разные классы для меток товара
« Ответ #6 : 02.11.2015, 11:08:42 »
вывело пустоту - потому что надо echo использовать если что то вывести хочется :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Re: Разные классы для меток товара
« Ответ #7 : 02.11.2015, 11:12:03 »
Вот так правильно
Код
 <?php echo JFilterOutput::stringURLSafe(htmlspecialchars($product->_label_name));?>
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Re: Разные классы для меток товара
« Ответ #8 : 02.11.2015, 11:19:21 »
Дмитрий спасибо! (+)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Разные классы для меток товара
« Ответ #9 : 02.11.2015, 11:28:53 »
а зачем htmlspecialchars? только удлинит название класса в случае если название метки содержит например кавычки, а особо смысл в этом?
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Re: Разные классы для меток товара
« Ответ #10 : 02.11.2015, 11:35:03 »
Цитировать
а зачем htmlspecialchars? только удлинит название класса в случае если название метки содержит например кавычки, а особо смысл в этом?
Потому что не вывело текст, вот и начал искать в чем причина. Добавил echo и htmlspecialchars и заработало. Что оно означает я пока не могу знать, это вы только можете :).
М-да... получаются разные классы для разнык языков сайта. В принципе, не сильно критично (можно и для нескольких классов стили прописать), но может есть у кого-то идеи с альтернативным способом?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Разные классы для меток товара
« Ответ #11 : 02.11.2015, 11:52:32 »
id метки используйте. делайте например класс <?php echo 'metka_'.$product->label_id ?>
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Re: Разные классы для меток товара
« Ответ #12 : 02.11.2015, 11:53:13 »
Супер, точно!
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT On fly image handler изображения товара JoomShopping в webp на лету

Автор sergeytolkachyov

Ответов: 13
Просмотров: 4377
Последний ответ 29.01.2025, 20:38:38
от sergeytolkachyov
Видео с Youtube вместо картинки на карточке товара

Автор ksena

Ответов: 35
Просмотров: 10214
Последний ответ 08.10.2024, 04:26:36
от kit2m2
Условие для кол-ва товара больше нуля

Автор kik84

Ответов: 3
Просмотров: 1336
Последний ответ 16.02.2024, 13:33:24
от kit2m2
Разные ссылки и названия на один товар

Автор gooodwin67

Ответов: 2
Просмотров: 1183
Последний ответ 04.11.2023, 12:34:19
от nevigen
Убрать модуль в карточке товара JoomShopping

Автор alexkraym

Ответов: 35
Просмотров: 5778
Последний ответ 21.08.2023, 07:17:53
от delchev