Новости 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 Ответов
  • 2987 Просмотров
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Сделал то что в названии темы написано.....
Пагинация + фильтр работают в Категориях, Поиске, и Производителе (может ешё гдето надо, непомню просто где ешё выводится)

1)
/components/com_jshopping/templates/avantyrist/list_products/form_filters.php

В самом верху добавляем:
Спойлер
[свернуть]

Потоv оборачиваем в div контейнер всё что находится внутри файла:
Спойлер
[свернуть]

Ещем вот ету строку:
Код
<a rel="nofollow" id="direction" rel="tooltip" href="#" onclick="submitListProductFilterSortDirection()"><img src="<?php echo $this->path_image_sorting_dir?>" alt="orderby"></a>
Меняем на вот ето:
Код
<span class="checked"><input type="radio" checked="checked" name="direction" value="0" id="a_z"> <label for="a_z">a_z</label></span>
<span><input type="radio" name="direction" value="1" id="z_a"> <label for="z_a">z_a</label></span>

Тоесть убрали ссылку которая сортирует по направлению  "А-Я" либо "Я-А", и заменили её инпутапи, CSS стили на свой вкус и цвет. В скрипте предусмотрено добавление класа "checked" для выбранного инпута, чтобы было видно как отсортировано.....
Единственный минус, теперь установленное направление в админке не будет работать думаю фиг с ним.....


подключаем скрипт:
<script type="text/javascript" src="/templates/smook/javascript/sorttovar.js"></script>   -----   Путь к скрипту указываем свой (я когдато тоже тупил с етим ;D)


СОДЕРЖАНИЕ СКРИПТА:
Спойлер
[свернуть]

-----------------------------------------------------------------------------------------------------------------------------------------

2)
лезим в: /components/com_jshopping/templates/avantyrist/category/category_default.php
И всё содержимое оборачиваем в такой div:
Код
<div id="category" class="category_id_<?php echo $this->category->category_id;?>">
       <!----  тут всё что было в файле  ----->
</div>
Ето надо ОБЯЗАТЕЛЬНО сделать, т.к. в скрипте определяется в какой категории вы находитесь с помощью вот етого id="category_id_<?php echo $this->category->category_id;?>
-----------------------------------------------------------------------------------------------------------------------------------------

3)
лезим в: \components\com_jshopping\templates\avantyrist\manufacturer\products.php
Привожу код всего файла. ЖИРНЫМ ВЫДЕЛЕНО ЧТО НАДО ДОБАВИТЬ
Спойлер
[свернуть]
Ето надо ОБЯЗАТЕЛЬНО сделать, т.к. в скрипте определяется в каком производителе вы находитесь
-----------------------------------------------------------------------------------------------------------------------------------------

4)
\components\com_jshopping\templates\avantyrist\search\products.php
Привожу код всего файла. ЖИРНЫМ ВЫДЕЛЕНО ЧТО НАДО ДОБАВИТЬ
Спойлер
[свернуть]


МАЛОСТЬ CSS:
Скрипт во время кликов добавляет контейнер <div id="my_overlay"><div class="my_loading"></div></div>
Для визуализации того что, что-то варится....  ;D
Код
.relativ{position: relative}
.my_loading{height: 34px; width: 34px; background: url('/images/img_site/loading.gif') center center no-repeat transparent}   /* тута Стили ВАШЕЙ анимации-картинки */
.my_loading{position:absolute;top:50%;left:50%;z-index:9999;margin-top:-30px;margin-left:-17px;display:block;}
#my_overlay{position: absolute;width: 100%;height: 100%;top: 0;left: 0;z-index: 10;background: rgba(255, 255, 255, 0.7);}
« Последнее редактирование: 19.02.2015, 20:34:12 от avantyrist »
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Доделал:
Пагинация + фильтр работают в Категориях, Поиске, и Производителе (может ешё гдето надо, непомню просто где ешё выводится)

Может плюсик наконец то заработаю :)
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Вот только есть проблемка.... :( как обычно:
после сортировки ссылки в Блоке пагинации преобретают кривой вид:
<a href="/component/jshopping/fruit-flavors?orderby=1&amp;order=1&amp;limit=2&amp;ajax=1&amp;_=1424357215301&amp;start=4" class="pagenav">3</a>
Добавляется  то что выделил  жирным.

Так вот если в скрипте использовать  метод  .on
      jQuery("#jshop_pagination").on('click', 'a', function(){
      ..........
Не отрабатывает, и перекидывает на на неправильную страницу.....

Метод .live  работает нормально... но он устарел....   Может ктото подскажит как правильно сделать через .on('click', 'a', function(){    ?
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Вообще не читал, что написано. Зацепился за
Цитировать
Так вот если в скрипте использовать  метод  .on
      jQuery("#jshop_pagination").on('click', 'a', function(){
      ..........
Не отрабатывает, и перекидывает на на неправильную страницу.....
Метод .live  работает нормально... но он устарел....   Может ктото подскажит как правильно сделать через .on('click', 'a', function(){    ?
Версия jQuery у вас какая? ДО 1.7 будет .live(). После - .on(). Версию библиотеки обновите.
Веб-разработка: заказ. Только новая разработка.
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Вот такая.
jquery-1.8.3.min.js

Конфликтов никаких нету
*

fsv

  • Живу я здесь
  • 2781
  • 411 / 2
Код
 jQuery("#jshop_pagination").on('click', 'a', function(event){ 
    event.preventDefault();
Спойлер
[свернуть]
Веб-разработка: заказ. Только новая разработка.
*

avantyrist

  • Захожу иногда
  • 228
  • 3 / 0
Ой ето я потерял event...  когда правил тут на форуме...

Дело в том что я делал правильную запись, как Вы показываете, но оно не работает
Скорее всего из-за того что ссылка после AJAX обновлений сортировки (тоесть после того как Блок перезапишется Ajax'ом ссылки которые внутри него) преобретают такой вид:
/component/jshopping/fruit-flavors?orderby=0&order=1&limit=2&ajax=1&_=1424367295397&start=2"

А по идеи должны иметь  такой вид:
/component/jshopping/fruit-flavors?orderby=0&order=1&limit=2&start=2"

вот такая беда  ! НО  .live() отрабатывает

« Последнее редактирование: 20.02.2015, 09:49:54 от avantyrist »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод списка товаров с учетом значения связанного атрибута

Автор newalex

Ответов: 2
Просмотров: 1248
Последний ответ 17.10.2024, 08:51:19
от newalex
Вместо стоимость 0 руб. вывести БЕСПЛАТНО в карточке товаров (Каталоге)

Автор IgorGeneralov

Ответов: 0
Просмотров: 2264
Последний ответ 13.04.2023, 21:06:09
от IgorGeneralov
Функционал сравнение товаров в JoomShopping

Автор falur

Ответов: 53
Просмотров: 15721
Последний ответ 22.08.2022, 09:54:16
от kit2m2
В списке товаров вывести названия категорий каждого товара

Автор shop-user

Ответов: 5
Просмотров: 2944
Последний ответ 25.01.2022, 06:05:12
от kit2m2
Плагин - Инфоблок товара в списке товаров [Скачать]

Автор kit2m2

Ответов: 13
Просмотров: 3174
Последний ответ 20.10.2021, 14:51:08
от kit2m2