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

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Код: php-brief
$format = 'Y/m/d H:i:s';
foreach($json['reviews'] as &$review){
    if(empty($review['review_time'])) continue;
    $review['review_time'] = date_format(date_create($review['review_time']), $format);
}
здесь?

Нет, вот в этом моём:
Код: php
for ($i = 0; $i <= $reviews_count; $i++) {
        $rev_time = date_parse($json['reviews'][$i]['review_time']);
        // Добавляем в массив время отзывов
        $rev_time_array[] = $rev_time;
        // В массиве могут оказаться пустые значения, избавляемся от них
        //$rev_time_array = array_diff($rev_time_array, $array_empty);
        }
    }
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
так тебе ответы зачем пишут, чтоб смотрел и все равно свою линию продолжал
первоначально откуда данные берешь вот там и ограничивай сразу их кол-во а не в цикле проверяй сколько отрабатывать нужно
for выкинь и забудь используй foreach http://www.phpbench.com/
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Так уже подсказали, и с этим всё в порядке. Теперь иду дальше, пытаюсь понять как из массива собрать дату в нужном формате
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
zeus07 не тупи глянь на код вверху страницы. Скажу по секрету он это делает
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
zeus07 не тупи глянь на код вверху страницы. Скажу по секрету он это делает

Да, этот код в принципе делает то, что надо, но он выводит в данный момент только первый элемент массива. А как сделать так, чтобы даты в нужном формате попадали в массив?

UPD. И второе. У меня переменная $review_time является булевой. И мне надо проверять, что если она отдаёт 1, то делать всё то, о чём я говорил, если нет, то ничего.
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Разобрался окончательно. Вот такой код получился:

Код: php
// Вывод времени отзыва 
$review_time = $params->get('review_time');
$format = 'Y/m/d H:i:s';
    if ($review_time == 1) {
        foreach($json['reviews'] as &$review){
            if(empty($review['review_time'])) continue;
            $review['review_time'] = date_format(date_create($review['review_time']), $format);
            $rev_time_array[] = $review['review_time'];
        }
    }

Всем большое спасибо за помощь!
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
И ещё вопрос. Может подскажете, как можно оптимизировать вот этот код, также используя цикл foreach:

Код: php
$grade_average = $params->get('grade_average');
    if ($grade_average == 1) {
              $grade_average_array = array();
        for ($i = 0; $i <= $reviews_count; $i++) {
        $grade_aver = $json['reviews'][$i]['grade_average'];
        // Добавляем в массив оценку контактности
        $grade_average_array[] = $grade_aver;
        // В массиве могут оказаться пустые значения, избавляемся от них
        $grade_average_array = array_diff($grade_average_array, $array_empty);
        }
    }
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
аналогично, только вы желательно должны все в одном цикле делать
Код: php-brief
$grade_average = $params->get('grade_average');
if ($grade_average == 1) {
    $grade_average_array = array();
    foreach ($json['reviews'] as $review) {
        !empty($review['grade_average']) && $grade_average_array[] = $review['grade_average'];
    }
}
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
аналогично, только вы желательно должны все в одном цикле делать
Код: php-brief
$grade_average = $params->get('grade_average');
if ($grade_average == 1) {
    $grade_average_array = array();
    foreach ($json['reviews'] as $review) {
        !empty($review['grade_average']) && $grade_average_array[] = $review['grade_average'];
    }
}

Да, прекрасно работает, спасибо! И кода гораздо меньше. А то у меня таких опций довольно много, и можно существенно сократить код.
А не могли бы вы прокомментировать последнюю строку? А то не очень доходит.
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
И ещё хотел спросить. Вот когда нужно вот так спарсить
Код: php
$json['reviews'][$i]['from']['sname']
Как тут правильно сделать?
*

buyanov

  • Захожу иногда
  • 188
  • 29 / 1
  • Сайты 74
Ого 3 страницы уже =)
Можешь кусок своего JSON сюда кинуть я тебе полностью напишу тогда. =) А то из нормальной в общем то темы получилась куча неюзабельных кусков. Причем никто не учитывает глобальных настроек и все работают в процедурном стиле как 10 лет назад.
Если кто другой столкнет с подобным эта тема для него будет адом...
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
key(array_slice($json['reviews'], -1, 1, true)
end(array_keys($json['reviews'])_
жесть  ;D
даже треш :) говорю ж, перепутал по поводу end, что он ключ возвращает, а не значение. а потом уже выкручивался как мог :)
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Ого 3 страницы уже =)
Можешь кусок своего JSON сюда кинуть я тебе полностью напишу тогда. =) А то из нормальной в общем то темы получилась куча неюзабельных кусков. Причем никто не учитывает глобальных настроек и все работают в процедурном стиле как 10 лет назад.
Если кто другой столкнет с подобным эта тема для него будет адом...

Вот массив с отзывами, который мы получаем из $json['reviews']

Код: php
Array ( [0] => Array ( [grade_average] => 7.6000 [grade_quality] => 7 [grade_professionalism] => 8 [grade_cost] => 7 [grade_schedule] => 8 [grade_connectivity] => 8 [review_comment] => хорошо выполненная работа. всем довольны) [review_time] => 2015/05/07 16:42:14 [from] => Array ( [url] => https://freelancehunt.com/profile/show/Eruntales.html [url_api] => https://api.freelancehunt.com/profiles/Eruntales [profile_id] => 102429 [login] => Eruntales [fname] => Жанна [sname] => Пищик [avatar] => http://content.freelancehunt.com/profile/photo/50/Eruntales.png [rating] => 268 [rating_position] => 849 ) [project] => Array ( [project_id] => 63377 [name] => Новая верстка+сверстать для мобильного и планшетного вида [description] => Joomla 3.2 - необходимо натянуть новый дизайн 3-4 страниц на имеющийся HTML, текущая версия http://batt.su/ , также необходимо реализовать планшетный и мобильный лейаут с имеющего дизайна (psd). [description_html] =>
Joomla 3.2 - необходимо натянуть новый дизайн 3-4 страниц на имеющийся HTML, текущая версия http://batt.su/ , также необходимо реализовать планшетный и мобильный лейаут с имеющего дизайна (psd).



[url] => https://freelancehunt.com/project/novaya-verstkaplussverstat-dlya-mobilnogo-planshetnogo/63377.html [url_api] => https://api.freelancehunt.com/projects/63377 [is_personal_project] => 0 [is_safe_project] => 0 [status_name] => проект завершен [budget_amount] => 3000 [budget_currency_code] => UAH [currency_symbol] => ₴ ) ) [1] => Array ( [grade_average] => [review_comment] => непонятки [review_time] => 2014/10/31 22:22:02 [from] => Array ( [grade_average] => [review_comment] => непонятки [review_time] => 2014/10/31 22:22:02 [from] => Array *RECURSION* [project] => Array ( [project_id] => 37072 [name] => Нужно доработать сайт! Оплата по факту [description] => Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats). + интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб [description_html] =>
Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats).

+ интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб

[url] => https://freelancehunt.com/project/nuzhno-dorabotat-sayt-oplata-po-faktu/37072.html [url_api] => https://api.freelancehunt.com/projects/37072 [is_personal_project] => 0 [is_safe_project] => 0 [status_name] => закрыт без отзыва [budget_amount] => 5000 [budget_currency_code] => RUB [currency_symbol] => руб. ) ) [project] => Array ( [project_id] => 37072 [name] => Нужно доработать сайт! Оплата по факту [description] => Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats). + интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб [description_html] =>
Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats).

+ интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб

[url] => https://freelancehunt.com/project/nuzhno-dorabotat-sayt-oplata-po-faktu/37072.html [url_api] => https://api.freelancehunt.com/projects/37072 [is_personal_project] => 0 [is_safe_project] => 0 [status_name] => закрыт без отзыва [budget_amount] => 5000 [budget_currency_code] => RUB [currency_symbol] => руб. ) ) )

из него я вытягиваю в отдельные массивы нужную информацию, вот скриншот админки: http://clip2net.com/s/3uYbbRU
« Последнее редактирование: 29.02.2016, 20:13:00 от zeus07 »
*

buyanov

  • Захожу иногда
  • 188
  • 29 / 1
  • Сайты 74
Цитировать
Вот массив с отзывами, который мы получаем из $json['reviews']
Его бы хотябы сериализуй =)  serialize($json['reviews']) А то я его даже скопировать не могу себе
Создание сайтов, интернет-магазинов, оптимизация, продвижение, хостинг, безопасность, лечение от вирусов - мой сайт, телега, Хостинг
*

zeus07

  • Давно я тут
  • 723
  • 9 / 0
Сделал:

Код: php
a:2:{i:0;a:10:{s:13:"grade_average";s:6:"7.6000";s:13:"grade_quality";s:1:"7";s:21:"grade_professionalism";s:1:"8";s:10:"grade_cost";s:1:"7";s:14:"grade_schedule";s:1:"8";s:18:"grade_connectivity";s:1:"8";s:14:"review_comment";s:76:"хорошо выполненная работа. всем довольны)";s:11:"review_time";s:19:"2015/05/07 16:42:14";s:4:"from";a:9:{s:3:"url";s:53:"https://freelancehunt.com/profile/show/Eruntales.html";s:7:"url_api";s:48:"https://api.freelancehunt.com/profiles/Eruntales";s:10:"profile_id";s:6:"102429";s:5:"login";s:9:"Eruntales";s:5:"fname";s:10:"Жанна";s:5:"sname";s:10:"Пищик";s:6:"avatar";s:63:"http://content.freelancehunt.com/profile/photo/50/Eruntales.png";s:6:"rating";s:3:"268";s:15:"rating_position";s:3:"854";}s:7:"project";a:12:{s:10:"project_id";s:5:"63377";s:4:"name";s:107:"Новая верстка+сверстать для мобильного и планшетного вида";s:11:"description";s:322:"Joomla 3.2 - необходимо натянуть новый дизайн 3-4 страниц на имеющийся HTML, текущая версия http://batt.su/ , также необходимо реализовать планшетный и мобильный лейаут с имеющего дизайна (psd).";s:16:"description_html";s:372:"
Joomla 3.2 - необходимо натянуть новый дизайн 3-4 страниц на имеющийся HTML, текущая версия http://batt.su/ , также необходимо реализовать планшетный и мобильный лейаут с имеющего дизайна (psd).



";s:3:"url";s:99:"https://freelancehunt.com/project/novaya-verstkaplussverstat-dlya-mobilnogo-planshetnogo/63377.html";s:7:"url_api";s:44:"https://api.freelancehunt.com/projects/63377";s:19:"is_personal_project";i:0;s:15:"is_safe_project";i:0;s:11:"status_name";s:29:"проект завершен";s:13:"budget_amount";s:4:"3000";s:20:"budget_currency_code";s:3:"UAH";s:15:"currency_symbol";s:3:"₴";}}i:1;a:5:{s:13:"grade_average";N;s:14:"review_comment";s:18:"непонятки";s:11:"review_time";s:19:"2014/10/31 22:22:02";s:4:"from";a:5:{s:13:"grade_average";N;s:14:"review_comment";s:18:"непонятки";s:11:"review_time";s:19:"2014/10/31 22:22:02";s:4:"from";a:5:{s:13:"grade_average";N;s:14:"review_comment";s:18:"непонятки";s:11:"review_time";s:19:"2014/10/31 22:22:02";s:4:"from";N;s:7:"project";a:12:{s:10:"project_id";s:5:"37072";s:4:"name";s:70:"Нужно доработать сайт! Оплата по факту";s:11:"description";s:563:"Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats). + интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб";s:16:"description_html";s:576:"
Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats).

+ интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб

";s:3:"url";s:82:"https://freelancehunt.com/project/nuzhno-dorabotat-sayt-oplata-po-faktu/37072.html";s:7:"url_api";s:44:"https://api.freelancehunt.com/projects/37072";s:19:"is_personal_project";i:0;s:15:"is_safe_project";i:0;s:11:"status_name";s:32:"закрыт без отзыва";s:13:"budget_amount";s:4:"5000";s:20:"budget_currency_code";s:3:"RUB";s:15:"currency_symbol";s:8:" руб.";}}s:7:"project";a:12:{s:10:"project_id";s:5:"37072";s:4:"name";s:70:"Нужно доработать сайт! Оплата по факту";s:11:"description";s:563:"Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats). + интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб";s:16:"description_html";s:576:"
Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats).

+ интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб

";s:3:"url";s:82:"https://freelancehunt.com/project/nuzhno-dorabotat-sayt-oplata-po-faktu/37072.html";s:7:"url_api";s:44:"https://api.freelancehunt.com/projects/37072";s:19:"is_personal_project";i:0;s:15:"is_safe_project";i:0;s:11:"status_name";s:32:"закрыт без отзыва";s:13:"budget_amount";s:4:"5000";s:20:"budget_currency_code";s:3:"RUB";s:15:"currency_symbol";s:8:" руб.";}}s:7:"project";a:12:{s:10:"project_id";s:5:"37072";s:4:"name";s:70:"Нужно доработать сайт! Оплата по факту";s:11:"description";s:563:"Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats). + интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб";s:16:"description_html";s:576:"
Добрый день! Нужно доработать сайт . На сайте должна быть страничка с возможностью задания рейтинга для каждого объекта, аналог (http://krasnodar.sutochno.ru/cabinet/pr/flats).

+ интеграция с Qiwi кошельком с возможностью выставления автоматических счетов из ЛК, и квитовкой оплаченных счетов. Сайт сделан на Joomla... Оплата 5000 руб

";s:3:"url";s:82:"https://freelancehunt.com/project/nuzhno-dorabotat-sayt-oplata-po-faktu/37072.html";s:7:"url_api";s:44:"https://api.freelancehunt.com/projects/37072";s:19:"is_personal_project";i:0;s:15:"is_safe_project";i:0;s:11:"status_name";s:32:"закрыт без отзыва";s:13:"budget_amount";s:4:"5000";s:20:"budget_currency_code";s:3:"RUB";s:15:"currency_symbol";s:8:" руб.";}}}
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться