Новости Joomla

Свои типы полей в Joomla.

Свои типы полей в Joomla.Это большая тема, о которой можно говорить очень много

Это большая тема, о которой можно говорить очень много. Самое главное, что возможности применения ограничиваются только вашей больной фантазией. Вы строите интерфейс своего модуля или плагина и вам нужно подтянуть данные из сторонней системы (список чего-нибудь по какому-нибудь API), чтобы сохранить выбранный id в Joomla. Или сделать какую-то проверку и в зависимости от неё показать то или иное сообщение пользователю. Для этого подойдут свои пользовательские типы полей. Интерфейс Joomla по большей части описан в XML-файлах. У каждого из них свои параметры. Некоторые не описаны в документации (manual.joomla.org), поэтому самым любопытным будет полезно заглянуть в собственно файлы фреймворка по пути

libraries/src/Form/FormField.php, а так же в
libraries/src/Form/Fields. У каждого класса поля перечислены его специфические свойства, которые можно описывать в XML. А в своём типе поля вы можете устанавливать эти значения программно. В моём модуле WT Quick links под капотом происходят изменения. Теперь для работы (в админке) ему нужен вспомогательный плагин. А в самом модуле нам бы проверить, а не выключен ли он? В Joomla есть тип поля Note - заметка. Его можно использовать для вывода примечаний.

<field type="note" name="your_note_for_user" label="Заголовок примечания" title="Альтернативный способ для заголовка" description="Текст примечания" class="col-12 alert alert-info" heading="h1" close="true" />

heading - указывать уровень заголовка.
close - позволяет закрыть это примечание. В классе поля
libraries/src/Form/Field/NoteField.php описана логика вывода. И в принципе оно нам подходит для нашей задачи. Но оно будет выводить сообщение всегда, а нам нужно только тогда, когда плагин отключён. Поэтому берём и создаём свой класс поля, который мы унаследуем от
NoteField. Это значит, что у нас в руках будет весь инструментарий стандартного поля
Note + то, что мы сами добавим. В XML-манифест добавляем наше поле

<field type="systempluginstatus" name="systempluginstatus" addfieldprefix="Joomla\Module\Wtquicklinks\Site\Fields"/>

-

type - имя файла и класса,-
addfieldprefix - указываем namespace к нашему классу, может быть любой нам нужный-
name - нельзя полю без имени...Это означает, что Joomla будет использовать класс поля из файла
modules/mod_wt_quick_links/src/Fields/SystempluginstatusField.php.А в классе поля будет написано следующее:

<?php // namespace для атрибута addfieldprefix namespace Joomla\Module\Wtquicklinks\Site\Fields; // нельзя напрямую обращаться к этому файлу defined('_JEXEC') or die; // подключаем родительский класс для переопределения use Joomla\CMS\Form\Field\NoteField; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\PluginHelper; // имя класса и имя файла точь-в-точь class SystempluginstatusField extends NoteField { protected $type = 'Systempluginstatus'; protected function getLabel() { // если плагин не включён if(PluginHelper::isEnabled('system','wtquicklinks')) { // меняем свойства родительского класса $this->class = 'alert alert-danger w-100'; $this->element['label'] = '⚠️ А-а-а-а!'; $this->element['description'] = 'Плагин не включён!!'; // и просто рендерим его с нашими свойствами return parent::getLabel(); } // А иначе всё хорошо, скрываем поле из виду. $this->parentclass = 'd-none'; return ''; } }

Просто и удобно. И людям приятно, что о них позаботились и рассказали почему что-то не работает. @webtolkru#joomla #php #webdev #разработка

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

Efanych

  • Глобальный модератор
  • 4683
  • 644 / 0
  • Меняю свою жизнь на 360°!
Re: Своя страница 404
« Ответ #30 : 12.07.2012, 13:40:03 »
в папке шаблона HTML нет папки com_content
Создай
Создание сайтов, шаблонов, помощь в решении проблем.
*

Larisa

  • Захожу иногда
  • 257
  • 40 / 26
  • je te promets...
Re: Своя страница 404
« Ответ #31 : 12.07.2012, 14:35:39 »
ура! с горем пополам с Ефанычем решили проблему. Всем кто помогал + :)
*

Mr. Jasper

  • Осваиваюсь на форуме
  • 40
  • 1 / 0
Re: Своя страница 404
« Ответ #32 : 28.01.2013, 23:07:15 »
Я у себя сделал проще

Перетащил скопировал в шаблон error.php и отредактировал так:

Код: php
<body>
<?php
  if ($this->_error->get('code') == '404') {
    header("HTTP/1.0 404 Not Found");
    header('Location: /sitemap');
    exit;
 }
?>
</body>

где sitemap - алиас пункта меню

т.е по 404 происходит переадресация на карту сайта, где есть текст
"Указанного адреса не существует. Воспользуйтесь картой сайта"

А как добавить к карте текст и картинку ?
*

morgusha

  • Захожу иногда
  • 66
  • 0 / 0
Re: Своя страница 404
« Ответ #33 : 05.06.2013, 14:34:03 »
а подскажите поажлуйста как надо прописсать что бы выводился url на котором произовшла ошибка ?
если делаю вот так вот то пишется просто 404 ошибка !
Код
  echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];

*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Своя страница 404
« Ответ #34 : 05.06.2013, 15:08:16 »
а подскажите поажлуйста как надо прописсать что бы выводился url на котором произовшла ошибка ?
если делаю вот так вот то пишется просто 404 ошибка !
Код
  echo "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
$_SERVER["HTTP_REFERER"]
*

Vasiliy111

  • Захожу иногда
  • 248
  • 5 / 0
Re: Своя страница 404
« Ответ #35 : 09.04.2014, 22:50:00 »
Не подскажите в чем может быть проблема, в error.php прописан код
Спойлер
[свернуть]

Раньше все работало, сегодня вдруг вместо страницы ошибки выдает

Warning: file_get_contents(http://мой сайт/index.php?option=com_content&amp;view=article&amp;id=хх) [function.file-get-contents]: failed to open stream: Connection timed out in /ххх/templates/system/error.php on line 7
*

Fedor Vlasenko

  • Живу я здесь
  • 3845
  • 733 / 7
  • https://fedor-vlasenko.web.app
Re: Своя страница 404
« Ответ #36 : 09.04.2014, 23:11:32 »
страница твой сайт/404 существует?
можно так попробовать
Код: php-brief
if($this->error->getCode()==404){
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, JURI::base().'/index.php?option=com_content&view=article&id=132');
$data = curl_exec($ch);
curl_close($ch);
echo $data;
die();
}
*

Vasiliy111

  • Захожу иногда
  • 248
  • 5 / 0
Re: Своя страница 404
« Ответ #37 : 09.04.2014, 23:27:44 »
Цитировать
страница твой сайт/404 существует?

Да такая страница есть. Не поверите но все само собой востановилось. Причем такое уже было где то пол года назад. извините.
*

SLV

  • Захожу иногда
  • 79
  • 3 / 0
Re: Своя страница 404
« Ответ #38 : 19.05.2014, 18:14:20 »
Всем здравствовать.

Joomla 3.3

Подскажите, сделал свою страницу 404 по рекомендации  ___rtr24.ru/joomla/svoya-stranitsa-404-v-joomla-3
Сайт многоязычный. Меню и материал с ошибкой 404 созданы для каждого языка, алиас меню для всех языков одинаков - error-404.
сам файл  ..../templates/system/error.php теперь такой:

Код
<?php   
defined('JPATH_BASE') or die();
//get language
$lang = JFactory::getLanguage()->getTag();
switch ($lang) {
case "ru-RU":
    $pr = "/ru";
    break;
case "en-GB":
    $pr = "/en";
    break;
case "uk-UA":
   $pr = "";
    break;
}
 
if ($this->_error->get('code') == '404') {
header("HTTP/1.0 404 Not Found");
header('Location: '.$pr.'/error-404');
exit;}

?>

Все работает отлично.
Но если в адресной строке в любом месте присутствует точка "." , причем в любом месте, а не только перед расширением файла, выдает страницу с ошибкой 404 такого содержания

Цитировать
Not Found

The requested URL /exim.txt was not found on this server.

Например:
Если адрес www.domen.com/abraabra  -  возвращает свою страницу ошибки
если адрес  www.domen.com/abraabra.abra - возвращает
Цитировать
Not Found

The requested URL /exim.txt was not found on this server.

Подскажите - в чем может быть причина и как исправить


« Последнее редактирование: 02.06.2014, 15:59:01 от SLV »
*

Пастор Шлаг

  • Осваиваюсь на форуме
  • 28
  • 8 / 0
  • Праведный гнев
Re: Своя страница 404
« Ответ #39 : 10.03.2015, 18:36:40 »
Ещё вариант.
По найденным материалам составил такое для error.php
Код
<?php
defined('_JEXEC') or die('Restricted access');
if (($this->error->getCode()) == '404') {
  header($_SERVER['SERVER_PROTOCOL'] .' 404 Not Found');
?>
<meta http-equiv="refresh" content=" 0; url=http://site.ru/404.html"><!--ссылка на любой сайт или страницу, куда переадресует пользователя-->
<?php
  exit();
}
Тестировалось 4 дня. Google точно получает ответ сервера 404, а пользователя перенаправляет на заданную вами страницу (скорее всего тоже 404)
Основная идея отсюда
« Последнее редактирование: 22.09.2016, 20:17:07 от Пастор Шлаг »
*

kysin

  • Захожу иногда
  • 247
  • 4 / 0
Re: Своя страница 404
« Ответ #40 : 16.09.2015, 14:34:49 »
Спасибо Пастору! Его совет заработал как надо, с ответом сервера 404.
*

machinehead

  • Новичок
  • 1
  • 0 / 0
Re: Своя страница 404
« Ответ #41 : 21.02.2016, 18:46:49 »
Настигла таже участь! шаблон от ordasoft os_world_property это отгененый код страницы не могу разобраться в чем хня....почему клыкозябры..
<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru-ru" lang="ru-ru" dir="ltr">
<head>
   <title>404 - Ошибка: 404</title>
   <link rel="stylesheet" type="text/css" href="/templates/os_world_property_october_2013/css/style.css" />
   <link rel="stylesheet" type="text/css" href="/templates/os_world_property_october_2013/bootstrap/css/bootstrap.css" />
   <link rel="stylesheet" type="text/css" href="/templates/os_world_property_october_2013/bootstrap/css/bootstrap-responsive.css" />
</head>
<body class="error">
<center>
    <div class="errorbox">

    <div class="block">
        <h1>404</h1>
   <h3>Page not found</h3>
    </div>
   <p>
       Да как так могло произойти
       <a onclick="window.history.back()">go back.</a>
   </p>
    </div>
</center>
</body>
</html>
*

dialit

  • Захожу иногда
  • 70
  • 1 / 0
Re: Своя страница 404
« Ответ #42 : 27.08.2016, 01:26:39 »
страница твой сайт/404 существует?
можно так попробовать
Код: php-brief
if($this->error->getCode()==404){
header("HTTP/1.0 404 Not Found");
header("HTTP/1.1 404 Not Found");
header("Status: 404 Not Found");
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, JURI::base().'/index.php?option=com_content&view=article&id=132');
$data = curl_exec($ch);
curl_close($ch);
echo $data;
die();
}

Федор, использовал ваш код, работает,
отправляет на страницу 404, но при этом в строке ссылок фигурирует битая ссылка, а необходимо типа site.ru/error404


p/s добавил  header('Location: /error404');

теперь код отдает 302


есть выход?
« Последнее редактирование: 27.08.2016, 01:36:39 от dialit »
*

Alex Kop

  • Захожу иногда
  • 111
  • 1 / 0
Re: Своя страница 404
« Ответ #43 : 17.01.2017, 23:20:32 »
Ещё вариант.
По найденным материалам составил такое для error.php
Прикольно, сделал на главную переход, по моему даже лучше чем красивая страничка 404, главное ответ сервера правильный 404, вроде)
Два дня искал подходящий вариант, этот вроде как надо работает.
*

RinatG1992

  • Новичок
  • 1
  • 0 / 0
Re: Своя страница 404
« Ответ #44 : 07.02.2017, 19:13:04 »
Всем добрый вечер! Ребята, ничего не помогает, все перепробовал, выдает код 200 и все, вообще уже мозг кипит.
Сайт такой: kia-help.ru
Посмотрите плз, помогите, ничего уже не понимаю
*

Exciter

  • Захожу иногда
  • 155
  • 9 / 0
  • Теория + практика
Re: Своя страница 404
« Ответ #45 : 16.02.2017, 13:47:21 »
Присоединяюсь.
http://ptk-tver.ru/
всегда выбивает 200. Никакие советы по созданию error.php не помогают.
Не могу найти в чём беда.
В какую сторону копать?
*

voland

  • Легенда
  • 11028
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
Re: Своя страница 404
« Ответ #46 : 16.02.2017, 15:03:36 »
В сторону сторонних компонентов
*

iqdr

  • Новичок
  • 8
  • 0 / 0
Re: Своя страница 404
« Ответ #47 : 02.05.2018, 17:38:45 »
А я сделал как в доках Joomla рекомендовалось
https://docs.joomla.org/Creating_a_Custom_404_Error_Page/ru
И все вроде работает хорошо.
(и точки в адресе добавлял, и любые последовательности знаков)
*

dmitry_stas

  • Легенда
  • 13151
  • 1234 / 8
Re: Своя страница 404
« Ответ #48 : 02.05.2018, 17:45:44 »
к сожалению в доках Joomla описано абсолютно неверное решение
Тут дарят бакс просто за регистрацию! Успей получить!
Все советы на форуме раздаю бесплатно, то есть даром. Индивидуально бесплатно консультирую только по вопросам стоимости индивидуальных консультаций
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Страница не оптимизирована для мобильных устройств 2.5

Автор Hellboy4ik

Ответов: 9
Просмотров: 1906
Последний ответ 12.12.2018, 17:08:17
от Hellboy4ik
Страница 404 возвращает код ответа 302 а должен быть 404

Автор misteri27

Ответов: 7
Просмотров: 3199
Последний ответ 14.11.2017, 13:18:45
от Efanych
[FAQ] Собственная страница 404 ошибки для Joomla 2.5

Автор lolitma

Ответов: 166
Просмотров: 106087
Последний ответ 01.06.2017, 13:55:34
от Fedor Vlasenko
Страница Add/Edit shipment address не работает

Автор konetski

Ответов: 1
Просмотров: 3392
Последний ответ 08.12.2016, 22:52:57
от konetski
Не отображается главная страница сайта

Автор Dem00n

Ответов: 7
Просмотров: 2424
Последний ответ 14.04.2016, 11:48:15
от vipiusss