Довольно стандартная ситуация, что после, например, попытки обработать переданные пользователем данные, нужно однократно вывести сообщение об результате обработки данных. Однократно - т.е. если просто обновить страницу или перейти на нее по прямой ссылке, то сообщение повторно выведено не будет.
CMS Joomla 3.X:
Joomla редирект с сообщением
Joomla 3 страница после авторизации
После авторизации пользователей CMS Joomla 3 перенаправляет пользователя на старину профиля. Обычно же нужно редиректить пользователя на другую страницу.
Дальше будет небольшое деление:
Если авторизация идет через модуль, то нужно перейти в его настройки (Расширения - Модули - Вход на сайт )
Если же авторизация идет через форму на соответствующей странице, то нужная нам настройка находиться в настройках пункта меню.
Меню - Группа маню - пункт:
Ссылки в CMS Joomla 3 давно уже не выглядят как /index.php?option=com_name&Itemid=14§ion=items&task=..., но ссылки на самописный компонент легко сделать в виде /blig/10, но часто этого недостаточно.
Ниже покажу как можно сделать настоящие ЧПУ ссылки.
Joomla: MySql #1025 - Ошибка при переименовании (ошибка: 168 "Unknown (generic) error from engine")
При попытке обновить Joomla до 3.10.1 получил предупреждение, что сначала нужно поправить структур БД.
При попытке ее исправить получил ошибку: got error 168 unknown generic error from engine from storage engine
Joomla не видит обновления
После выхода очередного обновления Joomla наотрез не хотела его видеть:
Обновления не найдены Вы используете сервер обновлений "По умолчанию". С данного сервера вы будете получать уведомления о всех обновлениях версии Joomla! 3.x. Если у вас возникли проблемы с установкой обновления, пожалуйста, скачайте пакет обновления на официальной странице загрузки Joomla и воспользуйтесь вкладкой загрузки и обновления. У вас установлена последняя версия Joomla!
Warning: Declaration of NameControllerForms::getModel($name = 'form', $prefix = '...') should be compatible with Joomla\CMS\MVC\Controller\BaseController::getModel($name = '', $prefix = '', $config = Array) in /administrator/components/NAME/controllers/forms.php on line 8
Полный текст ошибки Joomla:
Warning: session_start(): Failed to read session data: user (path: /var/www/SITE.ru/tmp) in /var/www/SITE.ru/www/libraries/joomla/session/handler/native.php on line 260
Error: Failed to start application: Failed to start the session
Работа с полями формы в Joomla 3
Нужно было получить значения полей формы(XML схеме). Например, models/forms/item.xml
Итак, getFieldset модели возвращает объект /libraries/src/Form/FormField.php у которого пачка защищенных методов. А значения нужно получать через магической метод __get, которое в свою очередь вызывает одноименный метод. Т.е. например, $field->title вызывает getTitle().
protected function _getFields() { $oInput = JFactory::getApplication()->input; $data = $oInput->post->get('jform', array(), 'array'); $form = $this->getForm($data, false); foreach($form->getFieldset('details') as $field) { echo $field->type. '<br />'; //echo $field->label. '<br />'; echo $field->fieldname. '<br />'; echo $field->title. '<br />'; echo '<hr />'; }
Проблема в том, что если попробовать выдать языковую константу через JText::_ из другого компонента или модуля, то Joomla локализацию не находит.
Для вызова нужно сначала подключить его языковой файл.
Довольна давно столкнулся с проблемой, что ссылки сделанные через JRoute::_ не на страницах самого компонента теряли ЧПУ, т.е. вместо /blog/29 выводятся как /component/blog/29
Решение: нужно добавлять ссылкам Itemid=, равен он должен быть ID пункта меню.
Т.е.: JRoute::_('index.php?option=com_blog&view=item&Itemid=108&id='.$oRow->id);