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

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Доброе время! Помогите пожалуйста, что-то туплю и не могу вывести...

В дальнейшем будут атрибуты как текстовые, так и картинка (поэтому сделал поле редактором), регулирую в админке,
(своеобразный фильтр), т.к. категории будут иметь не только подкатегории, но и каждая категория будет аяксово фильтроваться
(по дефолту показывает все категории, но при нажатии на атрибут-ненужные категории скрываются) по атрибуту на фронте...

Но сначало хочу просто доп поле вывести.

Что я делал:

1. Добавил в administrator/components/com_jshopping/views/category/tmpl/edit.php :

<tr>
<td class="key">
<?php echo _JSHOP_A_FILTER;?>
</td>
<td>
<?php
$editor_a_filter = &JFactory::getEditor();
print $editor_a_filter->display('a_filter'.$lang->id,  
$row->$a_filter , '100%', '350', '75', '20');
?>
</td>
</tr>


2.Добавил там же:

    $a_filter = "a_filter_".$lang->language;

3.Добавил для дефолтных 3-х языков в administrator/components/com_jshopping/lang/###.php :

   define('_JSHOP_A_FILTER', 'Фильтр категории'); - в ru-RU.php
    define('_JSHOP_A_FILTER', 'Filter category'); - в en-GB.php
    define('_JSHOP_A_FILTER', 'Filter Kategorie'); - в de-DE.php

4.Добавил в administrator/components/com_jshopping/controllers/products.php в 139 строку (foreach($languages as $lang){) :

$post['a_filter_'.$lang->language] = JRequest::getVar('a_filter'.$lang->id,'','post',"string", 2);

5. В БД в _jshopping_categories (в структуре) добавил 3 поля:

   a_filter_ru-RU   varchar(255)   utf8_general_ci
   a_filter_en-GB   varchar(255)   utf8_general_ci
   a_filter_de-DE  varchar(255)   utf8_general_ci

   
6. Добавил в components/com_jshopping/tables/category.php находим function getSubCategories

меняем строку запроса(добавляем выделенное) :

$query = "SELECT `".$lang->get('name')."` as name,`".$lang->get('description')."` as description,
`".$lang->get('a_filter')."`as a_filter, `".$lang->get('short_description')."`as short_description, category_id, category_publish, ordering, category_image FROM `#__jshopping_categories`
                   WHERE category_parent_id = '".$this->_db->escape($parentId)."' ".$add_where."
                   ORDER BY ".$orderby." ".$ordering;


Вывод в список категорий:

<?php print $category->a_filter?> в нужном месте.
« Последнее редактирование: 06.11.2015, 15:05:46 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
\components\com_jshopping\tables\category.php function getSubCategories - добавьте ваше поле в запрос
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
\components\com_jshopping\tables\category.php function getSubCategories - добавьте ваше поле в запрос
так я же добавил:

  $a_filter = $lang->get('a_filter');
  $this->a_filter = $this->$a_filter;

выше написано, или что-то ещё добавить надо?
можно подробнее, банально что именно добавить?!
***
сорри, это не просёк getSubCategories
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Что-то я вообще там запутался:
Вот оригинал функции, как мнеправильно получить значение поля?
Моим способом будет ошибка (не отобразится просто магазин)

Спойлер
[свернуть]

И эта функция отвечает и за категории и подкатегории все?
Подскажите банальным кодом готовым, если удобно.

И я так понял, моё получение неправильное и/или не туда вставил?
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Подскажите банальным кодом готовым, если удобно.
не, я так не играю :) вам надо добавить свое поле в запрос SELECT ....

И я так понял, моё получение неправильное и/или не туда вставил?
понятия не имею, даже не вникал в код. мне хватило фразы
Цитировать
Всё в админке классно записывается, работает и т.д.
:) поэтому я просто отвечал исключительно на ваш вопрос
Цитировать
Как теперь вывести это в maincategory.php ?
если вы добавили тот код для этого - то да, это неправильно.
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Разобрался!
Нужно было просто изменить строку, а точнее добавить то, что я выделил.

 $query = "SELECT `".$lang->get('name')."` as name,`".$lang->get('description')."` as description,`".$lang->get('short_description')."`,
`".$lang->get('a_filter')."` as short_description, category_id, category_publish, ordering, category_image FROM `#__jshopping_categories`
                   WHERE category_parent_id = '".$this->_db->escape($parentId)."' ".$add_where."
                   ORDER BY ".$orderby." ".$ordering;

В любом случае спасибо за наводку, где копаться.
Плюсану!

Изменю первый пост, т.к. он неверный в одном пункте (не до кумекал) и если всё получится, что я задумал далее, обязательно выложу.
« Последнее редактирование: 06.11.2015, 13:52:18 от vipiusss »
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

Taatshi

  • Гуру
  • 5258
  • 481 / 2
  • Верстаем и кодим. Обращайтесь ;)
vipiusss, в редакторе форума есть селект GeSHi - очень рекомендую обратить на него внимание.
ВЕРСТКА, САЙТЫ ПОД КЛЮЧ, УДАЛЕНИЕ ВИРУСОВ, МИГРАЦИЯ НА JOOMLA 3, ОБНОВЛЕНИЕ  |  ОТЗЫВЫ 
Связь: telegram - Taatshi, почта - Taatshi на яндексе, Skype - Taatshi
*

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
vipiusss, в редакторе форума есть селект GeSHi - очень рекомендую обратить на него внимание.

так я специально не прятал в код и спойлер не делал(код то маленький), чтоб удобно жирным участки выделить.
Или я не так понял напутствие?
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
я не так понял напутствие?
правильно поняли, очень неудобно читать. это кстати основная из причин по которой я вообще не вникал в код из первого поста. понял что глаза сломаются раньше :)

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

vipiusss

  • Гуру
  • 5739
  • 344 / 11
  • Скайп: renor_
Понял, спасибо!
Миграция, установка, обновление версий Joomla  |  Создание сайтов "под ключ"  |  Эксклюзивные заглушки "offline"  |  Работа с "напильником" над шаблонами и расширениями
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[Решено] Сбросить счётчик ID товаров JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 1359
Последний ответ 13.02.2025, 00:11:20
от goga_pgasovav
JoomShopping, вывод всех категории к которым принадлежит товар

Автор Valent777

Ответов: 12
Просмотров: 2470
Последний ответ 01.11.2024, 14:57:28
от kit2m2
Дополнительные поля для категории JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 1804
Последний ответ 07.07.2024, 08:43:15
от nevigen
[JoomShopping 5] вывод товаров из дочерних категорий

Автор v42bis

Ответов: 15
Просмотров: 2669
Последний ответ 14.06.2024, 11:43:28
от denistischenko
Вывод номера телефона в списке заказов

Автор sifoz

Ответов: 8
Просмотров: 2827
Последний ответ 25.11.2023, 00:58:54
от nevigen