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

beliyadm

  • Moderator
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Возникла необходимость, сделал, не грех и задокументировать.
Суть - при создании категории в всех трех каталогах для изображений (мини, средние и полные эскизы) создается подкаталог с именем - идентификатором ID категории, дальше все картинки при загрузке попадают в него. Удобно для хранения и ориентации при больших объемах галерей.
 
Создание подкаталога при создании категории и загрузка изображения именно в него
в admin.datsogallery.php в функции function saveCatg:
строку
global $database, $my;
заменяем на
global $database, $my, $mosConfig_absolute_path;
перед mosRedirect добавляем:
require_once ($mosConfig_absolute_path . '/administrator/components/com_datsogallery/config.datsogallery.php');
mkdir($mosConfig_absolute_path.'/'.$ad_pathoriginals.'/'.$row->cid, 0755);
mkdir($mosConfig_absolute_path.'/'.$ad_pathimages.'/'.$row->cid, 0755);
mkdir($mosConfig_absolute_path.'/'.$ad_paththumbs.'/'.$row->cid, 0755);


после в этом же файлес начале uploadhandler для каждой строки copy (и для dgImageCreate) добавляем перед именами файлов новый кусок пути
в результате должны быть такие вот пути:
/$catid/$org_screenshot_name вместо просто /$org_screenshot_name
Предупреждение - это относится к режиму одиночной загрузки, для batch режимов добавите по аналогии

Удаление изображения
admin.datsogallery.php, функция function removePicture
в ней в запрос добавляем выборку категории
$database->setQuery("select id, imgfilename, imgthumbname, imgoriginalname, catid from #__datsogallery where id = $cid[$i]");
После
$row = $rows[0];
добавляем         
$catid = $row->catid;
дальше в функцию удаления картинки добавляем нашу переменную с категорией, должно получится так:
if(removeFile($row->imgfilename, $mosConfig_absolute_path . $ad_pathimages, $catid)) {
	
	
	
	
	
if(
removeFile($row->imgthumbname, $mosConfig_absolute_path . $ad_paththumbs, $catid)) {
	
	
	
	
	
	
if(!
removeFile($row->imgoriginalname, $mosConfig_absolute_path . $ad_pathoriginals, $catid)) {

В файле images.datsogallery.php находим внизу функцию function removeFile и заменяем на наш код:
function removeFile($srcFilename, $srcFilePath, $catid) {
	
$removeFilename = $srcFilePath . '/' . $catid . '/' . $srcFilename;
	
if(
unlink($removeFilename)) {
	
	
return 
true;
	
} else {
	
	
return 
false;
	
}
}


Отображение картинок в админке
Файл admin.datsogallery.html.php
находим (примерно 80-90 строки)
$info = getimagesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->imgoriginalname");
$size = filesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->imgoriginalname");

и заменяем на
$info = getimagesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->catid/$row->imgoriginalname");
$size = filesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->catid/$row->imgoriginalname");

Еще дальше находим (строка примерно 320)
$info = getimagesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->imgoriginalname");
$size = filesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->imgoriginalname");

И меняем на
$info = getimagesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->catid/$row->imgoriginalname");
$size = filesize($mosConfig_absolute_path . $ad_pathoriginals . "/$row->catid/$row->imgoriginalname");

      
чуть ниже
<img src="<?php echo "$ad_paththumbs/$row->imgthumbname"; ?>" style="<?php echo $ad_imgstyle; ?>" title="<?php echo _DG_THUMB_PIC_PREVIEW; ?>" /><br /><br /><?php echo $orginfo; ?>
заменяем на
<img src="<?php echo "$ad_paththumbs/$row->catid/$row->imgthumbname"; ?>" style="<?php echo $ad_imgstyle; ?>" title="<?php echo _DG_THUMB_PIC_PREVIEW; ?>" /><br /><br /><?php echo $orginfo; ?>

Фронтенд
файл datsogallery.php
В начале файла

$originalpath 
= $mosConfig_live_site . $ad_pathoriginals . "/";
$picturepath = $mosConfig_live_site . $ad_pathimages . "/";
$originaldir = $mosConfig_absolute_path . $ad_pathoriginals . "/";
$picturedir = $mosConfig_absolute_path . $ad_pathimages . "/" . $catid ."/";
$thumbnailpath = $mosConfig_live_site . $ad_paththumbs . "/";

меняем на
$originalpath = $mosConfig_live_site . $ad_pathoriginals . "/" . $catid ."/";
$picturepath = $mosConfig_live_site . $ad_pathimages . "/" . $catid ."/";
$originaldir = $mosConfig_absolute_path . $ad_pathoriginals . "/" . $catid ."/";
$picturedir = $mosConfig_absolute_path . $ad_pathimages . "/" . $catid ."/";
$thumbnailpath = $mosConfig_live_site . $ad_paththumbs . "/";
$thumbnailpath2 = $mosConfig_live_site . $ad_paththumbs . "/" . $catid ."/";


Строку
echo "onmouseout=\"return nd();\"\n><img src='$thumbnailpath$row1->imgthumbname' id=\"dt2\" alt=\"" . $tle . "\" /></a></div>\n";
на
echo "onmouseout=\"return nd();\"\n><img src='$thumbnailpath2$row1->imgthumbname' id=\"dt2\" alt=\"" . $tle . "\" /></a></div>\n";
строку
echo "<div align=\"center\"><a href=\n" . sefRelToAbs("$dgurl&func=detail&catid=$catid&id=$row1->id") . "\">\n<img src='$thumbnailpath$row1->imgthumbname' id=\"dt2\" alt=\"" . $tle . "\" /><div>$tle</div></a></div>";
на
echo "<div align=\"center\"><a href=\n" . sefRelToAbs("$dgurl&func=detail&catid=$catid&id=$row1->id") . "\">\n<img src='$thumbnailpath2$row1->imgthumbname' id=\"dt2\" alt=\"" . $tle . "\" /><div>$tle</div></a></div>";

находим
$query = "select *, c.access from #__datsogallery as p  left join #__datsogallery_catg as c on c.cid=p.catid  where " . ($catid ? " ( p.catid in (" . $catid . ") )" : '') . " and p.published = '1' and p.approved='1' and c.access<='" . $my->gid . "' || " . ($catid ? " ( c.parent in (" . $catid . ") )" : '') . " and p.published = '1' and p.approved='1' and c.access<='" . $my->gid . "'  order by rand() limit 1";
и заменяем на
$query = "select *, c.access, c.cid as cid from #__datsogallery as p  left join #__datsogallery_catg as c on c.cid=p.catid  where " . ($catid ? " ( p.catid in (" . $catid . ") )" : '') . " and p.published = '1' and p.approved='1' and c.access<='" . $my->gid . "' || " . ($catid ? " ( c.parent in (" . $catid . ") )" : '') . " and p.published = '1' and p.approved='1' and c.access<='" . $my->gid . "'  order by rand() limit 1";

Ниже идет вывод превьюшем
$output .= '<img src="' . $thumbnailpath . "/" . $row2->imgthumbname . '" style="' . $ad_imgstyle . '" title="' . _DG_OPEN_CAT . '" alt="" /></a></td>';
меняем на
$output .= '<img src="' . $thumbnailpath . $row2->cid . "/" . $row2->imgthumbname . '" style="' . $ad_imgstyle . '" title="' . _DG_OPEN_CAT . '" alt="" /></a></td>';

Файл sub_viewdetails.php
находим строки
$imgsize = filesize("$mosConfig_absolute_path$ad_pathoriginals/$imgoriginalname");
...
$size_pic = @getimagesize("$mosConfig_absolute_path$ad_pathoriginals/$imgoriginalname");

и меняем на
$imgsize = filesize("$mosConfig_absolute_path$ad_pathoriginals/$catid/$imgoriginalname");
....
$size_pic = @getimagesize("$mosConfig_absolute_path$ad_pathoriginals/$catid/$imgoriginalname");


Удачных экспериментов и не забываем про резервные копии файлов
« Последнее редактирование: 11.08.2008, 21:48:03 от beliyadm »
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

PaLyCH

  • Давно я тут
  • 958
  • 146 / 19
  • Менеджер проектов
Петя,не закончил. Забыл про sub_viewspecial.php
*

beliyadm

  • Moderator
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Петя,не закончил. Забыл про sub_viewspecial.php
кому нужно будет - найдут сами, не найдут - тогда уже пусть спрашивают :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

friend111

  • Захожу иногда
  • 63
  • 5 / 0
beliyadm полезное дополнение вы сделали для галереи, удобно будет искать нужные фото да и порядок наведется. Не могли бы вы здесь выложить исправленные файлы для 1.6, а то я пробовал что то не получилось, :dry: как говорится пока не специалист еще.
*

PaLyCH

  • Давно я тут
  • 958
  • 146 / 19
  • Менеджер проектов
Рекомендую True Gallery, в ней уже реализовано разделение по папкам
*

friend111

  • Захожу иногда
  • 63
  • 5 / 0
Просто Датсо  уже стоит, а True Gallery еще только на выходе. В дальнейшем обратим на нее внимание конечно, тем более совместный труд форумчан и будет нужна поддержка отечественному производителю. ::)
*

beliyadm

  • Moderator
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Не могли бы вы здесь выложить исправленные файлы для 1.6
приношу свои извинения, но готовый файлов для 1.6 у меня нет, ибо данный хак писался в предверии выхода TrueGallery и на нем стоит много других хаков (не все рабочие), писать сейчас заново для 1.6 к сожалению не смогу.
Просто Датсо  уже стоит, а True Gallery еще только на выходе.
тогда рекомендую дождаться стабильной версии True Gallery, бо до неё осталось совсем немного
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Raz0r

  • Захожу иногда
  • 260
  • 6 / 6
читал что уйдет времени не менее 3-х недель, когда можно приблизительно ждать релиза? Понятное дело что НЕ МЕНЕЕ означает, но хотелось бы потестить уже, судя по описанию - вещь стоящая
*

scaners

  • Захожу иногда
  • 131
  • 15 / 0
А те фотографии, которые уже есть, можно как то раскидать по папкам для категорий? Может есть какой запрос? А то в галерее уже больше 33000 изображений и работать с ними становится все труднее.
*

PaLyCH

  • Давно я тут
  • 958
  • 146 / 19
  • Менеджер проектов
Будет мигратор, который сам все перетащит по нужным папкам.
*

scaners

  • Захожу иногда
  • 131
  • 15 / 0
Будет мигратор, который сам все перетащит по нужным папкам.
Я так понимаю, вы подразумевали True Gallery?
*

PaLyCH

  • Давно я тут
  • 958
  • 146 / 19
  • Менеджер проектов
*

beliyadm

  • Moderator
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А те фотографии, которые уже есть, можно как то раскидать по папкам для категорий? Может есть какой запрос? А то в галерее уже больше 33000 изображений и работать с ними становится все труднее.
можно, пример запроса можешь взять из конвертера - http://joomlaforum.ru/index.php/topic,43225.0.html
Но - 33000 изображений скрипт у тебя в данный момент физически не обработает.
Потому все что могу порекомендовать - подождать следующей версии конвертера, где этот момент будет учтен и по аналогии переписать для datso
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

scaners

  • Захожу иногда
  • 131
  • 15 / 0
Проблема только в том, что у меня в материалах идет привязка изображений к боту Датсо. А материалов более 14000. Если я мигрирую в True, то что делать с данным траблом? Перебивать все ручками ох как не хочется!
*

PaLyCH

  • Давно я тут
  • 958
  • 146 / 19
  • Менеджер проектов
Ну тогда оставвайся как есть. В твоем случае решения нет
*

beliyadm

  • Moderator
  • 9758
  • 1665 / 66
  • Севастополь, Россия
опять же решение есть - написать SQL запрос c функцией REPLACE, зацепив при этом еще и таблицу галереи и заменить пути в таблице #__content - если картинки вставлены напрямую ссылками.
В случае с ботом проще - поправить сам мамбот, пример аналогичного для TG будет
Но - эксперименты проводить только на локальном хосте, знания SQL и БД вообще обязательны, ибо объем большой, задача не такая уж простая.
Теоретически - все возможно сделать, но потребует некоторых трудозатрат, потому изначально задумался бы - смогу ли и нужно ли мне это :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Полное изображение из категории с JS эффектом (1.8.1)

Автор beliyadm

Ответов: 20
Просмотров: 15656
Последний ответ 25.06.2015, 14:22:52
от beliyadm
категории - эффект аккордеон

Автор kira

Ответов: 2
Просмотров: 5821
Последний ответ 29.05.2012, 18:34:27
от act1ve
Описание категории при просмотре мини эскизов для 1.8.4

Автор Webprohozhiy

Ответов: 1
Просмотров: 5258
Последний ответ 01.10.2011, 20:27:58
от hlopusha16
Как присвоить категории индивидуальную, а не генерированную, картинку в DatsoGallery 1.6.2.

Автор pclux

Ответов: 1
Просмотров: 5701
Последний ответ 24.02.2011, 23:04:01
от Animatik
От мини-эскизов сразу в лайтбокс. Как сделать? DatsoPic

Автор kans

Ответов: 15
Просмотров: 27665
Последний ответ 27.02.2010, 22:19:48
от Peroon