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

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Задача: реализовать региональность материалов.
Предполагаемое решение:
Создаю кнопку, по нажатию на которую открывается модальное окно с выбором нужных регионов, после чего в текст вставляется {нейкий_идентефикатор}id_региона,id_региона,id_региона,id_региона,id_региона{нейкий_идентефикатор}
Действия далее. Плагин берет из кукисов id_региона и выводит нужные материалы.
Минусы: эм... быстродействие? даже не знаю какой минус данного решения. Затрудняет разработку модуля последних материалов региона.
Плюсы: не затрагивает com_content, можно спокойно обновляться.
Вопрос: насколько этот решение плохое либо хорошее? М.б. есть какие-нибудь мысли по реализации? М.б. есть в реализации какие-то стыковые моменты, с которыми придется столкнуться?

« Последнее редактирование: 29.11.2012, 11:21:30 от xchesh »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Минусов не вижу. Реализация с кукисами мне пока не совсем понятна, но это ладно. Я лучше Вам дам исходник кнопки ;)
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Минусов не вижу. Реализация с кукисами мне пока не совсем понятна, но это ладно. Я лучше Вам дам исходник кнопки ;)
Минусы минусы минусы...
Спасибо за исходник, как раз за 5 минут до сообщения, нашел его самостоятельно в Joomla :)

Так же взглянул на joomlagalery, они что-то наподобие реализовали. В итоге нужно: компонент, плагин добавления кнопки, плагин обработки контента.
Компонент у меня есть, осталось два плагина. Кнопку думаю по-быстрому наваяю. Но вот что-то обработка контента меня смущает. На какое событие вешать плагин? onContentPrepare? Допустим у меня есть тег в тексте {region}1,2,3,4,5{region} и значение региона у пользователя в кукисах(возьмем что он из 1-го региона). т.е. есть переменная $region-user = "1"; и $region-material="1,2,3,4,5"; А дальше я не знаю какая логика действий)))
Ладно, нужно изучить поподробнее плагины обработки контента.
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Ну событие зависит от того, чего Вы хотите достичь. Если перед показом обработать, то onContentPrepare или onContentBeforeDisplay, если после, то onContentAfterDisplay.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Ну событие зависит от того, чего Вы хотите достичь. Если перед показом обработать, то onContentPrepare или onContentBeforeDisplay, если после, то onContentAfterDisplay.
Я хочу показывать либо не показывать материал на странице. Если параметр $region-user  есть в {region}1,2,3,4,5{region}, то показывать материал, если нету, то не показывать. Это наверное onContentBeforeDisplay? да?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Мне кажется, что тут лучше использовать onContentPrepare. Вот где вызываются эти события.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Мне кажется, что тут лучше использовать onContentPrepare. Вот где вызываются эти события.
Ага, согласен, лучше onContentPrepare использовать, т.к. это первое событие.
У меня задумка такая: общая страница коротких новостей с js фильтром по регионам. насколько это правильно и реализуемо - хз. Попробую сначала написать эти два плагина.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Мне кажется, что тут лучше использовать onContentPrepare. Вот где вызываются эти события.

Назрел ещё один вопрос. onContentPrepare это событие справедливо для всех видов вывода материалов? Для blog, article, arhive и т.п.?  В артикл, есть обработка события, но в остальных я вроде бы не нашел.
Я могу переопределить стандартную модель в com_content, например вида blog? Можно как-то расширить вид компонента(добавить свой, но с учетом обновлений, дабы не затирался, например как в шаблоне сайта добавляются шаблоны стандартных компонентов)?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
onContentPrepare - это только для материала. Все остальное - просто типы подачи списков материалов.

По поводу расширить - это уже сложнее. Вот тут интересный плагин, который переопределял прдеставление, модель и шаблон.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
onContentPrepare - это только для материала. Все остальное - просто типы подачи списков материалов.

По поводу расширить - это уже сложнее. Вот тут интересный плагин, который переопределял прдеставление, модель и шаблон.
Установлю плагин и оценю.
А вообще, стандартными методами никак?
Задача: есть плагин добавляющий в текст определенный тег с содержимым. Нужно вывести только те записи, в тексте которых содержится передаваемый в строке параметр. В модели я то знаю как это сделать, но как её расширить...
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Стандартными никак...
Что-то я не понимаю как с этим плагином работать и что он делает....

Кроме того, что выдает ошибку.

Подскажите, как бы Вы реализовали данную задачу?
« Последнее редактирование: 06.12.2012, 10:27:39 от xchesh »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Не знаю, как бы реализовал. Надо думать...

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

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
А что мешает вместо стандартного com_content использовать для вывода модуль?
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
А что мешает вместо стандартного com_content использовать для вывода модуль?
Модуль? Хм... думал над этим, а какой тип пункта меню присвоить для news?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Делаете блог категории, ставите нули в настройках макета блога и получите пустой вывод категории без материалов. Вместо этого выводите модуль, который привязан к этому пункту меню.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Делаете блог категории, ставите нули в настройках макета блога и получите пустой вывод категории без материалов. Вместо этого выводите модуль, который привязан к этому пункту меню.
Спасибо, это как вариант. Думаю что на нем остановлюсь, т.к. чего-то другого придумать не могу. Кстати, приведу код плагина кнопки.
Код
<?php
/**
 * @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license GNU General Public License version 2 or later; see LICENSE.txt
 */

// no direct access
defined('_JEXEC') or die;

/**
 * Editor Image buton
 *
 * @package Joomla.Plugin
 * @subpackage Editors-xtd.image
 * @since 1.5
 */
class plgButtonRegionbut extends JPlugin
{
/**
* Constructor
*
* @access      protected
* @param       object  $subject The object to observe
* @param       array   $config  An array that holds the plugin configuration
* @since       1.5
*/
public function __construct(& $subject, $config)
{
parent::__construct($subject, $config);
$this->loadLanguage();
}

/**
* Display the button
*
* @return array A two element array of (imageName, textToInsert)
*/
        public function onDisplay($name)
{
$app = JFactory::getApplication();//эти строки мне не понятны, зачем они вообще здесь нужны

$doc = JFactory::getDocument();//эти строки мне не понятны, зачем они вообще здесь нужны
$template = $app->getTemplate();//эти строки мне не понятны, зачем они вообще здесь нужны
// вызываем javascript, который возвращает контент
$link = 'index.php?option=com_region&amp;view=modal&amp;layout=modal&amp;tmpl=component&amp;e_name='.$name;

JHtml::_('behavior.modal');

$button = new JObject;
$button->set('modal', true);
$button->set('link', $link);
$button->set('text', JText::_('PLG_REGIONBUT_BUTTON_IMAGE'));
$button->set('name', 'pagebreak');
$button->set('options', "{handler: 'iframe', size: {x: 650, y: 400}}");

return $button;
}
}

XML файл
Код
<?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="editors-xtd">
<name>plg_editors-xtd_regionbut</name>
<author>xchesh</author>
<creationDate>Nov 2012</creationDate>
<copyright>Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<authorEmail>xchesh@mail.ru</authorEmail>
<authorUrl>www.xchesh.ru</authorUrl>
<version>2.5.1</version>
<description>PLG_REGIONBUT_DESCRIPTION</description>
<files>
<filename plugin="regionbut">regionbut.php</filename>
<filename>index.html</filename>
                <folder>language</folder>
        </files>
        <languages>
                <language tag="en-GB">language/en-GB/en-GB.plg_editors-xtd_regionbut.ini</language>
                <language tag="en-GB">language/en-GB/en-GB.plg_editors-xtd_regionbut.sys.ini</language>
                <language tag="ru-RU">language/ru-RU/ru-RU.plg_editors-xtd_regionbut.ini</language>
                <language tag="ru-RU">language/ru-RU/ru-RU.plg_editors-xtd_regionbut.sys.ini</language>
        </languages>
</extension>

Вид modal компонента com_region приводить не буду, только самую важную часть
view.html.php
Код
	function display($tpl = null) 
{
// Get data from the model
$items = $this->get('Items');
                $region = $this->get('ThisItem');
                if ($this->getLayout() == 'modal') {
// TODO: This is really dogy - should change this one day.
$eName = JRequest::getVar('e_name');
$eName = preg_replace( '#[^A-Z0-9\-\_\[\]]#i', '', $eName );
$this->assignRef('eName', $eName);
}
 
// Check for errors.
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Assign data to the view
$this->items = $items;
                $this->region = $region;
 
// Display the template
parent::display($tpl);
// Set the document
$this->setDocument();
                return;
}
tmpl/modal.php
Код
$this->eName;
$script  = 'function insertRegion() {'."\n\t";
// Get the pagebreak title
$script .= 'all = [];'."\n\t";
$script .= '$(".checkbox input").each(function(indx, element){'."\n\t\t";
$script .= 'if($(element).is(\':checked\')){'."\n\t\t";
$script .= 'all.push($(element).attr(\'value\'));'."\n\t\t";
// Get the pagebreak toc alias -- not inserting for now
// don't know which attribute to use...
$script .= '}});'."\n\t";
$script .= 'var tag = "{ohmygod}"+all+"{/ohmygod}";'."\n\t";
$script .= 'window.parent.jInsertEditorText(tag, \''.$this->eName.'\');'."\n\t";
$script .= 'window.parent.SqueezeBox.close();'."\n\t";
$script .= 'return false;'."\n";
$script .= '}'."\n";

JFactory::getDocument()->addScriptDeclaration($script);

Самое важное в создании такой кнопки, выбрать редактор и передать его в js. У меня именно с этим возникли вопросы.
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Цитировать
эти строки мне не понятны, зачем они вообще здесь нужны
Убрать :) Они точно там не нужны.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Делаете блог категории, ставите нули в настройках макета блога и получите пустой вывод категории без материалов. Вместо этого выводите модуль, который привязан к этому пункту меню.
Вот тут к Вам вопрос, отлично, модуль то я сделаю, а что с JPagination? Как прикрутить к своему модулю?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Хмм, в теории это возможно. Я на J1.5 такое пробовал провернуть.
Сейчас именно так я пробую провернуть на j2.5
JPagination сильно менялся при переходе с 1.5 на 2.5?
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Да вроде не очень сильно. Должно сработать.
попробую - отпишусь, мало ли)))
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Да вроде не очень сильно. Должно сработать.
Хм...
Код
Fatal error: Using $this when not in object context
Он точно работал под 1.5?
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Да, точно.
Я уже придумал другой способ :) Сейчас протестирую и отвечу.
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Смотрите. В файле mod_name_module.php добавляем:
Код
jimport('joomla.html.pagination');
$limitstart = JRequest::getVar('limitstart', 0, '', 'int');//параметр какая страница
$total = 200;//это общее кол-во записей, его можно получать динамически, просто я для тестирования ввел 200
$limit = 20;//количество записей на странице(по-другому сдвиг)
$pagination = new JPagination($total, $limitstart, $limit);//создаем новый объект пагинации
$news_array = mod_newsHelper::getList($limitstart,$limit);//вызываем наш метод getList из файла helper с двумя параметрами $limitstart и $total
Вот собственно теперь самое простое.
в helper.php немного изменяем getList вот на такой:
Код
function getList($limitstart,$total)
{
           //тут весь код получения из бд записей
            $db->setQuery($query,$limitstart,$total);//а вот и используем сдвиг и максимальное кол-во
            $array = $db->loadObjectList();//Loading results into an array
            return $array;
        }
Все работает на ура.

Не забываем в шаблоне добавить
Код
<?php echo $pagination->getListFooter(); ?>
« Последнее редактирование: 13.12.2012, 16:09:20 от xchesh »
*

xchesh

  • Захожу иногда
  • 277
  • 10 / 1
Кстати, в итоге модуль выводится не только на странице всех новостей, но и на странице конкретной новости. Как быть? Как убрать? Роутер для модуля писать?

P.S.: ещё совсем не веселая новость. Нужно писать роутер для модуля этого. Хотя если формировать вручную ссылку, то все норм, проблем не будет.(href="'/news/'.$item->id.'-'.$item->alials.'"')


P.S.: Ладно, работает пагинация, но не совсем как надо. Из 69 записей выводит 53, на второй странице 33, на третьей странице 13. Что-то не так сделал?)

P.S.S.: А не, все верно, просто вместо $total нужно передавать $limit.
« Последнее редактирование: 13.12.2012, 16:09:02 от xchesh »
*

b2z

  • Глобальный модератор
  • 7288
  • 778 / 0
  • Разраблю понемногу
Кстати, в итоге модуль выводится не только на странице всех новостей, но и на странице конкретной новости. Как быть? Как убрать? Роутер для модуля писать?
Зачем? Привяжите модуль к нужному пункту меню.

P.S.: ещё совсем не веселая новость. Нужно писать роутер для модуля этого. Хотя если формировать вручную ссылку, то все норм, проблем не будет.(href="'/news/'.$item->id.'-'.$item->alials.'"')
Да, про SEF я забыл. Не знаю, удастся ли Вам роутер для модуля сделать... Что-то не уверен.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не отображает link CSS style

Автор leo78

Ответов: 0
Просмотров: 1326
Последний ответ 15.07.2015, 16:37:06
от leo78
Вариант пагинатора

Автор AlekVolsk

Ответов: 5
Просмотров: 1444
Последний ответ 03.02.2015, 01:00:30
от ELLE
Странности при установке компонента

Автор Александр216

Ответов: 3
Просмотров: 1580
Последний ответ 16.07.2014, 12:38:39
от Aleks.Denezh
Странности в работе sql-запроса

Автор Александр216

Ответов: 7
Просмотров: 1844
Последний ответ 27.06.2014, 22:03:19
от Aleks.Denezh
Прошу помощи с RS monials

Автор Unloved

Ответов: 0
Просмотров: 1772
Последний ответ 06.06.2014, 04:12:25
от Unloved