Новости Joomla

Вышли релизы Joomla 6.1 и Joomla 5.4.5: новые возможности и стабильность

Релиз Joomla 6.1.0

Проект Joomla! объявил о доступности Joomla 6.1 [Nyota] — новой минорной версии шестой серии, а также о выпуске релиза исправлений ошибок Joomla 5.4.5. Релиз 6.1 приносит ряд долгожданных функций, повышающих удобство управления контентом и защиту от спама.

👩‍💻 Компонент "CS Афиши" для Joomla.

👩‍💻 Компонент "CS Афиши" для Joomla.

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

В состав пакета расширений входят:
- Компонент "CS Афиши"
- Модуль "Календарь событий"
- Модуль "Предстоящие события"
- Библиотека "ImgResize"

Расширение "CS Афиши" позволяет выводить список мероприятий, фильтровать их по датам, поиск по заголовкам и описанию.

Модуль "Календарь событий" отображает предстоящие и прошедшие мероприятие на календаре, с отображением мероприятий на конкретную дату во всплывающем окне.

Модуль "Предстоящие события" показывает список предстоящий событий по порядку их наступления.

P.S. Расширение платное, но плата символическая, чисто для отработки приема платежей. Ключи без ограничения по времени, купившие сейчас - смогут обновляться без ограничений.

Разработчик - участник нашего сообщества Дмитрий Денисов (@codersite).

Страница расширения
Демо

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

Яндекс выпустил инструмент Видимость сайта в Алисе AI.

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

Долгое время у всех был немой вопрос: "Как же теперь оценивать эффективность сайта?". Теперь этот на этот вопрос отчасти отвечает новый инструмент аналитики.
Процитируем справку Яндекса по инструменту:
На запросы пользователей в Поиске может отвечать Алиса AI. Ответы появляются в поисковой выдаче, в объектных ответах и на отдельной вкладке Поиска. В них чаще всего упоминаются страницы сайтов, на которые Алиса AI опиралась при подготовке ответа.

С помощью инструмента Видимость сайта в Алисе AI в Яндекс Вебмастере вы можете:
- узнать долю упоминаний сайта среди источников в ответах Алисы AI в Поиске и отследить динамику изменений;
- посмотреть примеры запросов, по которым страницы сайта показываются в ответах Алисы AI;
- посмотреть примеры сайтов той же тематики, которые часто упоминаются в генеративной выдаче.
Данные отображаются за последние 3 месяца и обновляются каждую неделю.

Статистика собирается только по тем запросам, по которым ваш сайт уже находится достаточно высоко в поисковой выдаче. Это позволяет анализировать видимость именно в той нише, где вы заинтересованы в продвижении, и избегать «размытия» по малозначимым для вас запросам.

Кроме того, такой подход обусловлен работой Алисы AI: она строит ответ с опорой на самые релевантные, информативные и качественные страницы, которые обычно занимают высокие позиции в Поиске.

Чтобы увидеть статистику вашего сайта в меню Яндекс.Вебмастера перейдите в раздел "Эффективность" и далее в "Показы сайта в Алисе AI".

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

Показы сайта в Алисе AI в вашем Яндекс,Вебмастере.

@joomlafeed

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

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Посоветуйте где можно почитать/подсмотреть как вытянуть из таблицы сессий хранящиеся данные по user agent'ам.
Че-то не выходит...  :(
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SmokerMan

  • Гуру
  • 5290
  • 720 / 26
что есть такое User Agent?
Код
<?php die($_SERVER['HTTP_USER_AGENT']); ?>
не?)
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
что есть такое User Agent?
Код
<?php die($_SERVER['HTTP_USER_AGENT']); ?>
не?)
Да, мне нужен $_SERVER['HTTP_USER_AGENT'].
Но задача в том, чтобы достать его из базы данных, где он хранится в поле data таблицы #__session
« Последнее редактирование: 27.06.2013, 21:43:02 от alex_a_k »
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

likrion

  • Давно я тут
  • 750
  • 129 / 2
Код
$session =& JFactory::getSession();
$browser = $session->get('session.client.browser');
echo $browser;
R331474010295
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Код: php
$userid = 480;

$query='select s.userid, s.data from #__session as s where s.userid='.$userid;

$db = JFactory::getDBO();
$db->setQuery($query);

$session = $db->loadObjectList()[0]->data;

var_dump ($session);

Только таблица session же обнуляется периодически.
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Код
$session =& JFactory::getSession();
$browser = $session->get('session.client.browser');
echo $browser;
Причем здесь текущая сессия?
Речь идет о базе данных!
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Код: php
$userid = 480;
$query='select s.userid, s.data from #__session as s where s.userid='.$userid;
$db = JFactory::getDBO();
$db->setQuery($query);
$session = $db->loadObjectList()[0]->data;
var_dump ($session);
Спасибо, попробую.

Только таблица session же обнуляется периодически.
Я в курсе.
Мне нужно разделить мух от котлет (текущих юзеров, гостей и ботов) в пределах последних сессий.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Код: php
$session = $db->loadObjectList()[0]->data;
var_dump ($session);
Я не совсем точно поставил вопрос...
Здесь вытягивается ВСЁ поле data, а мне нужно ИЗ НЕГО вытянуть session.client.browser.

P.S. В loadObjectList() с '[О]' выдает ошибку...
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Код: php-brief
//guest = true значит гость
$guest = JFactory::getUser()->guest;
Вы читать умеете?
При чем здесь текущий гость к юзерагенту, хранящемуся в базе данных в таблице sessions в поле data  из которого нужно вытянуть session.client.browser!
Бля, выбешивает! Ж:-E
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
P.S. В loadObjectList() с '[О]' выдает ошибку...

Вы массив сначала получите, а потом уже его мучайте.
Зачем индекс массива к функции цеплять, тем более что она может и null вернуть если таблица пустая.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Цитировать
Вы читать умеете?
Конечно умеем. Зачем спрашивается лезть в сессию? Велосипед свой делаем?
вам ответил SmokerMan как это делать или используйте JBrowser, JWebClient
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Конечно умеем. Зачем спрашивается лезть в сессию? Велосипед свой делаем?
вам ответил SmokerMan как это делать или используйте JBrowser, JWebClient

Да не нужен мне текущий юзер, нужны именно данные из сессий в базе!
Зачем мне это нужно - дело десятое...
Просто дайте КОНКРЕТНЫЙ ответ на КОНКРЕТНЫЙ вопрос!
КАК ДОСТАТЬ session.client.browser В ТАБЛИЦЕ sessions ИЗ ПОЛЕ data?
Кто-нибудь может ответить на вопрос который задали, а не развивать дискуссии на вольную тему?

P.S. Ну или узнать сам принцип, механизм, как извлекать данные ИЗ ПОЛЕЙ ПОДОБНОГО ТИПА.
Там ведь хранится не просто текст...
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
http://php.net/manual/en/function.unserialize.php
Спасибо за подсказку, но что-то не выходит "каменный цветок"...

Пишу:
Код: php
$db = JFactory::getDBO();
$query='select * from #__session';
$db->setQuery($query);
$sessions = (array) $db->loadObjectList();
foreach($sessions as $session) {
$data = unserialize($session->data);
var_dump($data);
}

Получаю:
Цитировать
bool(false) bool(false) bool(false) bool(false) bool(false)

Что я делаю не так, ткните носом (не силен в PHP)?
« Последнее редактирование: 27.06.2013, 15:01:23 от alex_a_k »
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Да, там намного всё интереснее.

Как-то так

Код: php
                $db = JFactory::getDBO();
                $query='select * from #__session';
                $db->setQuery($query);
                $sessions = (array) $db->loadObjectList();

                foreach($sessions as $session) {
                    $data = (string) $session->data;
                    $old = $_SESSION;
                    session_decode($data);
                    $new = $_SESSION;
                    $_SESSION = $old;

                    echo $new['__default']['session.client.browser'];
                    echo '<br />';
                }

Получили:



Почему - читаем здесь

http://www.php.net/manual/ru/function.session-decode.php

И особенно вот этот момент

Цитировать
...and populates the $_SESSION superglobal with the result

Поэтому делать лучше локально.

А я всю думал - что за беда у меня в таблице с ромбиками вместо символов - а это из-за session.serialize_handler'a
« Последнее редактирование: 27.06.2013, 16:05:47 от SDKiller »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Еще вариант регуляркой строку разобрать
Код: php
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('data')->from('#__session');
$db->setQuery($query);
$datas = $db->loadResultArray();
if (count($datas)) {
foreach ($datas as $data) {
if ($data){
$data = preg_replace('/^.+session\.client\.browser\".+?[^"]\"(.+?[^"])".+$/', '$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query->select('data')->from('#__session');
$db->setQuery($query);
$datas = $db->loadResultArray();
if (count($datas)) {
foreach ($datas as $data) {
if ($data){
$data = preg_replace('/^.+session\.client\.browser\".+?[^"]\"(.+?[^"])".+$/', '$1', $data);
echo $data;
}

}
}', $data);
echo $data;
}

}
}
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Вариант )

Только в зависимости от session.serialize_handler может быть ведь и так

Код
rSwjYWtlgeOZdumc_Q5XtsKp9nGevC3yqN9rH8TSx48D8NQk7CwXQDuK8CAQHFI7Te1aRr5yVCJHP_XeFoEU...

Я ещё голову ломал, что за чудеса у меня на хетцнере
« Последнее редактирование: 27.06.2013, 22:35:39 от SDKiller »
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Да, там намного всё интереснее.
Как-то так
...
Получили:
...
Почему - читаем здесь
http://www.php.net/manual/ru/function.session-decode.php
Попробовал - получилось, огромное спасибо.

Еще вариант регуляркой строку разобрать
...
И за это решение конечно тоже.

Но судя по...
И особенно вот этот момент
Цитировать
...and populates the $_SESSION superglobal with the result
Это не самый лучший вариант.
Если я правильно понял перезапись (даже временная) в $_SESSION чужих данных для удобства их разбора - совсем "не камильфо".
Я верно понял?

Поэтому делать лучше локально.
Не совсем понял что имеется в виду...

Как по вашему, лучше использовать вариант с разборкой строки регуляркой?

Только в зависимости от session.serialize_handler может быть ведь и так
...
Я ещё голову ломал, что за чудеса у меня на хетцнере
Я не настолько глубоко знаком с такими тонкостями.
Если вам не сложно, объясните пожалуйста кратко, в двух словах особенности и подводные камни.

А то все получилось, но я в растерянности - каким же путем идти.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Если работает вариант с регуляркой используйте его. Он быстрее и не ресурсоемкий. Нет лишних движений и преобразований, значит должен работать быстрее и меньше кушать памяти.
SDKiller а если не __default?
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Если работает вариант с регуляркой используйте его. Он быстрее и не ресурсоемкий. Нет лишних движений и преобразований, значит должен работать быстрее и меньше кушать памяти.
Спасибо за информацию, попробую.
Но мне бы еще хотелось услышать мнения и ответы уважаемых гуру на кучу вопросов из предыдущего поста.
Это не просто праздное любопытство, по этому обидно спрашивать в пустоту...

SDKiller а если не __default?
А такое может быть?
В каком случае происходит?
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
SDKiller а если не __default?

Стандартные вещи, в частности сессию, Joomla пишет в пространство имён default

Вообще я мало встречал расширений, которые бы писали свои данные в свой namespace
JCE например пишет.

А вы обычно когда сохраняете в сессию или получаете из неё значения указываете namespace? Вряд ли.

А значит

« Последнее редактирование: 27.06.2013, 22:18:33 от SDKiller »
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Я не спорю но это маленький ответ на session.serialize_handler. Кто же знал, что и у вас конфигурация не стандарт.  *DRINK*
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Если я правильно понял перезапись (даже временная) в $_SESSION чужих данных для удобства их разбора - совсем "не камильфо".
Я верно понял?

Верно.
Я для скорости воткнул код в одном из шаблонов админки, меня на первой итерации выкинуло. Поэтому пришлось сохранять предыдущее значение, потом возвращать на место.

К сожалению  session_decode принудительно пишет сразу в $_SESSION

Там же на php.net в комментариях приводятся несколько вариантов разбора сессии, но у меня вот например unserialize ошибку даёт потому что какие-то служебные символы в БД попадают и видны там ромбиками.

Цитировать
Цитата: SDKiller от Сегодня в 14:55:17
Поэтому делать лучше локально.

Не совсем понял что имеется в виду...

Я не знаю, что именно вы хотите реализовать.
Если отслеживание в оперативном режиме - то надо тогда использовать другие методы.
Лучше напрямую получать $_SERVER['HTTP_USER_AGENT']

Если в исторических целях - выгружаете таблицу с хостинга, делаете на денвере/wamp'е/openserver'е - что у вас там стоит.
Только убедитесь что у конфигурации php более-менее совпадают.

Цитировать
Я не настолько глубоко знаком с такими тонкостями.

Сам в шоке ;)
Зато вот выяснил для себя вопрос, который меня последние пару месяцев озадачивал - почему на одном из хостингов у меня не то что я привык видеть в #__session
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Верно.
Я для скорости воткнул код в одном из шаблонов админки, меня на первой итерации выкинуло. Поэтому пришлось сохранять предыдущее значение, потом возвращать на место.
К сожалению  session_decode принудительно пишет сразу в $_SESSION
Но как по вашему, вариант сохранение текущей $_SESSION -> перезапись данными из бд -> восстановление сохраненной имеет право на спокойную жизнь?
Здесь не будет граблей и подводных камней?

Я не знаю, что именно вы хотите реализовать.
Если отслеживание в оперативном режиме - то надо тогда использовать другие методы.
Лучше напрямую получать $_SERVER['HTTP_USER_AGENT']
Если в исторических целях - выгружаете таблицу с хостинга, делаете на денвере/wamp'е/openserver'е - что у вас там стоит.
Только убедитесь что у конфигурации php более-менее совпадают.
Суть задачи стоит в следующем...
Это модуль аналогичный штатному джумловскому "Кто в онлайне".
Только он выводит не только гостей и зарегеных юзеров, но и количество ботов (определяются по useragent), посетивших сайт за последние 10 минут.
Тонкость в том, что не хочется заводить отдельную таблицу и тупо писать в нее всех посетивших сайт и потом устраивать над ней разбор полетов.
Считаю это не рациональным, таблица будет слишком быстро разрастаться и много других моментов вытекающих из этого метода.
По этому и было принято решение использовать джумловскую таблицу сессий, в которой все вышеозначенные моменты уже решены.
Но я не думал, что достать необходимую инфу из поля data будет не так просто...
Может есть другой вариант?

Там же на php.net в комментариях приводятся несколько вариантов разбора сессии, но у меня вот например unserialize ошибку даёт потому что какие-то служебные символы в БД попадают и видны там ромбиками.
По вашему какой из вариантов в тамошних комметах подойдет под мои цели больше всего?

Сам в шоке ;)
Зато вот выяснил для себя вопрос, который меня последние пару месяцев озадачивал - почему на одном из хостингов у меня не то что я привык видеть в #__session
Хм...
Будем знать.
Век живи - век учись! ;)
« Последнее редактирование: 28.06.2013, 07:59:31 от alex_a_k »
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Пока остановился на варианте уважаемого Fedor Vlasenko, поскольку:

1. Вариант рабочий.
2. Быстрый и экономичный.
3. Без лишних заморочек с перезаписью сесии и т.д.
4. Это позволяет session.serialize_handler. )))

Но вопросы из предыдущего поста остаются открытыми.
Мне интересно узнать ваше мнение.
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Я бы всё же системным плагином писал агента текущего пользователя в отдельную табличку (соответственно выставив ему после этого в текущей сессии флаг, что "его посчитали", чтобы не дублировать записи).

С точки зрения производительности - думаю всё же вытаскивать уже готовый user agent из этой таблицы быстрее чем вытаскивать данные из таблицы сессий и разбирать их регулярками.
Что касается очистки таблицы - это не так сложно в реализации.
*

alex_a_k

  • Захожу иногда
  • 381
  • 21 / 0
Спасибо за совет, подумаю...
Не жмитесь на "+" в репу!
А так же на мелкий donate. ))
*

SDKiller

  • Живу я здесь
  • 2705
  • 329 / 5
  • ...ergo sum
Даже в целях вашего модуля можно бы было при записи в эту табличку сразу анализировать агент и писать ещё в одно поле типа tinyint уже признак (например 1-юзер, 2 - бот) - тогда при выводе модуля ещё быстрее получится.
Ведь пишется один посетитель один раз, а модуль выводиться будет каждый раз при просмотре страницы.
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
В данном случае я бы посоветовал посмотреть на уже готовые решения. Вот по статистике у меня на одном сайте исправно крутится уже 4 года joomlastats. Не использую внешние скрипты статистики для небольших сайтов  - оптимальное решение, но их скриптов статистики очень много.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывод таблицы, деление на страницы

Автор March Cat

Ответов: 6
Просмотров: 1443
Последний ответ 09.01.2019, 18:49:15
от dmitry_stas
checkbox придать вид таблицы в файле XML

Автор xenos

Ответов: 5
Просмотров: 1807
Последний ответ 17.07.2017, 16:16:11
от vipiusss
SobiPro и SP-GeoMap поле

Автор dimat84

Ответов: 2
Просмотров: 2128
Последний ответ 02.08.2014, 11:36:22
от dimat84
Поле вывода календаря как d-m-Y. XML элемент календарь

Автор oppo

Ответов: 0
Просмотров: 1659
Последний ответ 19.07.2014, 15:43:47
от oppo
Про дополнительное поле регистрации Joomla 2.5

Автор NlCK

Ответов: 15
Просмотров: 3097
Последний ответ 04.06.2014, 09:32:34
от robert