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

Outpost

  • Новичок
  • 6
  • 0 / 0
Доброго времени суток. Вот столкнулся с проблемой при создании компонента...

Имеется несколько одинаковых таблиц с данными с одинаковой структурой, кол-во и название таблиц неизвестно и может изменяться.
Указывается в конфиге компонента. Например через пробел.

Так же есть одна таблица с названием для данных. Она постоянна и название не меняется.

Ну и требуется вывести данные из всех этих таблиц при этом взяв названия из другой. Например сначало выводятся данные из таблицы1, следом таблица2 и т.д.

Структура у таблиц имеет вид:
   таблица с данными:
   id item(предмет) player(имя пользователя) amount(количество)
   таблица с названиями:
   id item(предмет) name(название предмета)

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


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


Код
$user = & JFactory::getUser()->username;
$table_items  = JComponentHelper::getParams('my_component')->get('tb_items'); //$table_items получается "название_таблицы1 название_таблицы2 название_таблицы3 название_таблицы_и_тд"
$list_table = explode(" ", $table_items); //разбиваем список таблиц на отдельные части
$size = count($list_table);  // подсчитываем кол-во таблиц




$db = JFactory::getDbo();
$query = $db->getQuery(true) ;
$query
->select(array('a.*', 'b.name', 'b.item'))
->from($db->quoteName("items1", "a")) // items1 - одна из таблиц с данными
->join('INNER', $db->quoteName("item_names", "b"). ' ON (' . $db->quoteName('a.item'). ' = ' . $db->quoteName('b.item'). ')') // подбираем название из таблицы с названиями
->where($db->quoteName('a.player'). " LIKE '$user'"); //фильтруем по имени пользователя
return $query;



p.s. надеюсь разделом не ошибся
« Последнее редактирование: 11.02.2019, 12:13:34 от Outpost »
*

Outpost

  • Новичок
  • 6
  • 0 / 0
Пытался вывести цикл. Но в таком варианте показывает только из последней таблицы.Так подозреваю что $query учитывает только последний запрос, если же поместить return $query; внутрь цикла то тогда выполняется только для первой таблицы, а остальные видимо вообще теряются.
Код
for($i = 0, $size = count($list_table); $i < $size; ++$i) {
    $table_all= $list_table[$i];
    echo $table_all;

    $query = $db->getQuery(true) ;
    $query
        ->select(array('a.*', 'b.name', 'b.item'))
        ->from($db->quoteName("$table_all", "a"))
        ->join('INNER', $db->quoteName("$shop", "b"). ' ON (' . $db->quoteName('a.item'). ' = ' . $db->quoteName('b.item'). ')')
        ->where($db->quoteName('a.player'). " LIKE '$user'");
    $db->setQuery($query);   
}
« Последнее редактирование: 11.02.2019, 12:14:07 от Outpost »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Если структура таблиц одинакова, то можно использовать UNION. Кстати, инкремент у вас префиксный, пропускаете первый элемент. Раз взялись за компонент, то неплохо бы изучать принципы работы системы.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

Outpost

  • Новичок
  • 6
  • 0 / 0
Если структура таблиц одинакова, то можно использовать UNION. Кстати, инкремент у вас префиксный, пропускаете первый элемент. Раз взялись за компонент, то неплохо бы изучать принципы работы системы.
Спасибо  ^-^  :D . Получилось вывести все таблицы. Не совсем еще правда понимаю. $query->union без основного запроса не будет работать? сам по себе. у меня пока получилась такая штука. и если удаляю основной запрос, то ничего не работает.
но если оставляю основной запрос, то тогда дублируются данные из какой-то одной таблицы)
ничего лучше не придумал как оставить основной запрос к пустой таблице, чтобы убрать дубль  ;D
и смущает getQuery для каждого из запросов. если его удалить то тоже не работает. это я где-то не прав, или так и должно быть?
Код
foreach($list_table as $i => $row):
if ($row) {
$query_all[$i] = $db->getQuery(true) ;
$query_all[$i]
->select(array('a.*', 'b.name', 'b.item'))
->from($db->quoteName("$row", "a"))
->join('INNER', $db->quoteName("item_names", "b"). ' ON (' . $db->quoteName('a.item'). ' = ' . $db->quoteName('b.item'). ')')
->where($db->quoteName('a.player'). " LIKE '$user'");
}
endforeach;

$query = $db->getQuery(true) ;
$query
->select(array('a.*', 'b.name', 'b.item'))
->from($db->quoteName("empty_table", "a"))
->join('INNER', $db->quoteName("item_names", "b"). ' ON (' . $db->quoteName('a.item'). ' = ' . $db->quoteName('b.item'). ')')
->where($db->quoteName('a.player'). " LIKE '$user'");

$query->unionAll($query_all);

$db->setQuery($query);
« Последнее редактирование: 11.02.2019, 12:34:32 от Outpost »
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Без основного запроса - никак. Только, кажется, вы сделали лишний запрос. И UNION ALL выдает дубликаты.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

robert

  • Живу я здесь
  • 4974
  • 457 / 20
Можно попробовать что-то подобное
Код
$query = $db->getQuery(true);

foreach ($list_table as $i => $row)
{
$statement =
'SELECT a.*, b.name, b.item ' .
'FROM ' . $db->quoteName($row). ' AS a ' .
'INNER JOIN ' . $db->quoteName('item_names'). ' AS b ' .
' ON (' . $db->quoteName('a.item'). ' = ' . $db->quoteName('b.item'). ')';

if ($i == 0)
{
$query->setQuery($statement);
}
else
{
$query->unionAll($statement);
}
}

$db->setQuery($query);
Только набросал, не тестировал.
Не будь паразитом, сделай что-нибудь самостоятельно!
*

passer

  • Завсегдатай
  • 1013
  • 75 / 3
Понял так, что для каждой записи в "таблица с названием для данных" создается "таблица с данными"
Если правильно, то много таблиц с данными не нужно, одна таблица и связь один ко многим.
Много таблиц с одинаковой структурой, всегда подозрительно, что неправильно спроектирована БД. Отсюда и все ваши затруднения.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Прописать условие для сохранения данных в БД

Автор semen1707

Ответов: 0
Просмотров: 740
Последний ответ 14.04.2021, 00:59:44
от semen1707
Модель для представления, которое показывает списки данных разных типов

Автор borro

Ответов: 27
Просмотров: 1788
Последний ответ 06.05.2020, 11:57:12
от Septdir
Не занимать место под пустой вывод модуля

Автор platonische

Ответов: 11
Просмотров: 1362
Последний ответ 28.04.2020, 07:53:11
от sivers
Связать две таблицы с БД для дальнейшего вывода данных с них

Автор golinejj

Ответов: 16
Просмотров: 1669
Последний ответ 06.02.2020, 15:40:58
от golinejj
Редактирование данных в связанных таблицах

Автор NetFix

Ответов: 1
Просмотров: 1001
Последний ответ 19.03.2019, 11:07:10
от platonische