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

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Подскажите новичку как это сделать...
$item->id - не помогает
$this->item->id - тоже не помогает....

Уже 3 дня бьюсь....
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
До сих пор незнаю....  :(
Гуру К2 подскажите пожалуйста....
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Контроллер большой, сформулируйте вопрос конкретнее.
И вообще за каким вы полезли в контроллер, что вас там не устраивает?
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Хочу прикрутить AUP к K2. В частности сделать так, чтобы при публикации статьи пользователю начислялось определенное количество баллов.
Нашел на форуме схему http://joomlaforum.ru/index.php/topic,121359.0.html
Согласно этой теме, а также руководству для разработчиков от AUP, необходимо вставить правило вслед за выполнением пользователем действия.

Выдержка из документации для разработчика AUP:
Спойлер
[свернуть]

Как я понял /com_k2/controllers/item.php  отвечает за работу со статьями, и в частности функция
Спойлер
[свернуть]
отвечает за публикацию статьи с фронта.
Вставляю после этой функции правило AUP:

$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'function_name', '', 'reference_key');
}

Вместо 'reference key' хочу использовать id статьи, чтобы баллы начислялись за публикацию каждой статьи только один раз.
И НЕ начислялись за редактирование.

Когда используется просто запись 'reference_key', происходит начисление баллов только за публикацию(сохранение) только одной статьи. За вторую и последующие статьи этого автора баллы уже не начисляются. В таблицу AUP записывается строка reference_key.

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

Вот  ^-^ задумка такая ^-^, только указанными в первом сообщении способами id статьи не определяется ((((. В таблицу AUP ничего не записывается ((( или записывается 0 (((

*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Если бы вы глянули в код контроллера повнимательнее, то сосредоточились бы всё же на модели item.

А в модели в функции save мы имеем событие плагина, и даже не одного

Код
		$dispatcher->trigger('onAfterK2Save', array(&$row, $isNew));
if(K2_JVERSION == '16') {
$dispatcher->trigger('onContentAfterSave', array(&$row, $isNew));
}
else {
$dispatcher->trigger('onAfterContentSave', array(&$row, $isNew));
}

Следовательно незачем делать хаки в контроллер или в модель.

В плагине id материала вы получите как $row->id
Признак $isNew поможет вам определить, происходит ли создание нового материала или редактирование существующего.
« Последнее редактирование: 04.07.2012, 19:13:42 от SDKiller »
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
SDKiller, я еще только начинающий... И разбираюсь и учусь  ^-^
Версия K2 v2.5.7

10 раз прочитал, пока не врубился (((

Можно немного подробнее? Ну, или попроще  ^-^ Для чайников, так сказать  ^-^
« Последнее редактирование: 04.07.2012, 19:52:18 от VIKING21 »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Создайте плагин - либо группы content либо группы k2 (если предполагается работать только с материалами К2 - лучше последний).

Примеры плагинов можете посмотреть в папке plugins

Вся ваша логика будет в соответствующей функции плагина:

для плагина группы k2 - onAfterK2Save(&$row, $isNew)

для плагина группы content - в зависимости от версии Joomla onContentAfterSave или onAfterContentSave

В функцию из модели передаются объект сохраняемого материала и признак $isNew
(это уже предусмотрено, так что ваша задача только - написать, установить и опубликовать плагин)

*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Спасибо :) Теперь понятнее... Сейчас попробую и отпишусь  ^-^
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Плагин первый раз писать буду, так что займет немного больше времени  ^-^

Насколько я понял, нужно чтобы в плагине была следующая функция? :

Код
function onAfterK2Save(&$row, $isNew) {
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', '$row->id');
}
}
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Да.
Можете добавить условие, если я правильно понял ваши потребности

Код
$app = JFactory::getApplication();
if ($app->isSite() && $isNew) {
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}

Но это в общем случае сработает корректно если функция newpoints объявлена как public static
Иначе может потребоваться создать экземляр класса и вызывать функцию так
Код
$helper = new AlphaUserPointsHelper();
$helper->newpoints( 'plgaup_takeoutpublicitem', '', $row->id);

Впрочем попробуйте сначала как написано в мануале.

p.s. Не надо брать в кавычки $row->id
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Вот я и написал свой первый плагин!  ^-^
Плагин состоит из 2 файлов: plugin.php и plugin.xml

Содержимое файла plugin.php

Код
<?php

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

/**
 * MY K2 Plugin.
 */

// Load the K2 Plugin API
JLoader::register('K2Plugin', JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2'.DS.'lib'.DS.'k2plugin.php');

// Initiate class to hold plugin events
class plgK2MY1 extends K2Plugin {

// Some params
var $pluginName = 'MY1';
var $pluginNameHumanReadable = 'MY1 K2 Plugin';

function plgK2Example( & $subject, $params) {
parent::__construct($subject, $params);
}

function onK2PrepareContent( &$item, &$params, $limitstart) {
$mainframe = &JFactory::getApplication();
//$item->text = 'It works! '.$item->text;
}

function onAfterK2Save(&$row, $isNew) {
$mainframe = &JFactory::getApplication();
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}
return true;
}


} // END CLASS


Сделал просто по примеру плагина k2 example.

Думаю несколько лишнего оставил...
По идее вот эти параметры я в функции не использую
Код
// Some params
var $pluginName = 'MY1';
var $pluginNameHumanReadable = 'MY1 K2 Plugin';

А также не понял для чего вот это:
Код
function onK2PrepareContent( &$item, &$params, $limitstart) {
$mainframe = &JFactory::getApplication();
//$item->text = 'It works! '.$item->text;
}


SDKiller огромное Вам спасибо!  *DRINK*
Плагин заработал, баллы начисляются только за создание новой статьи, а за редактирование не начисляются...
В таблицу AUP записывается ID статьи. И все это БЕЗ ХАКОВ!  :D
Осталось только привести плагин в правильный вид, убрав все лишнее  ^-^
« Последнее редактирование: 05.07.2012, 10:50:33 от VIKING21 »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Цитировать
А также не понял для чего вот это:
Код
function onK2PrepareContent( &$item, &$params, $limitstart) {

Это событие вызывается при подготовке контента к выводу на фронте.

P.S. Всё же посмотрите условие, которое я приводил выше.
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Цитировать
Сделал просто по примеру плагина k2 example.

Думаю несколько лишнего оставил...
По идее вот эти параметры я в функции не использую
Код
// Some params
var $pluginName = 'MY1';
var $pluginNameHumanReadable = 'MY1 K2 Plugin';

А также не понял для чего вот это:
Код
function onK2PrepareContent( &$item, &$params, $limitstart) {
$mainframe = &JFactory::getApplication();
//$item->text = 'It works! '.$item->text;
}


Видимо и правда это было лишним...
Удалил код из плагина, ничего не изменилось.
Теперь плагин выглядит так:
Код
<?php

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


// Load the K2 Plugin API
JLoader::register('K2Plugin', JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2'.DS.'lib'.DS.'k2plugin.php');

// Initiate class to hold plugin events
class plgK2MY2 extends K2Plugin {


function plgK2Example( & $subject, $params) {
parent::__construct($subject, $params);
}

function onAfterK2Save(&$row, $isNew) {
$mainframe = &JFactory::getApplication();
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}
return true;
}
}


Сейчас пробую условие...
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Правильно ли я понял, что вместо:

Код
function onAfterK2Save(&$row, $isNew) {
$mainframe = &JFactory::getApplication();
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}
return true;
}

Нужно сделать:

Код
	function onAfterK2Save(&$row, $isNew) {
$app = JFactory::getApplication();
                $api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ($app->isSite() && $isNew)
{
require_once ($api_AUP);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}
return true;
}

Если так, то в нижнем виде тоже все работает  ^-^
Только визуально во время работы разницы не видно...
А функционально в чем отличие понять не могу?

PS Еще момент, что баллы начисляются за сохранение статьи... А как можно сделать начисление за публикацию?
Т.е. чтобы при сохранении статьи без публикации баллы не начислялись. За публикацию статьи - начислялись только один раз, а если пользователь снимет с публикации статью, а потом по новой опубликует, то баллы повторно не начисляются...
« Последнее редактирование: 05.07.2012, 11:44:08 от VIKING21 »
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Не работал с AlphaUserPoints, поэтому блок проверки попробуйте реализовать самостоятельно

Код

function onAfterK2Save(&$row, $isNew) {
$app = JFactory::getApplication();
                $api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
                require_once ($api_AUP);
if ($app->isSite() )
{
if ($row->published == 1) {
                                if ($isNew) {
                  AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
                                } else {
                                        ...
                                        тут проверка, были ли ранее начислены баллы за этот $row->id, если не были - также вызываем функцию newpoints
                                        ...
                                }
                        }

}
return true;
}

*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
А по предыдущему сообщению подскажите пожалуйста в чем разница ^-^

Код
 $mainframe = &JFactory::getApplication();
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ( file_exists($api_AUP))

и

Код
$app = JFactory::getApplication();
$api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
if ($app->isSite() && $isNew)
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
$app->isSite() - проверяем фронт или админка (вам же требовалось при создании материала на фронте начислять)

$isNew - признак нового материала
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Точно!  ^-^ Спасибо за разъяснения  *DRINK*
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Ура!  ^-^
Сделал так:
   
Код
function onAfterK2Save(&$row, $isNew) {
$app = JFactory::getApplication();
                $api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
                require_once ($api_AUP);
if ($app->isSite() )
{
if ($row->published == 1) {
                                if ($isNew) {
                  AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
                                } else {
                                              $array = AlphaUserPointsHelper:: getUserInfo ( $keyreference );
      $keysearch = array_search($row->id, $array);
      if ($keysearch == FALSE) {
                                                                         AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
                                                                                       }
                                }
                        }

}
return true;
}


} // END CLASS

Пока все сработало. Создаем неопубликованную статью - не начисляется, потом публикуем её - начисляется, создаем опубликованную статью - начисляется, повторная публикация - не начисляется.

Как Вам, SDKiller? Нормальный код?
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Я не знаю API AlphaUserPoints, поэтому ничего не могу сказать насчёт getUserInfo ( $keyreference )

Сделайте строгую проверку на false (3 знака равенства), иначе результат будет ошибочно интерпретироваться если будет возвращён нулевой индекс массива.

Код
if ($keysearch === false) {

можно вообще сократить

Код
if (array_search($row->id, $array) === false) {
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Выдержка из API AlphaUserPoints
Спойлер
[свернуть]

Почему то после публикации и теста плагина не могу зайти в админку...
Пишет: У вас нет доступа к панели управления сайтом.

Сейчас попробую перезагрузиться и откатить... Еще тестирую...

PS Сократил, спасибо  ^-^
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
После перезагрузки доступ в админку восстановился. Так и не понял из за чего произошло...
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
getUserInfo ( $keyreference );

Я так понимаю что в качестве $keyreference должен быть id пользователя

А где вы объявляете эту переменную?


И второе - а вы уверены что по getUserInfo вы получаете именно массив записей баллов пользователя а не вообще всю информацию его профиля в AUP?
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
1) Когда ставлю тройное равенство так:
Код
if (array_search($row->id, $arraykeyreference) === FALSE) {
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}

То условие
Код
$arraykeyreference = AlphaUserPointsHelper:: getUserInfo ( $keyreference );
 if (array_search($row->id, $arraykeyreference) === FALSE) {
             AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
перестает работать. Т.е. при создании опубликованной статьи баллы начисляются, а если создать неопубликованную и потом опубликовать, то начисление баллов не происходит.

Когда ставлю двойное равенство - все работает...

2)В качестве keyreference используется $row->id, его значение записывается в таблицу AUP_details в столбец keyreference. В той же таблице есть столбец referreid.
Переменную сам нигде не объявляю...  :(

А вот тут
Цитировать
И второе - а вы уверены что по getUserInfo вы получаете именно массив записей баллов пользователя а не вообще всю информацию его профиля в AUP?
надо подумать... Совсем не уверен. Скорее всего так и есть ... :(
« Последнее редактирование: 05.07.2012, 15:13:05 от VIKING21 »
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Вот это вся документация для разработчиков API AUP.
Спойлер
[свернуть]
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Попробовал так
Код
else {
$referreid = AlphaUserPointsHelper::getAnyUserReferreID($userID);        // Определяем переменную $referreid для текущего пользователя
        $arraykeyreference = AlphaUserPointsHelper:: getUserInfo ('',$referreid->keyreference);        // Выбираем содержимое столбца keyreference для текущего пользователя в массив
        if (array_search($row->id, $arraykeyreference) == FALSE) {
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', '', $row->id);
}
Вроде все работает...  Но как посмотреть что попадает в массив $arraykeyreference незнаю  :( Может подскажете?

И все-таки почему то условие не работает при тройном знаке равенства  :(
так
Код
 if (array_search($row->id, $arraykeyreference) === FALSE) 
*

SDKiller

  • Moderator
  • 2705
  • 329 / 5
  • ...ergo sum
Цитировать
Но как посмотреть что попадает в массив

для этого есть var_dump()

Сдаётся мне, вам надо определиться что к чему привязывается - баллы к пользователю, баллы к материалу, материал к пользователю...
Вы сейчас жонглируете разными объектами и результат, который получаете, непредсказуем.

Далее - если использовать в качестве reference просто id - возможны совпадения (пользователь с тем же id, ещё какое-нибудь событие для начисления баллов с таким же id).
Думаю нужен префикс, чтобы однозначно гарантировать уникальность.

Например конструкция 'k2_item_id_'.$row->id даст нам для материала 42 референс следующего вида k2_item_id_42
И тогда его точно не спутаешь ни с пользователем 42 ни ещё с чем-нибудь с id 42.

А вообще - смотрите в таблицах AUP что куда пишется, тогда и апи будет понятнее
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Только по таблицам и разбираюсь  ^-^
ОГРОМЕННОЕ СПАСИБО!  *DRINK*
SDKiller, благодаря вам все оказывается несложно, когда начинаешь понимать  ^-^. Теперь все условия работают.

Выкладываю полный текст плагина:
Код
// no direct access
defined('_JEXEC') or die ('Restricted access');

// Загрузка K2 Plugin API
JLoader::register('K2Plugin', JPATH_ADMINISTRATOR.DS.'components'.DS.'com_k2'.DS.'lib'.DS.'k2plugin.php');

// Initiate class to hold plugin events
class plgK2K2_AUP_topi_plugin extends K2Plugin {


function plgK2K2_AUP_topi_plugin( & $subject, $params) {
parent::__construct($subject, $params);
}

function onAfterK2Save(&$row, $isNew) {
        $api_AUP = JPATH_SITE.DS.'components'.DS.'com_alphauserpoints'.DS.'helper.php';
        require_once ($api_AUP);
if ($row->published == 1) {
                    $aupid = AlphaUserPointsHelper::getAnyUserReferreID($row->created_by);
AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', $aupid, 'k2_item_id_'.$row->id);
                   }
return true;
}
} // END CLASS

Функционал:
1) При создании опубликованной статьи баллы начисляются пользователю;
2) При создании неопубликованной статьи баллы не начисляются;
3) При публикации статьи автором, баллы начисляются автору;
4) При публикации статьи администратором (из админки - ранее не учел этот случай), баллы начисляются автору статьи;
5) За повторную публикацию баллы не начисляются никому (Оказывается AUP сам проверяет уникальность поля keyreference в таблице).

Спасибо за совет
Код
 'k2_item_id_'.$row->id 
Сделал поле уникальным  ^-^

Теперь осталось допилить напильником  ^-^

В админке работает только если публикуешь в режиме редактирования статьи. Т.е. когда в списке статей нажимаешь опубликовать, баллы не начисляются. В принципе понятно, что при публикации через список статей сохранения статьи не происходит, а условие работает на сохранение...
Так вот, может быть возможно добавить еще какое-то условие, чтобы при публикации статьи из списка статей в админке (нажатием кнопки опубликовать), баллы начислялись бы также автору...?
По логике понимаю, что при нажатии на кнопку опубликовать выполняется функция, которая изменяет содержимое поля published в таблице K2_items.
Только не знаю как оно называется и можно ли на него ссылаться в плагине?

*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
SDKiller, помогайте, с меня пиво  *DRINK*
Осталась пара вопросов  ^-^

1.
Цитировать
В админке работает только если публикуешь в режиме редактирования статьи. Т.е. когда в списке статей нажимаешь опубликовать, баллы не начисляются. В принципе понятно, что при публикации через список статей сохранения статьи не происходит, а условие работает на сохранение...
Так вот, может быть возможно добавить еще какое-то условие, чтобы при публикации статьи из списка статей в админке (нажатием кнопки опубликовать), баллы начислялись бы также автору...?
По логике понимаю, что при нажатии на кнопку опубликовать выполняется функция, которая изменяет содержимое поля published в таблице K2_items.
Только не знаю как оно называется и можно ли на него ссылаться в плагине?

2. Организовал списание (начисление отрицательного числа) баллов за публикацию статьи.
Как установить условие, что если баллов у пользователя недостаточно (за это отвечает код
Код
if (AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', $aupid, 'k2_item_id_'.$row->id, '', '', true))

то статья не публикуется, а просто сохраняется (даже если радиокнопка опубликовать установлена на "Да")
А если достаточно, то сохраняется и публикуется.
Мои мысли: Делать это как вы и советовали - плагином. Встроить его на событие типа "проверка перед сохранением материала". Проверять, и если баллов недостаточно, то сохранять, но не публиковать. А если достаточно, то сохранять и публиковать.
Думаю так  ^-^, а как в коде прописать пока незнаю ))) Подскажите как это в коде реализовать...


PS По пункту 2.
Т.к. написанный плагин срабатывает по событию onAfterK2Save (т.е. уже после сохранения данных формы, и публикации в том числе), то думаю можно добавить в него запрос (только не знаю как называется  ^-^ JQuery или JsetQuery или еще как-то...) который при выполнении условия установит значение поля published в таблице items как "1", а при невыполнении условия выполнится другой запрос, который установит значение поля "0"... Только вот как этот запрос выглядит...
« Последнее редактирование: 09.07.2012, 00:37:35 от VIKING21 »
*

VIKING21

  • Осваиваюсь на форуме
  • 38
  • 0 / 0
Ура! Может кому пригодится, пункт 2 реализовал!
Код
if (AlphaUserPointsHelper::newpoints( 'plgaup_takeoutpublicitem', $aupid, 'k2_item_id_'.$row->id, '', '', true)); /*проверяем условие*/		
{ /*Если выполняется - то:*/
$db =& JFactory::getDBO();
$sql = "UPDATE K2_items SET published=1 WHERE id=$row->id";
$db->setQuery($sql);
if(!$db->query()){
echo __LINE__.$db->stderr();}
}    /*Если не выполняется - то:*/
$a = $row->id;
$db =& JFactory::getDBO();
$sql = "UPDATE K2_items SET published=0 WHERE id=$row->id";
$db->setQuery($sql);
if(!$db->query()){
echo __LINE__.$db->stderr();}
« Последнее редактирование: 09.07.2012, 13:51:05 от VIKING21 »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Автоматическая дата снятия с публикации материала

Автор kozhenevsky

Ответов: 10
Просмотров: 5933
Последний ответ 17.11.2023, 08:08:49
от Vastriet
Разные страницы с результатами поиска на одном сайте com_k2

Автор NIKOLY

Ответов: 0
Просмотров: 3440
Последний ответ 22.08.2023, 15:44:05
от NIKOLY
В Joomla! 3.9.1 в к2 не меняется порядок расположения материала

Автор sergspb

Ответов: 0
Просмотров: 2239
Последний ответ 12.06.2021, 15:20:52
от sergspb
Ошибка ПРИ создании материала В К2 - РЕШЕНО

Автор korchaga

Ответов: 1
Просмотров: 2576
Последний ответ 28.12.2020, 03:21:46
от korchaga
Ошибка components\com_k2\views\itemlist\view.html.php on line 485

Автор NIKOLY

Ответов: 5
Просмотров: 1701
Последний ответ 09.12.2020, 16:56:01
от NIKOLY