Новости Joomla

SW JProjects v.2.6.1 - компонент каталога расширений для веб-приложений

👩‍💻 SW JProjects v.2.6.1 - компонент каталога расширений для веб-приложений.

Компонент позволяет сделать свой мини-Joomla Extensions Directory - каталог расширений для CMS (не только для Joomla) или файлов. Есть возможность скачивания по лицензионным ключам создания кастомных схем данных для сервера обновлений.

v.2.6.1. Что нового?

  • Правки наследования схем серверов обновлений. Улучшена логика наследования схем серверов обновлений для проектов компонент - категория - проект.
  • Не стабильные релизы в сервере обновлений. Теперь в данные сервера обновлений попадают все версии (alpha, beta и т.д.), а не только stable.
  • Косметические изменения. В шаблоне по умолчанию сделаны замены некоторых CSS-классов, уточнено присвоение атрибутов loading=lazy и fetchpriority.
  • Рефакторинг и правки кода. Текущее обновление кодовой базы.
  • Исправление ошибок.

Больше спасибо за помощь в тестировании участникам нашего сообщества Александру Новикову (@pro_portal) и Александру Судьбинову (@alexrevo).

Событие Pizza, Bugs & Fun - 29-30 января 2026 года.

Событие Pizza, Bugs & Fun  - 29-30  января 2026 года.

Уже несколько лет в мире Joomla проводятся мероприятия "Pizza, Bugs & Fun" (#PBF), где каждый может посвятить несколько часов своего мозгового времени тому, чтобы наша любимая CMS стала ближе к идеалу.

Ссылки на видео и статьи из этого поста рассказывает об организационных вопросах, которые пригодятся для участия в PBF, а так же что и как делать.

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

Каждый помогает тем, что он умеет:

  • кто-то пишет недостающую документацию,
  • кто-то пишет код,
  • кто-то тестирует как исправлены ошибки или сделан новый функционал.

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

https://www.youtube.com/watch?v=a-FuVKXg_Uw 

На момент написания данного поста в репозитории Joomla 810 открытых Issue (как правило это баги) и 236 Pull request (PR, исправление багов и новый функционал). Все PR обязательно тестируются минимум двумя участниками сообщества, дабы в конечный код движка не проскочила ошибка.

Если каждый из участников только нашего сообщества сделает даже одно тестирование, то, боюсь, PR и Issue на всех не хватит 😀 И ничего не останется нашим коллегам из международных Joomla-чатов.

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

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
Просмотров: 557
Последний ответ 14.04.2021, 00:59:44
от semen1707
Модель для представления, которое показывает списки данных разных типов

Автор borro

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

Автор platonische

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

Автор golinejj

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

Автор NetFix

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