Новости Joomla

Вышли релизы безопасности Joomla 6.1.4 и Joomla 5.4.9

Релиз безопасности Joomla 6.1.4 и Joomla 5.4.9

Проект Joomla! рад сообщить о выходе Joomla 6.1.4 и Joomla 5.4.9. Это релизы безопасности и исправления ошибок для серий 5.x и 6.x.

JoomShift - компонент переноса контента между Joomla сайтами.

‍ JoomShift - компонент переноса контента между Joomla сайтами.

JoomShift - компонент переноса контента между Joomla сайтами.Он позволяет экспортировать модули, меню, материалы, категории, пользовательские поля и пользователей в виде переносимых JSON/ZIP-файлов, а затем импортировать их в любую другую установку Joomla.

Возможности компонента:- Модули — полная настройка, назначение пунктов меню, позиционирование и содержимое SP Page Builder.
-Меню — иерархия родительских/дочерних элементов, типы элементов, ссылки, уровни доступа и параметры. Отсутствующие типы меню создаются автоматически, а элементы, указывающие на неустановленные компоненты, пропускаются с предупреждением.
-Статьи и категории — контент, метаданные, изображения и иерархия категорий.
-Пользовательские поля — группы полей, определения, ограничения по категориям и значения (включая поля с несколькими значениями) — экспортируются и автоматически создаются заново на целевом сайте.
-Пользователи — данные профиля, назначения групп и хэши паролей, чтобы учетные записи работали сразу после импорта.
-Кросс-версииJoomla - компонент адаптируется к различиям в схеме базы данных между версиями Joomla.
-Создан для крупных сайтов — постраничные списки (20/50/100/250строк) и автоматический пакетный экспорт для сайтов с более чем 500 элементами, поэтому он продолжает работать на обычном хостинге.
-Опция перезаписи — обновляет совпадающие элементы при повторном импорте вместо создания дубликатов.
-Drag-n-drop импорт с подробным отчетом о том, что было импортировано, обновлено или пропущено, и почему.

На момент написания заметки для скачивания необходима регистрация/логин на сайте разработчика.

-Joomla Extensions Directory-Страница расширения#joomla#расширения

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Модуль joomLab JS Ajax Cart позволит организовать в Вашем интернет-магазине на компоненте JoomShopping удобную AJAX корзину с возможностью добавлять товары и изменять их количество без перезагрузки страницы.

Кроме этого, в состав пакета установки входит плагин, который позволяет выводить атрибуты товара в список всех товаров, менять эти атрибуты и добавлять товар в корзину из списка товаров. Если атрибутов много, то их можно выводить в всплывающем (модальном окне).

В модуле предусмотрено 2 макета дизайна для Bootstrap и UIkit и максимальная кастомизация для переопределения макетов в шаблон.Демо расширенияСтраница расширения

Видео в Telegram

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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Пытаюсь при помощи js вытащить список городов с авито (он там наиболее полный). Накидал небольшой скрипт, который должен кликами перебрать все области и считать города внутри. Однако, сразу после первого клика возникает ошибка в консоли браузера:

Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на https://sntr.avito.ru/api/... (Причина: отсутствует заголовок CORS «Access-Control-Allow-Origin»).

Города успешно погружаются, но скрипт не может считать данные с AJAX блоков. Можно ли каким-нибудь образом все же проигнорировать CORS и считать интересующие меня блоки? Может существует специальный браузер для таких целей или плагин?

Что странно, когда я считываю города напрямую все норм, а если в цикле, то CORS режет всю малину. Как быть?
« Последнее редактирование: 11.01.2019, 22:27:54 от dm-krv »
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
не проверял, но такое вот есть
Код
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dmitry_stas

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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
не проверял, но такое вот есть
Код
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security

Увы, пишет, что этот флаг более не поддерживается. Корс по прежнему вылезает.


а вот для ФФ https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

Сейчас проверим...
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
dmitry_stas

Кажись работает) Предупреждений о CORS теперь нет, правда там ошибки у меня в скрипте, но это я поправлю, главное, что парсится без проблем.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
На JS вроде бы кроссбраузерные запросы напрочь запрещены браузерами (если только два домена не договорятся между собой), очень странно как это у вас на JS получился парсер, покажите код если не секрет (если в JS запускается php cURL там или что - тогда не надо, это неспортивно :))
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
На JS вроде бы кроссбраузерные запросы напрочь запрещены браузерами (если только два домена не договорятся между собой), очень странно как это у вас на JS получился парсер, покажите код если не секрет (если в JS запускается php cURL там или что - тогда не надо, это неспортивно :))

Блин( Вот сейчас проверяю и перепроверяю, но правы вы - не работает. Просто перестали предупреждения CORS выводится, а блоки загруженые в аяксе скрипт просто не видит, словно их нет. Код, пожалуйста:
Код
var goroda = '';

setTimeout('document.querySelectorAll("._1ttXp._91ScY")[0].click()', 3000);

setTimeout('document.querySelectorAll("._2icBu._3OKc6")[0].click()', 3000);

function sbor() {

setTimeout(function () {

var oblasti = document.querySelectorAll("._2wkKl");

for(var i = 1; i < oblasti.length; i++) {

oblasti[i].click();

var idname = oblasti[i].innerText;

var id = i;

setTimeout(function(){ parser(idname, id); }, 5000);


}

}, 5000);

}

function parser(oblast, nomer) {



var gorod = document.querySelectorAll("._2wkKl");

for(var i = 1; i < gorod.length; i++) {

goroda = goroda+gorod[i].innerText+'→'+nomer+'←'+oblast+'↑';

}

document.querySelectorAll('.tWeHs')[0].click();

}

Рассчитано на работу на m.avito.ru - пытаюсь собрать в переменную города с авито в нужном мне формате.

Может все же есть какие-то способы считать аяксные блоки? Не может такого быть, чтобы защиту на стороне браузера нельзя было отключить.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Не может такого быть, чтобы защиту на стороне браузера нельзя было отключить
Может, кроссдомейные JS запросы на уровне браузера невозможны в целях безопасности.
Читать тут

парсить на основе JS не получится от слова никак

Только если два домена знают друг друга и договорятся
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Может все же есть какие-то способы считать аяксные блоки? Не может такого быть, чтобы защиту на стороне браузера нельзя было отключить.
Можно, гуглите в сторону cURL или библиотеки типа simple_html_dom.php, там можно что-то выцепить, но на чистом JS это невозможно
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Можно, гуглите в сторону cURL или библиотеки типа simple_html_dom.php, там можно что-то выцепить, но на чистом JS это невозможно

Там слишком сложный для меня скрипт будет, если на php пытаться выцепить, с куками, сессиям, усер-агентами.

По правде говоря, проблема ведь в чем - когда вручную забиваю в консоль document.querySelectorAll() все прекрасно парсится, но если считывающая функция применяется скриптом, то уже не работает. Не может ли js сам себя перезабить в веб-консоль как-нибудь? Я бы тогда как-нибудь раздели скрипт на мелкие части и это решило бы проблему.
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
можно с другой стороны подойти - поставить что то типа https://chrome.google.com/webstore/detail/custom-javascript-for-web/poakhlngfciodnhlhhgnaaelnpjljija и запускать js уже на том сайте, который парсить. а данные считываемые отправлять себе уже в php скрипт на своем сервере
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
можно с другой стороны подойти - поставить что то типа https://chrome.google.com/webstore/detail/custom-javascript-for-web/poakhlngfciodnhlhhgnaaelnpjljija и запускать js уже на том сайте, который парсить. а данные считываемые отправлять себе уже в php скрипт на своем сервере

Неа, ни черта не работает. Например, если попытаться кликнуть что-то внутри блока аякс:
Код
Uncaught TypeError: Cannot read property 'click' of undefined at <anonymous>
Как я понимаю, клик не может быть произведен по анонимному элементу. Радует, что хоть сам элемент ищется, но этого недостаточно.
*

dmitry_stas

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

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
все работает, скрипт неправильный

Да, я уже понял) Я дурак пытался стартовать скрипт из консоли, а надо было команду запуска там же внутри плагина писать. В общем, все работает) Осталось только скрипт отладить, он у меня действительно косячный, но это уже просто дело времени. Главное, что решение найдено и данные теперь действительно можно особо не напрягаясь спарсить и вывести.
Огромное спасибо  ^-^

« Последнее редактирование: 11.01.2019, 22:26:54 от dm-krv »
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
Допилил парсер и таки вытянул города с авито) Вышел список аж из 3647 позиций, что довольно много. Прикрепляю файл, вдруг кому пригодится. Лично сам собираюсь использовать список этот у себя на сайте, для того, что бы дать посетителю возможность точно выбрать свой город.

Код парсера ниже, использовать надо в Chrome, с плагином (спасибо dmitry_stas за наводку) и исключительно на мобильной версии сайта m.avito.ru
Код
var goroda = ''; // создаем переменную для записи городов и областей

setTimeout('document.querySelectorAll("._1ttXp._91ScY")[0].click()', 4000); // открываем настройки

setTimeout('document.querySelectorAll("._2icBu._3OKc6")[0].click()', 7000); // открываем выбор города

function* sbor() {

var oblastii = document.querySelectorAll("._2wkKl"); // парсим количество областей

for(var i = 1; i < oblastii.length; ++i) { // запускаем цикл равный кол-ву областей

var oblasti = document.querySelectorAll("._2wkKl"); // парсим области

var idname = oblasti[i].innerText; // записываем название области

var id = i; // записываем номер области

oblasti[i].click();  // кликаем области по очереди в цикле

setTimeout(function(){ parser(idname, id); }, 2000);  // запускаем функцию для парсинга городов внутри нажатой области

yield;  // ставим цикл на задержку

}

}

var iterator = sbor();  // генератор

setTimeout(function(){ iterator.next(); }, 10000);  // запускаем генератор

function parser(oblast, nomer) {


var gorod = document.querySelectorAll("._2wkKl"); // Парсим города

for(var grd = 1; grd < gorod.length; ++grd) {

goroda = goroda+gorod[grd].innerText+' | '+nomer+'. '+oblast+'\r\n'; // Пишем результаты в переменную

}

setTimeout('document.querySelectorAll(".tWeHs")[0].click();', 1000); // Возвращаемся к списку областей

setTimeout(function(){ iterator.next(); }, 2000); // Возозобновляем работу парсера областей после задержки

}

После завершения работы результаты можно сохранить выполнив в консоли:
Код
var textToSave = goroda;

var hiddenElement = document.createElement('a');

hiddenElement.href = 'data:attachment/text,' + encodeURI(textToSave);
hiddenElement.target = '_blank';
hiddenElement.download = 'goroda.txt';
hiddenElement.click();
« Последнее редактирование: 17.01.2019, 16:03:05 от dm-krv »
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Пытаюсь при помощи js вытащить список городов с авито (он там наиболее полный).

dm-krv - я вот только сейчас допер вашу изначальную задачу - вам нужна база городов, так не проще использовать готовые базы по типу ОКАТО?

Есть же готовые базы в разных форматах на все города РФ с указанием родителей, уровня вложенности и тд
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
dm-krv - я вот только сейчас допер вашу изначальную задачу - вам нужна база городов, так не проще использовать готовые базы по типу ОКАТО?

Есть же готовые базы в разных форматах на все города РФ с указанием родителей, уровня вложенности и тд

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

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
https://classifikators.ru/okato вот вторая ссылка в Google 27 тыщ записей
Давно не интересовался, но помню что находил базу в 30 с лишним килозаписей с четкой градацией наследования от родителей и полными кодами окато

Еще смотреть тут http://www.gks.ru/opendata/dataset/7708234640-okato, лень качать, но там раньше была подробная структура и актуальная
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

dm-krv

  • Завсегдатай
  • 1028
  • 28 / 0
https://classifikators.ru/okato вот вторая ссылка в Google 27 тыщ записей
Давно не интересовался, но помню что находил базу в 30 с лишним килозаписей с четкой градацией наследования от родителей и полными кодами окато

Еще смотреть тут http://www.gks.ru/opendata/dataset/7708234640-okato, лень качать, но там раньше была подробная структура и актуальная

Мда. Похоже я изобретатель велосипедов) В любом случае, потраченого времени не желаю. Один черт, в этих ОКАТО я ни в зуб ногой, запутанно все, а на авито все четко поделено по областям.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Один черт, в этих ОКАТО я ни в зуб ногой, запутанно все
Там все четко, код региона, под подгериона (области), код города деревни, все это перевязано в цифрах, ничего сложного, вот в вики все есть ОКАТО

А потраченное время - оно всегда полезно, даже если велосипед.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

fsv

  • Живу я здесь
  • 2796
  • 414 / 2
дать посетителю возможность точно выбрать свой город.
подсказки dadata

действительно, сказали бы сразу, что надо...
Веб-разработка: заказ. Только новая разработка.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

[РЕШЕНО] Добавить класс при условии JS?

Автор warlocksp

Ответов: 21
Просмотров: 3446
Последний ответ 26.02.2020, 11:07:53
от robert
Программное создание материалов в Joomla 3.8+ [ РЕШЕНО ]

Автор dm-krv

Ответов: 36
Просмотров: 17216
Последний ответ 12.12.2019, 21:06:08
от MDenis
[РЕШЕНО] Защита сайтов друг от друга при помощи open_basedir

Автор dm-krv

Ответов: 14
Просмотров: 6924
Последний ответ 22.04.2019, 17:46:48
от dm-krv
Бесплатный звонок с сайта, через интернет [РЕШЕНО]

Автор dm-krv

Ответов: 8
Просмотров: 1230
Последний ответ 03.04.2019, 09:43:32
от dm-krv
360 Zoomer - jQuery вращалка с возможностью увеличения изображения

Автор effrit

Ответов: 2
Просмотров: 903
Последний ответ 01.04.2019, 22:21:22
от effrit