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

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
Здравствуйте! К2  v2.6.5 Joomla 2.5.
В настройках задаётся только ширина изображений. И если я загружаю горизонтальные и вертикальные фотки, то вертикальные всегда не влазят в экран по высоте. либо горизонтальные получаются слишком маленьких размеров.
Решение вижу одно. т.к. задаётся ширина - надо просто подправить функцию изменения изображения, чтобы расчёт новых размеров изображения был не только по ширине а по ширине и высоте. Нашёл в файле class.upload.php вот такие строки функции которая собственно изменяет изображение:

Код
 if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $w, $h, imagesx($image_src), imagesy($image_src) );
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $w, $h, imagesx($image_src), imagesy($image_src) );
                        }
И нашёл вот такой код своей функции изменения изображения:
Код
// Создаем саму функцию:
 
// $infile - входящий графический файл
// $outfile - измененый файл
// $neww - новая ширина
// $newh - новая высота
// $quality - качество измененного рисунка
function imageresize($outfile,$infile,$neww,$newh,$quality) {
$im=imagecreatefromjpeg($infile); // Создаем графический объект из входящего файла
 
// Далее вычесляем ширину и высоту входящего файла и создаваемого фала:
$k1=$neww/imagesx($im);
$k2=$newh/imagesy($im);
$k=$k1>$k2?$k2:$k1;
 
$w=intval(imagesx($im)*$k);
$h=intval(imagesy($im)*$k);
 
$im1=imagecreatetruecolor($w,$h); // Создаем новый графический объект в который запишем измененный рисунок; $w,$h - ширина и высота
imagecopyresampled($im1,$im,0,0,0,0,$w,$h,imagesx($im),imagesy($im)); // Копируем входящий рисунок в исходящий в начало координат.
 
imagejpeg($im1,$outfile,$quality); // сохраняем файл в jpg формате с заданным качеством
imagedestroy($im); // разрушаем входящий файл
imagedestroy($im1); // разрушаем исходящий файл
}
 
// Запускаем функцию
imageresize("","webcam.jpg",640,240,75);

Помогите кто чем может?
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
Здравствуйте! К2  v2.6.5 Joomla 2.5.
В настройках задаётся только ширина изображений. И если я загружаю горизонтальные и вертикальные фотки, то вертикальные всегда не влазят в экран по высоте. либо горизонтальные получаются слишком маленьких размеров.
на форуме есть решение, см. FAQ
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
на форуме есть решение, см. FAQ
там 2 темы. одна про обрезание фото, а мне надо пропорциональное уменьшение, и к тому же по ходу написана про более старую версию, где в настройках задаётся именно ширина и высота. а в моём компоненте к2 везде только ширина. Что собственно и является проблемой.
И вторая тема - у которой 2 ссылки, и ни одна не рабочая.

Ещё советы есть?
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
а мне надо пропорциональное уменьшение
пропорциональное уменьшение - это то что делает компонент стандартно.
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
нееет. смотрите. я ставлю ширину допустим 800
Он уменьшает фотку. на мониторе шириной 1024 пикселя, горизонтальное фото отображается нормально.
А вот если фото вертикальное, оно получается по высоте очень большим! и не влазит в монитор.

Поэтому и надо "вписать в заданную область"
*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
нееет. смотрите. я ставлю ширину допустим 800
Он уменьшает фотку. на мониторе шириной 1024 пикселя, горизонтальное фото отображается нормально.
А вот если фото вертикальное, оно получается по высоте очень большим! и не влазит в монитор.

Поэтому и надо "вписать в заданную область"
у Вас 2 фото
8000х800 и 800х8000
какие у него должны быть новые размеры?
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
у Вас 2 фото
8000х800 и 800х8000
какие у него должны быть новые размеры?
я задаю в настройках ширину 600. он и делает ширину тупо 600.
по  существующему алгоритму получается
600х60 и 600х6000

вот эти 6000 мне и не нравятся! Высота в настройках к2 не задаётся нигде. (я всё обшарил, ничего не нашёл, если не прав, ткните носом)
я вижу решение какое, чтобы когда я ввожу ширину 600 он и высоту делал 600.

т.е. вписывал изображение пропорционально уменьшая по высоте или ширине (смотря какая из них больше), в квадрат 600 на 600.

тогда изображения будут в итоге
600х60 и 60х600.
вот и всё.

*

jurassik

  • Давно я тут
  • 692
  • 52 / 1
тогда изображения будут в итоге
600х60 и 60х600.
тогда к2 не обязательно хакать.
все генерируемые изображения 600 в ширину
в CSS для изображений прописать max-height:600px;width:auto
сам шучу - сам смеюсь
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
тогда к2 не обязательно хакать.
все генерируемые изображения 600 в ширину
в CSS для изображений прописать max-height:600px;width:auto
Про это свойство я знаю. я прикрутил плагин slimbox на увеличенное изображение. И там высота рассчитывается относительно фактической высоты изображения. Да, есть другой вариант, лезть в slimbox но я думаю там высота не в одном месте прописана, в отличие от к2. к2 один раз создал фотку и всё. а slimbox вычисляет размеры, потом рисует анимацию, потом рисует элементы вокруг. так что это сложнее.
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
Переписал функцию вот так
Код
$a = $this->image_dst_x;
if ($x>$y) {
$x2=$a;
$y2=($y/$x)*$a;
} else {
$y2=$a;
$x2=($x/$y)*$a;
}


//


                        if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        }

В итоге по ширине нормально изменяет. а по высоте получается белая область :(
смотрите скрин во вложении
« Последнее редактирование: 06.05.2013, 13:56:16 от CanVas »
*

CanVas

  • Захожу иногда
  • 92
  • 0 / 0
  • Freedom
Всё получилось.
Решение: в файле /administrator/components/com_k2/lib/cluss.upload.php

Ищем по слову "imagecopyresampled"
И находим вот такой кусок кода:
Код
$tmp = $this->imagecreatenew($this->image_dst_x, $this->image_dst_y);

                        if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $this->image_dst_x, $this->image_dst_y, $this->image_src_x, $this->image_src_y);
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $this->image_dst_x, $this->image_dst_y, $this->image_src_x, $this->image_src_y);
                        }
Меняем его на такой вот код:
Код
$a = $this->image_dst_x;
$x = imagesx($image_src);
$y = imagesy($image_src);

if ($x>$y) {
$x2=$a;
$y2=($y/$x)*$a;
} else {
$y2=$a;
$x2=($x/$y)*$a;
}

                        $tmp = $this->imagecreatenew($x2, $y2);

                        if ($gd_version >= 2) {
                            $res = imagecopyresampled($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        } else {
                            $res = imagecopyresized($tmp, $image_src, 0, 0, 0, 0, $x2, $y2, imagesx($image_src), imagesy($image_src) );
                        }

После чего пытаемся перезалить фото заново.
Итог: Размер изображения вычисляется не только по ширине (width) но и по высоте. т.е. высота делается равной ширине, и изображение вписывается в этот квадрат.

Важно! При обновлении k2 эта библиотека может обновиться и все ваши изменения слетят.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться