Новости 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 

Вышел релиз Joomla 5.3.0

Вышел релиз Joomla 5.3.0

Проект Joomla с радостью объявляет о выходе Joomla 5.3 — последней минорной версии в серии Joomla 5.

Этот релиз сосредоточен на продуманных улучшениях, которые совершенствуют работу с CMS. От лучшей организации файлов и журналирования задач до расширенной обработки электронной почты и улучшенной доступности — Joomla 5.3 помогает администраторам и разработчикам работать более эффективно, сохраняя ваш сайт современным, безопасным и готовым к будущему.

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

nicrurin

  • Новичок
  • 1
  • 0 / 0
Здравствуйте.
Движок Joomla! 3.9.13 локализация русская 3.9.12.1 (2019-10-10) от Проект Joomla!.
Проблема, где бы я не написал заглавную букву "И" в публичной части она отображается восклицательным знаком. При этом в админке полностью очищается поле где она стояла не зависимо что это, название или поле для текста или еще что нибудь. И главное, это только с одной буквой. Все остальные руссуие буквы отображаются без проблем.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
С кодировкой MySQL проблемы, поищите, это и на этом форуме обсуждалось.
Можно попробовать запустить исправление бд от Joomla.
*

ProtectYourSite

  • Живу я здесь
  • 2364
  • 137 / 4
  • Безопасность вебсайтов
Кодировка таблиц utfmb4 ??
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А может просто "интересный" шрифт, в котором нет заглавной И (встречал вроде кириллические но без Ы и без Ё и без Ж халтурные шрифты)
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

Шмайсер

  • Давно я тут
  • 801
  • 35 / 3
Шрифт, не поддерживаемый в Кириллице, хоть utf-8 пиши хоть что...
Разработка сайтов любой сложности, на Joomla 3.9-4.x и не только на ней. Пишу компоненты, модули и плагины на заказ. Переношу сайты с ветки 2.5.х на 4-ю версию Joomla. Пишу любые скрипты и интерфейсы.
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Шрифт, не поддерживаемый в Кириллице, хоть utf-8 пиши хоть что...
Встречал подобный шрифт, клиент очень хотел именно его, там не было буквы Ы. Скачал редактор, нарисовал эту Ы из мягкого знака и палки, 30 минут времени на поиск редактора шрифтов, создание и компиляцию обратно - для чайника (у меня это был первый опыт) не вижу никаких проблем
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

yurikfirst

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • Ты не одинок во вселенной
 - Joomla! 3.9.19 -
Аналогичная ситуация, буква "И" большая прописывается как - "? ?" Шрифт обычный - times new roman, обновлено всё до последнего
Не нашел, как изменить - Кодировку соединения базы данных не совпадает с кодировкой БД.
При сохранении, когда используется отдельная заглавная буква "И", в админской части редактирования страницы оказывается пусто, при сохранении. Но на сайте публикуется. Какая то джумловская магия)))
Кто подскажет, как это лечится??
Спасибо

Данные о системе



и что показывает

*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
А почему у вас кодировка соединения с БД в win1251? Должна же быть utf8_general_ci
Еще нужно посмотреть в какой кодировке сами таблицы в бд

Если в БД сохраните в таблице контента - будет корректно?
(не забываем про бекапы)
Попробуйте вот это сделать
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

draff

  • Гуру
  • 5801
  • 434 / 7
  • ищу работу
При сохранении, когда используется отдельная заглавная буква "И", в админской части редактирования страницы оказывается пусто, при сохранении.
Включить отображение ошибок в админке на уровень - для разработчиков и сохранить страницу ?
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Включить отображение ошибок в админке на уровень - для разработчиков и сохранить страницу ?
Это проблема не на уровне PHP, что-то именно с кодировкой БД, ну не должна быть там win1251 (подобная ерунда была в век Joomla 1.0 и всяких Лавра эдишн лет 13 назад), соответственно ошибки сервера ничего не покажут
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Кто подскажет, как это лечится??
Сделайте дамп базы. Посмотрите, в какой кодировке получился файл. Должен быть в кодировке UTF-8 без BOM. Далее проверьте в самом файле, какая кодировка задается таблицам в функции Create. Если задается отличная от UTF-8, правим по всему файлу дампа. Далее идем в phpMyAdmin, полностью очищаем базу. Идем в настройки (скрин @beliyadm выше выложил), меняем кодировку базы на utf8mb4_unicode_ci и заливаем дамп. Проверяем в configuration.php, что стоит драйвер mysqli (dbtype = 'mysqli'). Проверить в .htaccess значение "AddDefaultCharset UTF-8" - если нет такой строки, можно добавить, если есть но вместо UTF-8 что то другое - исправить. Пробуем запуститься.
« Последнее редактирование: 15.06.2020, 22:44:07 от SeBun »
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
*

beliyadm

  • Легенда
  • 9758
  • 1665 / 66
  • Севастополь, Россия
Все правильно и подробно.
Но вот это никак не влияет, если при сохранении в базу идёт сбой или при выводе из базы другая кодировка (а на его скрине так и есть, база в утф а соединение в 1251, что за сервер такой самодельный)
Проверить в .htaccess значение "AddDefaultCharset UTF-8" - если нет такой строки, можно добавить, если есть но вместо UTF-8 что то другое - исправить. Пробуем запуститься.
Все истины, которые я хочу вам изложить, — бесстыдная ложь. Сделать всё хорошо
TLG: @Beliyadm
*

yurikfirst

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • Ты не одинок во вселенной
Что вообще происходит?? Все JavaScript включены, он их требует включить, еще отправляю, такое сообщение



Админ, сделай, что нибудь, а то жесть, не возможно ответить нажав на цитату..это лес какой то
*

yurikfirst

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • Ты не одинок во вселенной
Спасибо, что отозвались

Такие же кодировки в БД - utf8mb4_unicode_ci

Что до - AddDefaultCharset UTF-8 - это вообще, чуть ли не школьник знает

А что в самой таблице контент, где сама запись... там билебирда типа Шесть добрых

Я сам был удивлён, почему используется из каменного века win1251. Поэтому ищу, где это соединение поменять..

Вообще, на https://help.sweb.ru/entry/111/ стало понятно, может хостер грешит, так как перед импортом базы корректировал на utf8mb4_unicode_ci. но хостер то по привычке где-то тупит, и соединяет с cp1251_general_ci. Бардак.
« Последнее редактирование: 16.06.2020, 00:57:27 от yurikfirst »
*

arma

  • Завсегдатай
  • 1753
  • 81 / 3
Конечто хостер. И у меня было такое. Теребите хостера
*

yurikfirst

  • Осваиваюсь на форуме
  • 13
  • 0 / 0
  • Ты не одинок во вселенной
Короче, решил проблему. Правда теперь всё надо переводить каракули на нормальный язык
Просто в Система - Общие настройки - Сервер , тип базы данных был MySQL с PDO, поставил на MySQLi
После этого всё превратилось в ад, но страница сохраняется нормально.
Не делайте, как я)
*

SeBun

  • BanMaster
  • 4030
  • 259 / 5
  • @SeBun48
Я вам написал, как правильно сделать, и довольно подробно. Если бы вы сделали дамп и открыли его в Notepad++, там все было бы видно, в какой кодировке база и в какой кодировке сам дамп. После этого вам нужно было просто преобразовать дамп и залить назад, в базу, кодировку которой вы сменили. И все бы отлично загрузилось. Но вы пошли своим путем.

Все правильно и подробно.
Но вот это никак не влияет, если при сохранении в базу идёт сбой или при выводе из базы другая кодировка (а на его скрине так и есть, база в утф а соединение в 1251, что за сервер такой самодельный)
Не влияет, но часто встречаю, когда люди вставляют эту строку не понимая ее значения. Или даже сам шаблон в кодировке 1251, что тоже встречается. Поэтому на всякий случай дал и такую рекомендацию.
Оказываю услуги по Joomla | Миграция/Обновление | Сопровождение | IT-аутсорсинг | Недорогие домены и хостинг
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Не подставляется информация вместо констант

Автор hazyin

Ответов: 0
Просмотров: 1225
Последний ответ 18.11.2016, 15:25:57
от hazyin
Кракозябры вместо даты материалов после обновления языкового пакета

Автор vvp863

Ответов: 2
Просмотров: 1771
Последний ответ 22.05.2015, 07:37:11
от vvp863