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

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Здравствуйте, уважаемые форумчане! Может кто из вас подскажет, что делаю не так..
На главной странице сайта выводится категории товаров. Между категориями я вставил разделители, чтобы выделить различные направления товаров. Для этого пришлось немного переделать maincategory.php. Но, ввиду того, что категорий достаточно много, требуется спрятать их под спойлеры. Чтобы по клику на разделитель можно было открыть или скрыть соответствующий раздел. Использовал небольшой скрипт:
Спойлер
[свернуть]
ну и соответственно сам код страницы:
Спойлер
[свернуть]
И все бы хорошо, но получается так, что разделы вложены друг в друга, как матрешки. Собственно саму страничку, и как она работает можно посмотреть здесь - mambo.com.ua
« Последнее редактирование: 08.06.2015, 20:28:00 от angry_ded_mazay »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Спойлеры в главной категории
« Ответ #1 : 07.06.2015, 17:56:15 »
по идее вот тут не хватает дива

Цитировать
             <div>
              <p class = "category_short_description"><?php echo $category->short_description?></p>
           </div>

           </div>
        </div>
    </div>  
 <?php } ?>    
  
</div>


<?php } ?>
<?php print $this->category->description?>
</div>
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #2 : 07.06.2015, 18:01:11 »
почти... но прячется только первый товар в разделе.. и верстка едет..
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #3 : 07.06.2015, 23:00:36 »
похоже, что одним циклом foreach не обойдется... он упорно вкладывает разделы один в другой.. может быть несколько циклов помогут..
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Re: Спойлеры в главной категории
« Ответ #4 : 07.06.2015, 23:09:19 »
Не
Код: javascript
$(this).parent().children('div.spoiler_body').toggle('normal');
, а
Код: javascript
$(this).siblings('div.spoiler_body').toggle('normal');
Не будь паразитом, сделай что-нибудь самостоятельно!
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #5 : 08.06.2015, 07:07:59 »
К сожалению, нет.. структура категорий так и остается вложеной.. соответственно, на работе спойлеров это никак не отражается.. видимо придется делать на каждый раздел свой цикл. вот только не соображу, как сделать, чтобы последующий цикл начинался с места, где закончился предыдущий. может использовать for вместо foreach?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Спойлеры в главной категории
« Ответ #6 : 08.06.2015, 09:05:36 »
циклы абсолютно не при чем. у вас банально не хватает закрытых дивов. добавьте после того закрытого дива, который добавили, еще вот это:

<?php if ($k%$this->count_category_to_row==0) echo '</div>'; ?>
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #7 : 08.06.2015, 17:20:07 »
циклы абсолютно не при чем. у вас банально не хватает закрытых дивов. добавьте после того закрытого дива, который добавили, еще вот это:

<?php if ($k%$this->count_category_to_row==0) echo '</div>'; ?>
добавил.. прячется только первый товар в разделе, и верстка вся летит.. специально оставил, чтобы можно было посмотреть, как оно выглядит
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #8 : 08.06.2015, 20:25:31 »
Получилось!! ^-^
Дивов действительно не хватало, но немного не там. И за подсказку отдельное спасибо, dmitry_stas. Опять немного покурочил шаблон главной категории. Получилась вот такая песня:
Спойлер
[свернуть]
Может кому-то и пригодится идея ;)
Кстати, скрипт немного поменялся. Чтобы при открытии следующего спойлера предыдущий открывался нужно сделать так:
Спойлер
[свернуть]
Теперь попробую улучшить, то что получилось. Хочется сделать так, чтобы по клику на основной пункт меню слева раскрывался соответствующий спойлер... Если у кого-то будут идеи - от помощи не откажусь))
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #9 : 13.06.2015, 17:06:29 »
Возвращаемся к теме... Немного исправил скрипт.
Код
<script type="text/javascript">
jQuery(document).ready(function(){
 jQuery('.spoiler_links').click(function(){
jQuery("div[class^='spoiler_body']").hide('normal');
  if (jQuery(this).parent().children('div.spoiler_body').css("display")=="none") {
jQuery("div[class^='spoiler_body']").hide('normal');
jQuery(this).parent().children('div.spoiler_body').toggle('normal');
}
else jQuery("div[class^='spoiler_body']").hide('normal');
  return false;
 });
});
jQuery(document).on('click', 'a', function () {
     if (this.hash) {
jQuery("div[class^='spoiler_body']").hide();
         jQuery(this.hash).show(1000);
     }
});
</script>
Теперь по клику на ссылку с якорем открывается соответствующий спойлер. НО... Вся эта история работает только в пределах одной страницы. А как теперь сделать, чтобы и при переходе с других страниц это работало??
*

angry_ded_mazay

  • Осваиваюсь на форуме
  • 43
  • 1 / 0
Re: Спойлеры в главной категории
« Ответ #10 : 14.06.2015, 20:06:10 »
Попробовал переделать код из другого моего проекта, который активирует табы по анкорной ссылке с другой страницы.
Код
jQuery(function() {

jQuery('ul.ma-vmenu').on('click', 'li:not(.active)', function() {
jQuery(this)
.addClass('active').siblings().removeClass('active')
.closest('div.ma-content-layout').find('div.spoiler_body').removeClass('spoiler_open').eq(jQuery(this).index()).addClass('spoiler_open');
});

var tabIndex = window.location.hash.replace('#tab','')-1;
if (tabIndex != -1) jQuery('ul.ma-vmenu li').eq(tabIndex).click();

jQuery('a[href*=#tab]').click(function() {
var tabIndex = jQuery(this).attr('href').replace(/(.*)#tab/, '')-1;
jQuery('ul.ma-vmenu li').eq(tabIndex).click();
});

});
Увы, результат тот-же. Спойлеры открываются только в пределах главной страницы. С другой страницы происходит только переход на главную с открытым по умолчанию первым спойлером((
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

WT JoomShopping Favorite - кнопки избранного в категории товаров и карточке тов

Автор sergeytolkachyov

Ответов: 25
Просмотров: 35708
Последний ответ 23.09.2025, 11:22:23
от Alex_gs
JoomShopping, вывод всех категории к которым принадлежит товар

Автор Valent777

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

Автор goga_pgasovav

Ответов: 3
Просмотров: 1802
Последний ответ 07.07.2024, 08:43:15
от nevigen
Вывести название категории в списке товаров

Автор ataman

Ответов: 9
Просмотров: 4603
Последний ответ 15.09.2023, 20:31:11
от Alex_gs
Отображения описании категории только на первой странице

Автор graf

Ответов: 5
Просмотров: 1565
Последний ответ 04.05.2023, 18:52:08
от kit2m2