Новости Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla

👩‍💻 SW JProjects v.2.5.0 - компонент каталога цифровых проектов на Joomla.Компонент - менеджер цифровых проектов для Joomla! CMS. Компонент обеспечивает создание каталога цифровых проектов и предоставляет возможность скачивания, в том числе с использованием лицензионных ключей.👩‍💻 v.2.5.0. Что нового?Схемы структур данных для серверов обновлений. Теперь с SW JProjects вы может создавать сервер обновлений не только для расширений Joomla, но и свои собственные. Например, вам нужно, чтобы структура данных сервера обновлений была другая и формат должен быть, например, не XML, а JSON. Формирование структуры данных для сервера обновлений расширений Joomla вынесено в отдельный плагин. Вы можете создать свой собственный плагин и реализовать в нём нужную вам структуру данных, добавив или наоборот исключив отображаемые данные. Сервер обновлений в компоненте по-прежнему отображает информацию о списке проектов и их версиях, о конкретном проекте и его changelog.Можно выбрать схему данных сервера обновлений глобально для всего компонента, выбрать другую схему данных для категории проектов, а так же выбрать схему в каждом проекте.

Разработчикам в качестве образца можно посмотреть плагин схемы данных для Joomla в составе компонента или же плагин-образец JSON-схемы на GitHub.
Группа плагинов swjprojects. Для нужд компонента создана группа плагинов swjprojects. В частности, в этой группе находится плагин структуры данных Joomla расширений для сервера обновлений.Изменение языковых констант. Изменены некоторые языковые константы в панели администратора. Если вы делали переопределение констант - переопределите их снова.👩‍💻 Joomla 6. Внесены изменения для корректной установки и работы компонента на Joomla 6. Компонент успешно протестирован на Joomla 6-beta2.Минимальная версия Joomla - 5. Подняты минимальные системные требования: Joomla 5.0.0 и PHP 8.1.
- Страница расширения👉 Плагин-образец кастомной JSON-схемы данных для сервера обновлений на GitHub.- GitHub расширения- Документация на GitHub- Joomla Extensions Directory#joomla #расширения

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод...

👩‍💻 Как триггерить события для плагинов на манер Joomla 5+?В Joomla 6 должны удалить метод triggerEvent(), с помощью которого раньше вызывались события для плагинов. Теперь чтобы в своём коде вызвать событие для плагина и получить от него результаты нужно:- создать объект класса события- передать в него параметры

use Joomla\CMS\Event\AbstractEvent;use Joomla\CMS\Factory;use Joomla\CMS\Plugin\PluginHelper;// Грузим плагины нужных группPluginHelper::importPlugin('system');// Создаём объект события$event = AbstractEvent::create('onAfterInitUniverse', [    'subject' => $this,    'data'    => $data, // какие-то данные    'article' => $article, // ещё материал вдовесок    'product' => $product, // и товаров подвезли]);// Триггерим событиеFactory::getApplication()->getDispatcher()->dispatch(    $event->getName(), // Тут можно строку передать 'onAfterInitUniverse'    $event);// Получаем результаты// В случае с AbstractEvent это может быть не 'result',// а что-то ещё - куда сами отдадите данные.// 2-й аргумент - значение по умолчанию, // если не получены результаты$results = $event->getArgument('result', []);
Плюсы такого подхода - вам не нужно запоминать порядок аргументов и проверять их наличие. Если вы написали свой класс события, то в плагине можно получать аргументы с помощью методов $event->getArticle(), $event->getData(), $event->getProduct() и подобными - реализуете сами под свои нужды. Если такой класс события написали, то создаёте экземпляр своего класса события и укажите его явно в аргументе eventClass
use Joomla\Component\MyComponent\Administrator\Event\MyCoolEvent;$event = MyCoolEvent::create('onAfterInitUniverse', [    'subject'    => $this,    'eventClass' => MyCoolEvent::class, // ваш класс события    'data'       => $data, // какие-то данные    'article'    => $article, // ещё материал вдовесок    'product'    => $product, // и товаров подвезли]);
Ожидаемо, что класс вашего события будет расширять AbsractEvent или другие классы событий Joomla.🙁 Есть неприятный нюанс - нельзя просто так вызывать событие и ничего не передать в аргументы. Аргумент subject обязательный. Но если вы всё-таки не хотите туда ничего передавать - передайте туда пустой stdClass или объект Joomla\registry\Registry.
@joomlafeed#joomla #php #webdev

0 Пользователей и 1 Гость просматривают эту тему.
  • 20 Ответов
  • 9971 Просмотров
*

SamDecKs

  • Захожу иногда
  • 57
  • 3 / 0
Сразу оговорюсь чтобы не путать. Речь идет не о функции "Максимальное количество единиц товара в заказе ". Необходимо сделать чтобы пользователь мог заказать в магазине только 1 товар и не более. Как такое реализовать?? !
*

Sven

  • Захожу иногда
  • 107
  • 6 / 5
Присоединяюсь к данному вопросу, мне тоже это необходимо. Поясню зачем это нужно:
Например покупателю понравилось сразу несколько товаров, но купить он намерен только какой-то один из них, который ему больше понравится когда их привезет курьер. Поэтому его нужно ограничить, иметь возможность сделать допустим - в одном заказе может быть не более 5 позиций. Чтобы он не мог заказать сразу 10 разных вещей, заранее зная что купит только какую-то одну из них.
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Подскажите, как решили вопрос? Так понял, что с помощью "Максимального количество единиц товара в заказе" можно ограничить только количество ОДНОГО товара в корзине, а надо, чтобы нельзя было заказывать больше одного Любого товара. Т.е. один заказ - один товар, и не более того. Как это реализовать?
« Последнее редактирование: 06.01.2014, 21:37:53 от pH43 »
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
/administrator/index.php?option=com_jshopping&controller=config&task=checkout
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
/administrator/index.php?option=com_jshopping&controller=config&task=checkout

Да, именно там я и выставил "Maксимальное количество единиц товара в заказе" равное Одному.
И теперь если я заказываю зубную щетку, то могу добавить её только одну в корзину, вторую уже нельзя, но зубную пасту по-прежнему добавить можно. А мне нужно: если выбрана зубная щетка, то больше вообще никаких продуктов добавить в корзину нельзя.

(продукты указаны для примера)
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
ааа...т.е. надо общее максимальное кол-во, а не не кол-во каждой позиции.
хм....
настроек вроде нету таких. обычно чем больше в корзине тем магазину лучше :)
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
А можно как-нибудь поставить проверку на количество товаров в корзине?
Чтобы при добавлении нового товара в корзину она предварительно полностью очищалась.
Т.е.

Код
<?php
if ( кол-воТоваров != 0)
     { очистить корзину }
     else
     { добавить товар }
?>

Подскажите пожалуйста, как это можно грамотно написать или хотя бы Где это нужно прописать?

Этот вариант подойдет и для пользователей SamDecKs и SamDecKs
« Последнее редактирование: 21.01.2014, 18:16:17 от pH43 »
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
или очистить кеш перед добавлением нового товара
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Можно как-нибудь отменить заказ, если человек начал оформление, но не закончил его и перешел на другую страницу?
*

nevigen

  • Moderator
  • 10452
  • 863 / 25
  • http://n*****n.com
хм...
а как ? по какому событию ?
он ведь может его продолжить.
а во вторых заказа еще нет, если его не оформили.
Профессиональные / Бесплатные решения для JoomShopping
Не лечи бесплатно, ибо тот, кто лечится бесплатно, рано или поздно перестает ценить свое здоровье,
а тот, кто лечит бесплатно, рано или поздно перестает ценить результаты своего труда/ (с) Гиппократ?
Не ищите ответов, ищите решение !
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Согласен, не вариант.
Нашел на форуме функцию очистки корзины http://joomlaforum.ru/index.php?topic=259265.0

Теперь бы привязать её к кнопке "Купить" (у меня по клику сразу переходит в корзину) с условием ЕслиТоваров>0 то function refresh(){... (http://joomlaforum.ru/index.php?topic=259265.0)


Идея рабочая? Есть предложения?
« Последнее редактирование: 22.01.2014, 14:20:36 от pH43 »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
в принципе рабочая. попробуйте в \components\com_jshopping\controllers\cart.php в function add() после
Код
        $cart->load($to);        
добавить
Код
	if (count($cart->products) > Максимальное количество-1) {
$cart->delete(0);
}

по идее должно работать таким образом, что если в корзине уже лежит максимальное количество наименований, то при добавлении нового первый будет удален
« Последнее редактирование: 22.01.2014, 14:50:48 от dmitry_stas »
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Вставил, получилось так (отрывок кода)

Код

  
        $cart = &JModel::getInstance('cart', 'jshop');
        $cart->load($to);
if (count($cart->products) > 1) {
$cart->delete(0);
}
        if (!$cart->add($product_id, $quantity, $jshop_attr_id, $freeattribut)){
            if ($ajax){
                print getMessageJson();
                die();
            }


Не работает, что-то не так сделал?
*

dmitry_stas

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

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Проверил еще раз, Первый раз точно срабатывает, то есть если добавляешь следующий товар, то один лишний стирается, а вот если добавлять третий, четвертый раз и т.п., то все товары добавляются, сколько бы их ни было
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Разобрался! Поставил  $cart->clear(); вместо  $cart->delete(0)
т.е. получилось так:

Код

if (count($cart->products) > Максимальное количество-1) {
$cart->clear();
}



т.е. если нужно, чтобы заказчик мог сделать только один заказ, код будет таким

Код

if (count($cart->products) > 0) {
$cart->clear();
}


dmitry_stas +в репу! Спасибо!
« Последнее редактирование: 22.01.2014, 15:41:17 от pH43 »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
если добавлять третий, четвертый раз и т.п., то все товары добавляются
забыл, что ключи в массиве не пересортировываются после удаления. рабочий код такой:
Код
	if (count($cart->products) > Максимальное количество-1) {
$cart->delete(key($cart->products));
}
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
забыл, что ключи в массиве не пересортировываются после удаления. рабочий код такой:
Код
	if (count($cart->products) > Максимальное количество-1) {
$cart->delete(key($cart->products));
}

Кардинально отличается от моей конструкции с $cart->clear(); или обе конструкции рабочие?
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Цитировать
Кардинально отличается от моей конструкции с $cart->clear();
а никто и не обещал, что будут похожи :) я просто исправил свой код

Цитировать
или обе конструкции рабочие?
обе рабочие, только работают по разному. для макс 1 товара разницы в работе нет. а вот если 2 (и более), то в вашем варианте добавится 1, потом 2, потом при добавлении 3-го корзина очистится и в ней будет только 3. а в моем - будет просто удаляться первый товар, т.е. добавили 1, добавили 2, добавили 3 - получили в корзине 2 и 3
Плюс к этому, cart->clear влечет за собой удаление не только товаров, а и купона скидки например и т.д., что связано с корзиной
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

pH43

  • Захожу иногда
  • 335
  • 8 / 1
Цитировать
Кардинально отличается от моей конструкции с $cart->clear();
а никто и не обещал, что будут похожи :) я просто исправил свой код

Так я не утверждал, что конструкции разные, а наоборот как раз и спрашивал, есть ли между их работой кардинальное отличие)
Спасибо за развернутый ответ, теперь всё понятно, скорее всего будут в практике случаи, где и тот и другой вариант будут полезны!
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
скорее всего будут в практике случаи, где и тот и другой вариант будут полезны!
так и есть. именно поэтому я и говорю, что оба варианта рабочие. однако я бы все же воздержался от $cart->clear() по озвученным ранее причинам. если необходимо просто удалить все товары, не удаляя весь объект Корзина, то лучше сделать
Код
$cart->products = array();
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

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

Автор newalex

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

Автор IgorGeneralov

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

Автор falur

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

Автор shop-user

Ответов: 5
Просмотров: 2874
Последний ответ 25.01.2022, 06:05:12
от kit2m2
Поиск заказа по номеру телефона клиента

Автор Shiffer

Ответов: 19
Просмотров: 3193
Последний ответ 07.12.2021, 19:43:38
от anatol81n