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

dmitry_stas

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

Biss

  • Давно я тут
  • 995
  • 101 / 0
ну скажем так не все варианты отрабатываются. надо править router.php компонента
Это исправит только ?layout=category
Я правильно понял?
-------------------------------------------
для наглядности.
так сохраняет пункт меню производителя аддорн меню магазина

index.php?option=com_jshopping&controller=manufacturer&task=view&manufacturer_id=1

а так - меню Joomla

index.php?option=com_jshopping&view=manufacturer&layout=man&task=view&manufacturer_id=2
« Последнее редактирование: 12.02.2015, 19:24:32 от Biss »
*

dmitry_stas

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

Valeriomed

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Я для решения проблемы с категориями JoomShopping прибегнул вот к такому решению:
В файле components/com_jshopping/router.php

В этот кусок кода
Код
    
if ($controller=="category" && $query['task']=="view" && $query['category_id']){
        if (isset($categoryitemidlist[$query['category_id']])){
            $query['Itemid'] = $categoryitemidlist[$query['category_id']];
            unset($query['controller']);
            unset($query['category_id']);
            unset($query['task']);
        }else{

добавляем после последнего unset

Код
    
unset($query['layout']);

zeher, спасибо, Ваше решение тоже работает
по крайней мере с его помощью, я могу удалять мусор в адресе rel="canonical"

В частности на странице в списке производителей тоже в каноникал вылазил лишний кусок. Благодаря Вашему способу он убирается.
Пока сопутствующих глюков в формировании ЧПУ или чего-то еще не заметил

Спасибо всем отписавшимся в теме  *DRINK*
« Последнее редактирование: 13.02.2015, 21:35:38 от Valeriomed »
*

zeher

  • Захожу иногда
  • 169
  • 12 / 0
после обновления Joomla до 3.4.0 rel="canonical" вообще перестал выводится
*

dmitry_stas

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

zeher

  • Захожу иногда
  • 169
  • 12 / 0
заменили
Код
		$parsed = $router->parse($uri);
$fakelink = 'index.php?' . http_build_query($parsed);
$link = $domain . JRoute::_($fakelink, false);

if ($uri !== $link)
{
$doc->addHeadLink(htmlspecialchars($link), 'canonical');
}

на
Код
		$link = $domain . JRoute::_('index.php?' . http_build_query($router->getVars()), false);

if ($uri->toString()!== $link)
{
$doc->addHeadLink(htmlspecialchars($link), 'canonical');
}
*

dmitry_stas

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

Valeriomed

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Да после обновления Joomla 3.4.0 каноникал вообще исчез, только на главной странице есть, причем к URL магазина приписал /category/

Я пока откатился назад, так как мне rel=canonical нужен, плагин Невигена для товара в нескольких категориях перестал работать...

А Вы, zeher, как для себя эту диллему решили?
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
Только что и у себя заметил, что к ссылкам на категории которые созданы руками через стандарт_joomla создать пункт меню
в модуле Breadcrumbs и по кнопке назад(в товаре) к ссылке добавляется этот ?layout=category 

да, логично... значит возвращаемся к шагу http://joomlaforum.ru/index.php/topic,308210.msg1530600.html#msg1530600 :)
В Joomla 3.4.1 уже не прокатило

приглушу в роботсе.
« Последнее редактирование: 01.04.2015, 20:31:06 от ViktorMah »
*

zeher

  • Захожу иногда
  • 169
  • 12 / 0
Код
		$str = $link;
$str = str_replace("?layout=category", "", $str);
if ($uri !== $link)
{
$doc->addHeadLink(htmlspecialchars($str), 'canonical');
}


сделал по аналогии в mod_breadcrumbs
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
У уважаемый zeher
Пожалуйста, поделитесь решением
Цитировать
сделал по аналогии в mod_breadcrumbs

а то убитие ?layout=category в robots.txt гробит результаты микроразметки
*

zeher

  • Захожу иногда
  • 169
  • 12 / 0
Вот весь мой breadcrumbs
Спойлер
[свернуть]
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
Странно но у меня не сработало опять не внимателен  crazy! пропустил -  . $str .
Спойлер
[свернуть]
« Последнее редактирование: 31.03.2015, 10:14:59 от ViktorMah »
*

zeher

  • Захожу иногда
  • 169
  • 12 / 0
a href="' . $str . '" class="pathway"
*

ViktorMah

  • Захожу иногда
  • 252
  • 30 / 0
да, да. полностью согласен но всё равно не прокатило
Ctrl+F5 = почистил кэш и всё норм
 *DRINK*
« Последнее редактирование: 31.03.2015, 12:17:34 от ViktorMah »
*

zeher

  • Захожу иногда
  • 169
  • 12 / 0
вставил Ваш код себе в breadcrumbs и все работает, может кеш?
*

herr

  • Захожу иногда
  • 127
  • 0 / 1
У меня тоже проблема с ?layout=category, но если открыть исходный код такой страницы, то там ссылка нормального вида без ?layout=category.
Я так понимаю что робот читает исходный код страницы, где ссылка без ?layout=category, или я ошибаюсь?
*

Valeriomed

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Обновил Joomla до версии 3.4.1 и JoomShopping до последней версии 4.9.2 + скачал обновленный плагин Nevigen'a против дублей и все работает корректно.

Rel-Сanonical выводится если только зашел на страницу - дубль. Если страница каноническая сама по себе то каноникал на себя саму не ставится.

Для теста взял категорию Joomshoppinga с SEF и без. В коде версии без ЧПУ стоит каноникал на ЧПУ версию

Никакого мусора, ?layout=category или чего то подобного нет. Ни в категориях, ни в товарах ни в производителях
*

Bozhkov2

  • Захожу иногда
  • 427
  • 12 / 0
Поставил, не помогло
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
все работает корректно.

Rel-Сanonical выводится если только зашел на страницу - дубль.

у меня все так и есть. понятия не имею откуда нашли проблему :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор sergeytolkachyov

Ответов: 25
Просмотров: 35707
Последний ответ 23.09.2025, 11:22:23
от Alex_gs
Атрибуты полей при оформлении заказа в JoomShopping

Автор goga_pgasovav

Ответов: 1
Просмотров: 625
Последний ответ 12.08.2025, 11:21:29
от kit2m2
Конфликт js шаблонов JoomShaper helix3 J5 с JoomShopping 5

Автор heartlink

Ответов: 6
Просмотров: 1400
Последний ответ 22.07.2025, 12:40:12
от heartlink
Модуль карусели товаров JoomShopping на Swiper.js для Joomla

Автор sergeytolkachyov

Ответов: 2
Просмотров: 2046
Последний ответ 04.07.2025, 10:30:36
от sergeytolkachyov
[Решено] Сбросить счётчик ID товаров JoomShopping

Автор goga_pgasovav

Ответов: 3
Просмотров: 1355
Последний ответ 13.02.2025, 00:11:20
от goga_pgasovav