Новости Joomla

Рендер пользовательского поля внутри другого пользовательского поля. Joomla 5.3

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

<?php
$joomlaFieldContentPlugn->onContentPrepare('com_content.article', $fakeItem, $app->getParams());

Joomla постепенно переходит от простого указания аргументов для триггеров плагинов к собственным классам событий. Это позволяет не запоминать порядок передачи аргументов класса и использовать человекопонятные методы $event->getContext(), $event->getItem() и т.д. А то в одном месте в Joomla было $article, в другом - $item, в третьем ещё как-то... Порядку больше становится.

Сегодня обновил сайт клиентов до Joomla 5.3. В ней обновили контент-плагин fields и мой финт ушами с вызовом метода плагина отвалился потому, что я передавал в нём 3 аргумента, вместо одного. И для события onContentPrepare это должен быть объект класса ContentPrepareEvent. Как меняется фрагмент кода из предыдущего поста:

<?php
// мы находимся в файле макета поля

use Joomla\CMS\Event\Content\ContentPrepareEvent;
use Joomla\CMS\Factory;

$app = Factory::getApplication();
$fakeItem = new \stdClass();
// Получаем id текущего материала из объекта Input
$fakeItem->id = $app->getInput()->getInt('id');
// {field 29} - это шорт код вставки поля с id 29 - "ассортимент проекта"
// к содержимому поля конкатенируем шорт-код для обработки
$fakeItem->text = $field->value . '{field 29}';
// Получаем объект плагина
$joomlaFieldContentPlugn = $app->bootPLugin('fields', 'content');
// вызываем метод обработки напрямую
// вместо 3-х аргументов теперь указываем один
// это объект класса ContentPrepareEvent
$joomlaFieldContentPlugn->onContentPrepare(new ContentPrepareEvent('onContentPrepare', [
            'context' => 'com_content.article',
            'subject' => $fakeItem,
            'params'  => $app->getParams(),
            'page'    => 0,
        ]));
// выводим оба поля
echo $fakeItem->text;

@webtolkru 

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

antikvar99

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Вылез косяк в панели Яндекс вебмастера при проверке "Проверка ответа сервера" страницы с www https://www.rusalochka.asia/novosti-tailanda/novosti-tajskikh-smi/ Ответ https://yadi.sk/i/YvmWV7h_3SwYUW А без www грузится в 30 раз быстрее.
Подозреваю, что ставил модуль, для автоматической публикации в соцсетях, который не пошел. После переноса с обычного хостинга, на выделенный сервер лезет куча ошибок. Частью мои вопросы и ответы поддержки.

Здравствуйте.
На VPS перегружен процессор, нагрузка создаётся php скриптами. Для решения проблем с php рекомендуем Вам обратиться к программистам, в нашем штате, к сожалению квалифицированных специалистов по php нет.
Воспроизвести ошибку с неработающими кнопками не удалось, открывает новое окно:
https://gyazo.com/2cc4003ab785ecd8c3d83e39f4b256cb
__________________

Опять выдает ошибку.
1.Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@rusalochka.asia to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

2.Error displaying the error page: Application Instantiation Error: Could not connect to MySQL.

При попытке в браузере Яндекс, нажать стрелочку назад, перереодически выдает вот такие ошибки. Сталкиваюсь с таким впервые. При нажачии кнопки обновить страницу загружается нормально.

В MySQL зависло множество запросов вида

| 15432 | antikvar88_j860c | localhost | antikvar88_j860c | Query | 2268 | Sending data | SELECT c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time,
c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level,
c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id,
c.path, c.published, c.rgt, c.title, c.modified_user_id, c.version, CASE WHEN CHAR_LENGTH(c.alias)!= 0 THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as slug
FROM josyc_categories as c
LEFT JOIN josyc_categories AS s ON (s.lft <= c.lft AND s.rgt >= c.rgt) OR (s.lft > c.lft AND s.rgt < c.rgt)
LEFT JOIN (SELECT cat.id as id FROM josyc_categories AS cat JOIN josyc_categories AS parent ON cat.lft BETWEEN parent.lft AND parent.rgt WHERE parent.extension = 'com_content' AND parent.published != 1 GROUP BY cat.id) AS badcats ON badcats.id = c.id
WHERE (c.extension='com_content' OR c.extension='system') AND c.access IN (1,1,5) AND c.published = 1 AND s.id=138 AND badcats.id is null
GROUP BY c.id, c.asset_id, c.access, c.alias, c.checked_out, c.checked_out_time,
c.created_time, c.created_user_id, c.description, c.extension, c.hits, c.language, c.level,
c.lft, c.metadata, c.metadesc, c.metakey, c.modified_time, c.note, c.params, c.parent_id,
c.path, c.published, c.rgt, c.title, c.modified_user_id, c.version
ORDER BY c.lft | 0.000 |

_______________

Здравствуйте.
на сервере нет проблем непосредственно с MySQL. Возможно, сайт подключается к стороннему MySQL серверу.

MySQL Up for: 3d 20h 24m 54s

Из возможных причин - Joins performed without indexes: 417875
При этом на Join уже выделено по 32 МБ памяти. Это слишком много. Нужно отлавливать что это за запрос и оптимизировать его.
__________________
Как вариант ищу того, кто обновит, Joomla до следующего апгрейда. Надеюсь, что ошибки уйдут. Или найдет причину косяка и обновит. Сайт сейчас на старом хостинге. На сервере периодически виснет и тормозит. Возможно, при переносе что-то накосячили дополнительно.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
*

antikvar99

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Привет. Благодарю. Админы перенесут, или удалить и создать? Как тут обычно происходит?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

antikvar99

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Сами создайте. Только по правилам раздела
Привет. Пересоздал. Эту можно удалить.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Update: :Extension: Не удалось открыть https://update.joomla.org/core/sts/extension_sts.xml

Автор RazarioAgro

Ответов: 15
Просмотров: 7882
Последний ответ 04.09.2023, 16:55:30
от beliyadm
Отключить кэширование для страницы или модуля

Автор velyar

Ответов: 8
Просмотров: 1750
Последний ответ 20.11.2021, 16:47:58
от Byzi
Внизу страницы вылез код

Автор Zegeberg

Ответов: 13
Просмотров: 1090
Последний ответ 20.11.2021, 16:47:00
от Byzi
Как удалить на главной страницы "?start=2" "?start=3" и так далее?

Автор Igor5

Ответов: 11
Просмотров: 1204
Последний ответ 20.11.2021, 16:46:40
от Byzi
URL продукта VirtueMart с началом от страницы материала

Автор pvip

Ответов: 0
Просмотров: 939
Последний ответ 01.06.2020, 17:34:57
от pvip