Новости Joomla

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором...

Модификация WT JShopping products anywhere - Uikit макетИтак, дано: музыкальный журнал, в котором представлены новости, интервью, рецензии и есть небольшой магазин на JoomShopping. Возникла необходимость внутри Joomla статей вставлять упоминание релиза и кнопочку «добавить в корзину». Я взял плагин WT JShopping products anywhere Сергея Толкачева (@webtolkru). Плагин отображает название товара и ссылку. При помощи напильника, ИИ и навыков вёрстки появился Uikit макет для шаблонов на базе Yootheme Pro.Учитываается мобильная версия - телефоны и ipad.Кнопка добавления в корзину работает по Ajax и появляется всплывающее окно (Notification Bar от Uikit) с информацией.Пока это базовый вариант, требующий доведения до лоска, однако он уже работает и его можно применять на проектах.Взять макет можно здесь.А плагин вставки товаров в материалы можно забрать здесь.Приветствуется доведение до ума и оформление в виде PR.

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla

👩‍💻 WT Content Image Gallery v.1.2.3 - плагин галереи изображений для Joomla.Пакет плагинов галереи изображений и видео для вставки в материалы и модули Joomla, а так же везде, где работают плагины группы content. Поддержка собственных макетов вывода для галерей. Смешанные фото+видео галереи. Плагин создан как замена Simple Image Gallery и поддерживает синтаксис {gallery}{/gallery}.👩‍💻 v.1.2.3. Что нового?- Обработка вступительного и полного текста для материалов Joomla. Добавлена обработка шорткодов в полном и вступительном текстах материалов Joomla.- Системные требования. Повышены минимальные требования до Joomla 5 и PHP 8.1.- Мелкие правки. Исправлена ошибка работы макета по умолчанию в плагине контента.- Joomla 6. Пакет плагинов успешно протестирован на Joomla 6.Страница расширения.GitHub расширенияJoomla Extensions Directory@joomlafeed#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 Гость просматривают эту тему.
  • 21 Ответов
  • 776 Просмотров
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Имеется скрипт:
Спойлер
[свернуть]

Делается это для того, чтобы потом сравнить title страницы и наименование категории, если совпадает - выводим инфу о категории.
Теперь о проблеме. Категорий около 30 000, когда я начинаю выполнять $parent_cat = $cat_model->getCategory($product->virtuemart_category_id); , страница начинает "думать".

Подозреваю, что делаю что-то не так. Пожалуйста, укажите, что не так. Спасибо заранее! ^-^
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
А сколько у Вас count( $products ) ?
Да и в обще - Вы для каждого товара в модели запрашиваете данные категории ..
Ну если сильно нужно то там по моему есть получить список категорий id которых в массиве !
то есть это будет 1 запрос а не == count( $products )
То есть если сильно хотите - то соберите id категорий в массив - и получите все категории одним запросом
что то типа
Код
' WHERE #__virtuemart_category.category_id IN ( ' . implode( ' , ' , $arrayCat_id ). ' ) ';
Ну или через модель - но своим запросом будет быстрей !
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
Код
if($products as $product) {
    ...
}
Может тут надо не if, а foreach?

Но дело даже не в этом.
Зачем эта проверка? Хотите определить в шаблоне является ли эта страница страницей просмотра категории?
Возможно, будет интересно: Интеграция с Ozon
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Может тут надо не if, а foreach?
Ха - А я и не глянул ! Что логический оператор перепутали с итерацией ! )))
то я бы на месте сервера - тоже долго думал бы что от меня хотят -  встретив такое  ! )))
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
я бы на месте сервера - тоже долго думал бы что от меня хотят -  встретив такое  ! )))

 :laugh:
Возможно, будет интересно: Интеграция с Ozon
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Может тут надо не if, а foreach?

Но дело даже не в этом.
Зачем эта проверка? Хотите определить в шаблоне является ли эта страница страницей просмотра категории?

Прошу прощения, опечатался, в коде было именно foreach.
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
А сколько у Вас count( $products ) ?
Да и в обще - Вы для каждого товара в модели запрашиваете данные категории ..
Ну если сильно нужно то там по моему есть получить список категорий id которых в массиве !
то есть это будет 1 запрос а не == count( $products )
То есть если сильно хотите - то соберите id категорий в массив - и получите все категории одним запросом
что то типа
Код
' WHERE #__virtuemart_category.category_id IN ( ' . implode( ' , ' , $arrayCat_id ). ' ) ';
Ну или через модель - но своим запросом будет быстрей !

Прошу прощения, выше упомянул, что опечатался, на самом деле указан foreach,  а не if.

count( $products ) возвращает 710.
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@rsn
Цитировать
Зачем эта проверка? Хотите определить в шаблоне является ли эта страница страницей просмотра категории?

Возможно, вы знаете модуль mod_virtuemart_products, в нём есть функция фильтрации вывода товара по родительской категории.
У меня имеется около 400 страниц с некоторым "калькулятором ссылки" на исходный товар. На каждой из страниц необходимо вывести ссылку на товар + наименование товара + картинку товара.

Мой мозг, зеленый в подобных затеях, подумал: зачем создавать 400 модулей, если можно брать категорию из title страницы, и вывести товар по сверке title и соотв. категории.
Код
if (strpos($current_title, $allParentsCategory)!== false) {
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Ну то как придумает так и решает !
Главное что бы это по ресурсам не затратно было !!
Кста - включите отладку (общие настройки Joomla ) и там можно посмотреть - сколько какой процесс - хавает памяти и времени ! -
*

rsn

  • Давно я тут
  • 520
  • 34 / 3
@Damarkuzz не понял Вашу задачу. Попробуйте объяснить другими словами.
Возможно, будет интересно: Интеграция с Ozon
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
Код
count( $products ) возвращает 710.
Что то Вы точно не совсем то затеяли !
при таких количествах count( $products ) возвращает 710 - я бы не советовал в обще ни каких вычислений и расчетов проводить !
А тем более  в прямом потоке HTTP - Запроса !
*

gartes

  • Завсегдатай
  • 1859
  • 142 / 6
  • Е = mс²
не понял Вашу задачу. Попробуйте объяснить другими словами.
Та да ! - То ли объяснили не так - то ли - что то не то делаете - типа как делить на ноль ! == можно - но ненужно ! )))
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Делается это для того, чтобы потом сравнить title страницы и наименование категории, если совпадает - выводим инфу о категории.
Т.е. фильтрация PHP, а не SQL ?
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@rsn
Цитировать
@Damarkuzz не понял Вашу задачу. Попробуйте объяснить другими словами.

Вкратце.

1) На 400 страницах в SP PageBuilder требуется вывести по одной категории товаров VirtueMart (всего 400 категорий).

2) Чтобы не создавать 400 разных модулей mod_virtuemart_products (на каждую категорию), я решил перебрать вызвать все товары через foreach ($products as $product). Возникает вопрос, как нам теперь из общего потока товаров всех категорий вывести нужную? (моё решение в п.3)

3) С помощью PHP мы берем title заголовка, и сопоставляем его с перечнем категорий
Код
foreach ($products as $product) {
   if (strpos($current_title, $allCategories)!== false) {
      print_r($product)
   }
}
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@draff
Цитировать
Т.е. фильтрация PHP, а не SQL ?
Цитировать
Да, по другому пока что не умею
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Как вариант хак модуля, включить фильтр и добавить в точку входа модуля
$doc = JFactory::getDocument();
$current_title = $doc->getTitle();
$db = JFactory::getDbo();
            
            $query = $db
               ->getQuery(true)
               ->select('virtuemart_category_id')
               ->from($db->quoteName('#__virtuemart_categories_ru_ru'))
               ->where($db->quoteName('category_name'). " = " . $db->quote($current_title));
            $db->setQuery($query);
            $category_id = $db->loadResult();
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@draff
Цитировать
Как вариант хак модуля, включить фильтр и добавить в точку входа модуля


Спасибо, пытался выполнить Ваш код, дописав некоторые вещи:


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


Данным действиями я получил родительскую категорию, затем вызвал дочерние, в которых находятся товары, которые нужно вывести.
Но теперь, если выводить продукты через конструкцию foreach ($product as $products) {...}, выводятся все товары, без фильтрации по категории. Подскажите, как вывести товар, но отфильтровав по категориям?

*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Вы создаете новый модуль или используете стандартный Вирт для вывода продуктов ?
п.с.
Выводит товары из подкатегории в стандартном модуле Вирт и без фильтрации по группе.
Спойлер
[свернуть]
« Последнее редактирование: 04.12.2020, 05:22:30 от draff »
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
Запрос на получение родительской категории
Код
				$query = $db
->getQuery(true)
->select($db->quoteName('vc.category_parent_id'))
->from($db->quoteName('#__virtuemart_categories', 'vc'))
->join('INNER', $db->quoteName('#__virtuemart_categories_ru_ru', 'rc'). '  ON ' . $db->quoteName('rc.virtuemart_category_id'). ' = ' . $db->quoteName('vc.virtuemart_category_id'))
->where($db->quoteName('rc.category_name'). " = " . $db->quote($current_title));
$db->setQuery($query);
$category_id = !empty($db->loadResult())? $db->loadResult() : $category_id;
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
Вы создаете новый модуль или используете стандартный Вирт для вывода продуктов ?
п.с.
Выводит товары из подкатегории в стандартном модуле Вирт и без фильтрации по группе.
Спойлер
[свернуть]

Большое спасибо, получилось вывести товары:
1) Главной категории (Тест)
2) Дочерней категории первой вложенности (Тест -> Тапочки)

Но, если товары находятся во второй вложенности и далее (Тест->Тапочки->Тканевые) - товары не выводятся.
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
*

Damarkuzz

  • Захожу иногда
  • 116
  • 1 / 0
@draff да, гораздо быстрее
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Один пункт меню думает что он главный

Автор DamaVbubi

Ответов: 4
Просмотров: 1108
Последний ответ 13.02.2024, 19:49:10
от DamaVbubi
Долго грузятся страницы категорий

Автор SuperRomario

Ответов: 4
Просмотров: 1948
Последний ответ 03.07.2023, 17:59:07
от Wood
Ошибка 1054 Unknown column 'created_by' in 'field list' VirtueMart

Автор Evgen Kulibin

Ответов: 3
Просмотров: 1436
Последний ответ 26.02.2023, 01:56:42
от lakshmi
Как вывести в категории VirtueMart кастомное поле с редактором?

Автор dc_web

Ответов: 4
Просмотров: 817
Последний ответ 05.10.2022, 11:07:00
от sivers
Проблема с выводом изображения в VirtueMart 3

Автор vetkrs

Ответов: 0
Просмотров: 568
Последний ответ 30.09.2022, 17:22:43
от vetkrs