Новости Joomla

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

👩‍💻 События плагинов и порядок их срабатывания при работе с пользовательскими полями Joomla и использовании FieldsHelper.

В процессе работы с Joomla бывает необходимо работать с пользовательским интерфейсом более тонко, чем обычно. Все формы Joomla состоят из стандартных полей, содержанием, стилем отображения, состоянием (включено/выключено, доступно для редактирования или нет и т.д.) можно управлять с помощью плагинов. Да и для нестандартных проектов хорошей практикой является создание одного системного или нескольких плагинов групп "под проект", в которых храниться весь "нестандарт".

В этой статье описаны все триггеры, которые вызываются через Event Dispatcher из administrator/components/com_fields/src/Helper/FieldsHelper.php, с привязкой к жизненному циклу (порядку этапов работы запроса), аргументам, изменяемым данным и дальнейшему распространению по Joomla. Это поможет вам работать с Joomla свободнее и не опасаясь при этом потерять изменения при очередном обновлении движка.

Подходы, описанные в статье, полезны в тех случаях, когда вы работаете с данными в com_fields - механизме создания и редактирования пользовательских полей ядра Joomla и при использовании FieldsHelper. Многие сторонние компоненты не используют эту возможность, поэтому данная статья будет полезна лишь частично.

Читать статью на Хабре.

@joomlafeed

🏆 Открыто голосование за Joomla в премии CMS Critic People’s Choice Awards 2025

🏆 Открыто голосование за Joomla в  премии CMS Critic People’s Choice Awards 2025

🗓 Голосование продлится до 27 февраля 2026 года.

👩‍💻 Проголосовать! 👩‍💻

Номинации, в которых можно проголосовать за Joomla:
⭐️ Best Free CMS
⭐️ Best Open Source CMS
⭐️ Best Enterprise CMS

Также в номинации Best e-Commerce Solution участвуют компоненты интернет-магазинов для Joomla:
⭐️ HikaShop
⭐️ Virtuemart

В номинации Best Website Builder оказались:
⭐️ YooTheme
⭐️ SP Page Builder

Что такое CMS Critic Awards?
С 2012 года премия CMS Critic Awards занимает особое место в сообществе систем управления контентом (CMS). Это единственный в своем роде сайт, который составляет рейтинг системы управления контентом и связанных с ними решений на рынке — от малого до крупного и подчеркивает их инновации и услуги.

Каждый год награда CMS Critic Awards присуждается одному победителю в различных отраслевых категориях, таких как: «Лучшая облачная CMS», «Лучший DXP», «Лучшая Headless CMS и других. Затем результаты оглашаются через СМИ вместе с выбором редакции CMS Critic.
В этом году премия вернулась к своим традициям и только TOP-5 движков по количеству номинаций попали в 2-й этап - голосование.

@joomlafeed

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

yury181

  • Новичок
  • 9
  • 0 / 0
страница 404
« : 03.05.2016, 01:08:20 »
Люди добрые, направьте в нужном направлении.
Как убрать редирект в all_ads на свою 404? joomprod давит на "sef404", но наверняка у многих, как и у меня нет и не было желания использовать лишний компонент...
Яндекс нервничает, что получает 200, ну и я с ним тоже)

Включен стандартный SEF с суффиксом.
*

SerGunSter

  • Захожу иногда
  • 112
  • 1 / 0
Re: страница 404
« Ответ #1 : 04.05.2016, 20:28:18 »
Люди добрые, направьте в нужном направлении.
Как убрать редирект в all_ads на свою 404? joomprod давит на "sef404", но наверняка у многих, как и у меня нет и не было желания использовать лишний компонент...
Яндекс нервничает, что получает 200, ну и я с ним тоже)

Включен стандартный SEF с суффиксом.


я вот экспериментирую с этой темой тоже.
чтобы убрать редирект надо во вьюхе details во view.html.php вместо
Код
$app->redirect( TRoute::_('index.php?option=com_adsmanager&view=list&catid='.$catid));
вставить что то вроде
Код
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
   echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=6');
exit();

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

далее, сейчас дошел до роутера и в файле /components/com_adsmanager/router.php

сделал вот чего:

вместо

Код
else
{
if ($nbsegments == 2)
{
$catid = explode( ':', $segments[0] );
   $vars['catid'] = (int) $catid[0];
   $id = explode( ':', $segments[1] );
   $vars['id'] = (int) $id[0];
   $vars["view"] = "details";
}


сделал вот такое

Код
if ($nbsegments == 2)
{

$catid = explode( ':', $segments[0] );
   $vars['catid'] = (int) $catid[0];
   $id = explode( ':', $segments[1],2 );

if ($id[1]==getAdsmanagerRouteContent((int)$id[0]))
{
print_r('ok');

}
else {
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
echo file_get_contents(JURI::root().'index.php?option=com_content&view=article&id=6');
exit();

}

   $vars['id'] = (int) $id[0];
   $vars["view"] = "details";

}

print_r отладочный у меня :)

смысл в том, что смотрим чего там нам передали, считываем идшник, по идшнику определяем какая часть ссылки из заголовка обьявления должна получиться и если то что считали в ссылке и то что должно быть не равно друг другу, то идем на 404-ю с отдачей кода ошибки. Ну а если в ссылке кривой идшник, то на 404-ю уйдем из вьюхи details.
Визуально вроде как не дает теперь рисовать что попало в ссылке после идшника. буду еще тестить :) также если обьяве поменяли headtext, то по сути роутер генерит ему новую ссылку и при такой реализации по старой ссылке объявление уже не найти, что, наверное коряво так как идшник не изменился. Не знаю пока, но для поисковика это другое уже объявление, ведь заголовок поменялся и ссылка по сути :)
 
« Последнее редактирование: 04.05.2016, 20:32:31 от SerGunSter »
*

SerGunSter

  • Захожу иногда
  • 112
  • 1 / 0
Re: страница 404
« Ответ #2 : 05.05.2016, 17:33:07 »
короче роутер я таки допилил так, что по любому отклонению выдает 404-ю. Но есть еще такая магия, как на авито например, если ссылку неправильно указываешь, а идшник объявления корректный, то ссылка сама редиректится на верную. Решение интересное, но как прилепить в адсманагер не знаю. Все же немного смущает, что смена заголовка считается другим объявлением и будет поисковикам отдавать 404, ну либо смена категорий.  Не знаю верно это или нет :)  
« Последнее редактирование: 05.05.2016, 17:36:21 от SerGunSter »
*

yury181

  • Новичок
  • 9
  • 0 / 0
Re: страница 404
« Ответ #3 : 18.06.2016, 03:13:53 »
SerGunSter, спасибо за указание верного направления на роутер! *DRINK*

У меня тоже все вышло - теперь, если есть ошибка в букве/цифре в каталогах или карточке товара то Яндекс получает свой любимый 404.
Кстати во view.html.php если использовать file_get_contents, то ответ 404 сервер не дает, кажется был 302.
А вот роутер, то что доктор прописал. Заодно и допилил роутер в com_content для материалов.

Теперь ищу, чтобы при отсутствии суффикса, тоже отдавал 404, как-то в Joomla с 404 прям беда(...

При использовании материала, на странице 404 выкидывает пользователя или же пользователь не может войти - скорее всего это особенность этой страницы в Joomla, т.к. в родной Joomla 404, мы не видим что происходит с пользователем.

PS кто будет допиливать для каталогов
Код
$catid[1]==getAdsmanagerRouteCategory((int)$catid[0])

 

« Последнее редактирование: 18.06.2016, 03:21:50 от yury181 »
*

yury181

  • Новичок
  • 9
  • 0 / 0
Re: страница 404
« Ответ #4 : 18.06.2016, 03:17:05 »
SerGunSter, спасибо за указание верного направления на роутер! *DRINK*

У меня тоже все вышло - теперь, если есть ошибка в букве/цифре в каталогах или карточке товара то Яндекс получает свой любимый 404.
Кстати во view.html.php если использовать file_get_contents, то ответ 404 сервер не дает, кажется был 302.
А вот роутер, то что доктор прописал. Заодно и допилил роутер в com_content для материалов.

Теперь ищу, чтобы при отсутствии суффикса, тоже отдавал 404, как-то в Joomla с 404 прям беда(...

При использовании материала, на странице 404 выкидывает пользователя или же пользователь не может войти - скорее всего это особенность этой страницы в Joomla, т.к. в родной Joomla 404, мы не видим что происходит с пользователем.

PS кто будет допиливать для каталогов
Код
$catid[1]==getAdsmanagerRouteCategory((int)$catid[0])

 


*

SerGunSter

  • Захожу иногда
  • 112
  • 1 / 0
Re: страница 404
« Ответ #5 : 31.07.2016, 09:53:55 »
ну я по итогу весь роутер перепилил и в общем то во всех случая неправильных отдаю 404 :)
*

Иван

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: страница 404
« Ответ #6 : 05.09.2016, 14:42:02 »
ну я по итогу весь роутер перепилил и в общем то во всех случая неправильных отдаю 404 :)

Добрый день!
Спасибо за решение. Попробовал в  com_adsmanager_3.1.6 - работает только для карточки самого объявления.Вероятно я внес правки не для всех файлов.
 Для категории все по прежнему - любые варианты категории - нет редиректа. также любые варианты в секции категории обявления - нет 404
Например
site.ru/adsmanager/9-kategoria1/2-obyavlenie1BLA-BLA.html - 404 все работает правильно
site.ru/adsmanager/9-kategoria1BLA-BLA/2-obyavlenie1.html - 200 все неправильно
site.ru/adsmanager/9-kategoria1BLA-BLA.html - 200 все неправильно

Я так понял вы показали решения только для обявления. Если можно напишите более подробно в каких вайлах еще внести изменения и какой код для того, что бы работало и в категориях тоже.
У меня com_adsmanager_3.1.6
Спасибо!
с уважением
*

Иван

  • Осваиваюсь на форуме
  • 49
  • 0 / 0
Re: страница 404
« Ответ #7 : 05.09.2016, 16:20:36 »
Вот попробовал вариант решения от SerGunSter.
Он у меня заработал только для ссылки обявления

Попробовал - Дописал еще условие для алиаса секции категории $catid[1]==getAdsmanagerRouteCategory((int)$catid[0]) - отдается 404 если в секции категории неправильные символы.
Теперь
site.ru/adsmanager/9-kategoria1BLA-BLA/2-obyavlenie1.html - 404 все правильно

Посмотрите пожалуйста  кто может - вероятно там условия  можно написать красивее. Кроме этого такое решение работает только для ссылки объявления. Для страници категорий, не работает - не знаю где искать файл и куда вносить условия для проверки.
Ребята у кого получилось помогите пожалуйста, посмотрите. Давайте Напишем окончательное полное решение 404 для компонента и закроем вопрос !
Код
if ($id[1]==getAdsmanagerRouteContent((int)$id[0])) 
{

}
else {
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
echo file_get_contents(JURI::root().'404.shtml');
exit();

}
if ($catid[1]==getAdsmanagerRouteCategory((int)$catid[0]))
{
}
else {
header($_SERVER['SERVER_PROTOCOL']." 404 Not Found");  
echo file_get_contents(JURI::root().'404.shtml');
exit();

}
« Последнее редактирование: 05.09.2016, 16:27:20 от Иван »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Страница результатов поиска не в шаблоне

Автор Mick_20

Ответов: 1
Просмотров: 1239
Последний ответ 26.05.2017, 12:01:15
от Mick_20
Страница Авторизации

Автор elipssp

Ответов: 1
Просмотров: 1356
Последний ответ 25.01.2017, 01:44:00
от elipssp
Изменилась страница блога материалов после установки компонента

Автор WinSSLioN

Ответов: 0
Просмотров: 978
Последний ответ 22.10.2016, 22:27:09
от WinSSLioN
Страница результатов поиска. Как исправить

Автор vasekiv

Ответов: 0
Просмотров: 1130
Последний ответ 21.10.2016, 11:09:24
от vasekiv
Страница добавления объявления

Автор kolhoz

Ответов: 1
Просмотров: 1323
Последний ответ 21.03.2016, 10:59:04
от Lavrov_ViP