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

stepan39

  • Захожу иногда
  • 499
  • 28 / 0
Добрый день!

Полигон для примера..

Сайт для тестов. В условном задании спрашиваем у пользователя какой он фрукт видит на картинке. Даем варианты ответа.

Даже если юзер в глаза не видел яблок, то подведя курсор к картинке он увидит в нижней части броузера images/sampledata/fruitshop/apple.jpg, что "какбынамекает".

Простейший путь избавиться от таких подсказок - давать случайные имена файлам картинок. Проблема, что картинок таких очень много, применяются они в разных местах сайта и название файла - единственный способ идентификации, что на этой картинки изображено. Вот, к примеру - понадобиться тебе вставить фото пражского крысарика и  будешь из сотни файлов "собачьего" каталога выбирать он - не он....

В общем, имена менять - не айс.

Пробуем найти решение, чтобы скрыть ссылку. Вот, к примеру.

Как то кажется слишком сложно.

Отсюда и вопросы:
1. Существует ли плагин, который по атрибуту ссылки будет запрещать ее отображение?
2. Возможна ли реализация такого плага, в случае его отсутствия?
3. Есть ли смысл в этих извращениях?

Спасибо!
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
здра.
ну сразу напрашивается вариант убрать ссылку с картинки вообще.
но это не решает проблему просмотра пути к картинке для чуть более продвинутых юзверей, которые откроют консоль или скрипты отключат на странице :D.

кардинальное решение - использовать Lightbox, который ресайзит и большую картинку и кладет её в папку кэша, снабжая закодированным названием.
sigplus вроде такое умеет.
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не будь паразитом, сделай что-нибудь самостоятельно!
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
здра.
ну сразу напрашивается вариант убрать ссылку с картинки вообще.
но это не решает проблему просмотра пути к картинке для чуть более продвинутых юзверей, которые откроют консоль или скрипты отключат на странице :D.

кардинальное решение - использовать Lightbox, который ресайзит и большую картинку и кладет её в папку кэша, снабжая закодированным названием.
sigplus вроде такое умеет.


Все проще, если использовать pointer-events: none то ссылка при наведении уже не отображается. Но тут есть и минус, элемент становится не кликабельным. Клик теперь надо делать посредством javascript:
Код
<script>
document.querySelectorAll('a.superbox.thumbnail.zoomin').forEach(function(ell) {
ell.style.pointerEvents = 'none';
ell.outerHTML = '<div onclick="this.firstElementChild.dispatchEvent(new Event(\'click\'));" style="display: inline-block;">'+ell.outerHTML+'</div>'
});
</script>
Попробовал обернуть ссылку в div, но к сожалению при этом слетает обработчик от Lightbox. Может что посоветуйте?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну так это не решение. и Lightbox сломал и имя картинки осталось доступно  ;D
проще было вообще не использовать Lightbox тогда уж.
все же вариант с ресайзом оригинала пока единственный решающий проблему.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
ну так это не решение. и Lightbox сломал и имя картинки осталось доступно  ;D
проще было вообще не использовать Lightbox тогда уж.
все же вариант с ресайзом оригинала пока единственный решающий проблему.


Ну так и нет задачи полностью зашифровать пути, нужно просто скрыть ссылку при наведении. Если кто-нибудь подскажет, как обернуть элемент без потери обработчики, будет рабочее решение. В крайнем случае, можно заново назначить обработчики, но это надо ковырять код Lightbox модуля, что геморойно.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Добрый день!

Полигон для примера..

Сайт для тестов. В условном задании спрашиваем у пользователя какой он фрукт видит на картинке. Даем варианты ответа.

Даже если юзер в глаза не видел яблок, то подведя курсор к картинке он увидит в нижней части броузера images/sampledata/fruitshop/apple.jpg, что "какбынамекает".

Простейший путь избавиться от таких подсказок - давать случайные имена файлам картинок. Проблема, что картинок таких очень много, применяются они в разных местах сайта и название файла - единственный способ идентификации, что на этой картинки изображено. Вот, к примеру - понадобиться тебе вставить фото пражского крысарика и  будешь из сотни файлов "собачьего" каталога выбирать он - не он....

В общем, имена менять - не айс.

Пробуем найти решение, чтобы скрыть ссылку. Вот, к примеру.

Как то кажется слишком сложно.

Отсюда и вопросы:
1. Существует ли плагин, который по атрибуту ссылки будет запрещать ее отображение?
2. Возможна ли реализация такого плага, в случае его отсутствия?
3. Есть ли смысл в этих извращениях?

Спасибо!

Нашел рабочий вариант. Можно вот таким макаром замаскировать ссылки:
Код
<script type="text/javascript">

document.querySelectorAll('a.superbox.thumbnail.zoomin').forEach(function(ell) {
ell.setAttribute('style', 'position: relative; display: inline-block;');
ell.insertAdjacentHTML('afterbegin', '<a style="position: absolute; display: block; top: 0; left: 0; right: 0; bottom: 0; z-index: 99999;" href="#neizvestno"></a>');
});

</script>

Разместите этот код на странице. К слову, могу вам для прикола скрипт сделать, который не просто скроет название, а будет вводит заблуждение, подставляя неправильное название при наведении - для тех, кто считает себя самым умным)
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Не будь паразитом, сделай что-нибудь самостоятельно!
*

stepan39

  • Захожу иногда
  • 499
  • 28 / 0
Разместите этот код на странице.
Не завелся... В коде страницы строки 49-54

могу вам для прикола скрипт сделать, который не просто скроет название, а будет вводит заблуждение
Спасибо огромное, но не нужно. Будете смеяться, но в саппорт будут писать - типа вот, в коде у вас ошибка  ;D
*

stepan39

  • Захожу иногда
  • 499
  • 28 / 0
Столько откликов, спасибо большое!
Насколько я понял - готового ничего нет, все варианты подразумевают дополнительный java-скрипт, который будет грузиться на всех страницах?

Тут принципиально, я об этом в шапке не сказал, ссылка на картинку возникает только при использовании popup (лайтбокс и пр.). Я много всего перепробовал и в итоге юзаю mavik Thumbnails. Запускается он (указал в настройках) только по классу superbox.

Таким образом на этот класс и надо ориентироваться.
« Последнее редактирование: 18.08.2019, 15:53:59 от stepan39 »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
<script type="text/javascript">

document.querySelectorAll('a.superbox.thumbnail.zoomin').forEach(function(ell) {
ell.setAttribute('style', 'position: relative; display: inline-block;');
ell.insertAdjacentHTML('afterbegin', '<a style="position: absolute; display: block; top: 0; left: 0; right: 0; bottom: 0; z-index: 99999;" href="#neizvestno"></a>');
});

</script>

Должен завестись, у меня все работает. Давайте я распишу поэтапно.

1. Зайдите в админ панели в общие настройки и отключите временно редактор TinyMCE, установив без редактора.
2. Перейдите в модули и создайте html-модуль со следующим текстом:
Код
<script type="text/javascript">

window.onload = function() {

document.querySelectorAll('a.superbox.thumbnail.zoomin').forEach(function(ell) {
ell.setAttribute('style', 'position: relative; display: inline-block;');
ell.insertAdjacentHTML('afterbegin', '<a style="position: absolute; display: block; top: 0; left: 0; right: 0; bottom: 0; z-index: 99999;" href="#neizvestno"></a>');
});

}

</script>
3. Опубликуйте модуль на нужной странице в позиции debug.

P. S. Если вдруг по прежнему не заведится, дайте мне ссылку на страницу, чтобы я мог посмотреть.
*

stepan39

  • Захожу иногда
  • 499
  • 28 / 0
Должен завестись
Спасибо огромное, все работает! Помогло перемещение скрипта в подвал.
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Спасибо огромное, все работает! Помогло перемещение скрипта в подвал.

Рад) Только момент один я не учел, надо чтобы ложная ссылка внутри перекрывала в том числе и бордюры, поэтому измените внутри скрипта кусочек с отступами на:
Код
top: -2px; left: -2px; right: -2px; bottom: -2px;
Потому что сейчас, если навести мышку на самый крайний-краешек картинки, то название все же отображается.
*

dmitry_stas

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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
а еще этот скрипт не сработает в IE. ну и window.onload = function тоже не очень правильно делать

А как правильно, чтобы только после полной прогрузки элементов? Для IE, можно использовать for. Вот,  кросcбраузерно:
Код
<script type="text/javascript">

window.addEventListener('DOMContentLoaded', function() {

ell = document.querySelectorAll('a.superbox.thumbnail.zoomin');

for(var i = 0; i < ell.length; i++) {
ell[i].setAttribute('style', 'position: relative; display: inline-block;');
ell[i].insertAdjacentHTML('afterbegin', '<a style="position: absolute; display: block; top: -2px; left: -2px; right: -2px; bottom: -2px; z-index: 99999;" href="#neizvestno"></a>');
}

});

</script>
« Последнее редактирование: 18.08.2019, 18:04:46 от dm-krv »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
А как правильно, чтобы только после полной прогрузки элементов?
https://javascript.ru/forum/misc/61134-window-onload-ili-window-addeventlistener.html
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
https://javascript.ru/forum/misc/61134-window-onload-ili-window-addeventlistener.html

Не знал, спасибо за инфу) Я пару раз замечал, что window.onload  у меня почему-то не работает при повторном вызове, но особо не придавал значения и юзал jQuery, а оказывается его можно только один раз использовать, иначе перезапишется.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а ежели в сторону плагина думать и по красоте, то вот такое можно учудить:
1) делаем системный плагин, который хэширует имена файлов из определенной категории/или с определенным классом и заменяет ссылку на
/get_pic.php?pic=43sdf466
2)в файле get_pic.php делаем обратное декодирование имени файла и отдаем его
Код
header('Content-type: image/jpg');
echo file_get_contents($url_to_img);
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Там на этом сайте ява-скриптов столько, что лишний чреват жопушкой :)
Самый оптимальный это хеширование имени файла, но при этом оставляя нормальную ссылку на каталог ну или подменяя.
Т.е. плагин берет ссылку /images/stories/bulki/baton.jpg и преобразует в /hashing/sad54fa68ewf6asfasd5f45saf
В /hashing/ лежит пхп-файл и htaccess , который делает редирект, ну а пхп-файл делает обратное преобразование из sad54fa68ewf6asfasd5f45saf в /images/stories/bulki/baton.jpg
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
2 минуты гуглинга
Код
// A few settings
$img_file = 'raju.jpg';

// Read image path, convert to base64 encoding
$imgData = base64_encode(file_get_contents($img_file));

// Format the image SRC:  data:{mime};base64,{data};
$src = 'data: '.mime_content_type($img_file).';base64,'.$imgData;

// Echo out a sample image
echo '<img src="'.$src.'">';
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Ыыыыыы...
Такое годится только для небольших картинок! Иначе страница будет весить тучу мегов.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Такое годится только для небольших картинок! Иначе страница будет весить тучу мегов.
Ну большая картинка даже просто ставленная в src ссылок тоже весит не мало.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
*

Фей

  • Давно я тут
  • 743
  • 86 / 3
  • Истина в вине!
Ну большая картинка даже просто ставленная в src ссылок тоже весит не мало.
Нууу... я думаю мысль дельная есть. Там же через AJAX генерится страница, поэтому пофиг как картинки отдавать.
*

Septdir

  • Живу я здесь
  • 3370
  • 168 / 4
Нууу... я думаю мысль дельная есть. Там же через AJAX генерится страница, поэтому пофиг как картинки отдавать.
Ну тогда. да. проше имя менять.

Или еще проще, сохранять имя файла как рандом и просто отдельный файлик имя-файла => значение
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
CodersRank | Контакты | Мой GitHub | Workshop
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не могу разобраться как в админке заставить работать свой плагин

Автор kkmspb

Ответов: 3
Просмотров: 1717
Последний ответ 02.09.2024, 11:35:25
от kkmspb
Не работает плагин на хостинге

Автор a7951396

Ответов: 3
Просмотров: 2430
Последний ответ 29.11.2023, 17:56:49
от a7951396
Плагин joomirseopagination доработка

Автор Stasweb

Ответов: 15
Просмотров: 3111
Последний ответ 16.03.2023, 15:00:33
от Stasweb
Как создать графическую ссылку на часть картинки на сайте?

Автор chen

Ответов: 8
Просмотров: 1484
Последний ответ 25.02.2022, 20:35:16
от xpank
DJ-Classifieds - компонент доска объявлений. Как скрыть системные сообщения

Автор user2008june

Ответов: 2
Просмотров: 992
Последний ответ 03.02.2022, 08:53:49
от user2008june