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

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Приветствую Вас уважаемые форумчане! Прошу помочь советом новичку
Вопрос звучит в следующем:
Есть категория первого уровня, есть второго, есть третьего
Категории второго и третьего уровня одни и те же - их очень очень много - каталог запчастей.
Как скопировать категории второго и третьего уровня для каждой из категорий первого уровня - марок машин?
Ниже скрины для ясности

*

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #1 : 11.01.2015, 02:00:43 »
Люди, подскажите пожалуйста, очень нужно....
*

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #2 : 11.01.2015, 02:07:18 »
В какой папке находятся категории, которые я создаю в админке? Где можно откопировать созданные подкатегории и вставить в другую категорию? Есть возможность вообще это сделать?
*

odin2000

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
Re: Копирование категорий в каталоге
« Ответ #3 : 11.01.2015, 06:14:33 »
Категории хранятся в базе данных. Зайдите в базу, выделите и скопируйте нужные потом поменяйте у скопированных поле category_parent_id на нужное. Все вроде ;) Я сам так не делал но думаю должно сработать.
*

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #4 : 11.01.2015, 07:30:55 »
Категории хранятся в базе данных. Зайдите в базу, выделите и скопируйте нужные потом поменяйте у скопированных поле category_parent_id на нужное. Все вроде ;) Я сам так не делал но думаю должно сработать.
Расставлю сразу точки над "и"))
Я недавно в этом всем "сайтостроении" так сказать...Сайт на локальном сервере. Облазил все папки, не нашел, где хранятся категории.... Не могли бы Вы подсказать эту заветную папочку или файлик, где я смогу выделить и скопировать нужные категории?)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Копирование категорий в каталоге
« Ответ #5 : 11.01.2015, 09:39:46 »
Категории хранятся в базе данных.

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

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #6 : 11.01.2015, 11:18:16 »
Большое спасибо!
Вторые сутки занимаюсь любовью с этим вопросом, сил уже нет, крыша едет, глаз дергается...
В этих вопросах вообще чайник, прошу не судить строго, объяснять буду на "рабоче-крестьянском" языке
В общем, есть сайт, делаю его сам, делаю как могу... Делаю его на Joomla, подключен модуль JS (Joomshoping)
Посредством модуля JS на сайте реализован каталог, путем вложения категории в категорию примерно таким макаром:
Категория с category_parent_id = 0 - Главная
Категория с category_parent_id = 1 - вложена в категорию с category_parent_id = 0
Категория с category_parent_id = 2 - вложена в категорию с category_parent_id = 1

Есть еще категория с category_parent_id = 3 - Она тоже главная! В неё необходимо скопировать структуру категорий с category_parent_id = 1 и category_parent_id = 2.
Путем неимоверных усилий я разобрался, как попасть в мою базу данных... Я даже нашел, где у меня эти категории. У меня получилось её скопировать и поменять category_parent_id с 0 на 3 при копировании, но вложенности категории в категорию уже нет. Копируется только категория с category_parent_id 1, но с category_parent_id 2 нет в дереве. При этом, я не разобрался, как массово копировать категории, понял только как по одной штуке.

Я бы добавил эти категории в ручную через админку сайта, но у меня сайт автозапчастей и каталог построен по принципу Марка-Модель - Группа запчастей - Подгруппа запчастей. Марок машин много, моделей ещё больше, запчастей тьма - но они одинаковы для каждого авто, а значит, мне просто нужно откопировать существующее дерево, на каждую марку, а если я буду делать это в ручную через админку сайта (при этом, там нельзя скопировать категории, можно только добавить новые), то пока я это сделаю, у меня вырастет борода до пола, загнутся пальцы и меня, скорее всего, сдадут в психушку.

Скажите пожалуйста, уважаемые форумчане, как мне откопировать эти категории с одного раздела в другой, при этом не потеряя структуры воложенности категории в категорию через базу данных или любым другим доступным способом??
*

odin2000

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
Re: Копирование категорий в каталоге
« Ответ #7 : 11.01.2015, 11:42:06 »
Попробую написать скрипт сегодня-завтра. Самому интересно)
*

odin2000

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
Re: Копирование категорий в каталоге
« Ответ #8 : 11.01.2015, 16:22:25 »
В общем написал. Код немного уродский но вроде работает, протестил у себя где только можно все нормуль. Все копирует полностью (название картинок, алиас, описание и тд), любой уровень вложенности.
Спойлер
[свернуть]

Вставляете этот код к примеру вот сюда \components\com_jshopping\templates\ваш шаблон\category\maincategory.php . Переходите на страницу где у вас выводятся все категории и код начинает копировать, главное дождитесь полной загрузки страницы и не обновляйте ее.

$name = "ВАША КАТЕГОРИЯ"; Вот сюда вставляете название вашей категории которую хотите копировать, в вашем случае насколько я вижу тут будет ("ACURA" либо "ALFA ROMEO") и главное проверьте в базе что бы у этой категории category_parent_id был равен нулю, а то получится белеберда. ПРИ КАЖДОМ копировании меняйте здесь значение $alias = "_new"; на любое, в данном случае стоит _new . Ну вроде все, ответственности никакой не несу, используйте на свой страх и риск, хотя по факту он ничего поломать не может.

Если можно прикрепить, прикрепляйте. Может кому еще понадобится ;)
« Последнее редактирование: 11.01.2015, 16:50:20 от odin2000 »
*

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #9 : 11.01.2015, 17:21:30 »
В общем написал. Код немного уродский но вроде работает, протестил у себя где только можно все нормуль. Все копирует полностью (название картинок, алиас, описание и тд), любой уровень вложенности.
Спойлер
[свернуть]

Вставляете этот код к примеру вот сюда \components\com_jshopping\templates\ваш шаблон\category\maincategory.php . Переходите на страницу где у вас выводятся все категории и код начинает копировать, главное дождитесь полной загрузки страницы и не обновляйте ее.

$name = "ВАША КАТЕГОРИЯ"; Вот сюда вставляете название вашей категории которую хотите копировать, в вашем случае насколько я вижу тут будет ("ACURA" либо "ALFA ROMEO") и главное проверьте в базе что бы у этой категории category_parent_id был равен нулю, а то получится белеберда. ПРИ КАЖДОМ копировании меняйте здесь значение $alias = "_new"; на любое, в данном случае стоит _new . Ну вроде все, ответственности никакой не несу, используйте на свой страх и риск, хотя по факту он ничего поломать не может.

Если можно прикрепить, прикрепляйте. Может кому еще понадобится ;)


Я даже не знаю как Вас благодарить!) Сейчас буду тестить, о результатах отпишусь подробно)
Я уже пошел по этому принципу - http://joomlaforum.ru/index.php?topic=289179.0 Полез в БД, сделал экспорт, добавил нужные категории, потом экспорт, база не встает, пишет ошибку - #1062 - Duplicate entry '1' for key 'PRIMARY'
В инете инфу собирал, ковырялся, плюнул, завел новый хост на локалке, сейчас буду пробовать этот вариант
*

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #10 : 11.01.2015, 18:00:01 »
РАБОТАЕТ! Я плачу от радости))))))) Одним скриптом сократили месяцы моей работы! Большое Вам человеческое спасибо! Тема обязательно какому нибудь "разработчику", типа меня, понадобится!
*

odin2000

  • Осваиваюсь на форуме
  • 28
  • 3 / 0
Re: Копирование категорий в каталоге
« Ответ #11 : 11.01.2015, 18:42:00 »
А товары нормально добавляются, не пробовали ? Хотя по идее должно быть нормально но не помешало бы проверить...
*

nemo_228

  • Осваиваюсь на форуме
  • 25
  • 0 / 0
Re: Копирование категорий в каталоге
« Ответ #12 : 11.01.2015, 19:54:34 »
Пока не пробовал. Они тоже будут копироваться? Мне в принципе нужно только выстроить дерево, потом я этот код уберу. Я тут юзаю код, возникли некоторые вопросы. Подскажите ещё пожалуйста, после какой строки кода необходимо ставить Ваш код? И еще вопрос по вложенности. Копирует только первые категории по вложенности от нуля, остальные нет. Может я что то не так делаю со сменой $alias? Объясните пожалуйста поподробней последовательность действий. Вывел нужную категорию на первый уровень, поставил код, задал эту категорию к копированию, указал алиас, сохранил изменения, зашел в категорию - дальше что делаем? В этой категории еще подкатегории. Как и куда они копируются? Я же не создавал новый алиас, для вложенных подкатегорий?    
По поводу товаров отпишусь в тему, как проверю
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[JoomShopping 5] вывод товаров из дочерних категорий

Автор v42bis

Ответов: 15
Просмотров: 2664
Последний ответ 14.06.2024, 11:43:28
от denistischenko
Несколько категорий на одной странице

Автор geral

Ответов: 4
Просмотров: 915
Последний ответ 21.04.2023, 16:15:49
от geral
Сортировка товаров в каталоге JoomShopping (поля для сортировки)

Автор VovkaS

Ответов: 5
Просмотров: 3437
Последний ответ 14.04.2022, 15:19:01
от Mister Shadow
Скидки для разных групп и разных категорий

Автор misteri27

Ответов: 4
Просмотров: 719
Последний ответ 11.06.2021, 13:50:32
от kit2m2
Обнулить ID товаров и категорий в JoomShopping

Автор Rebarun

Ответов: 4
Просмотров: 752
Последний ответ 01.07.2020, 21:57:29
от Rebarun