Новости 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 Гость просматривают эту тему.
  • 8 Ответов
  • 6715 Просмотров
*

Вад

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Joomla 2.5
Прочитал практически все, что есть в форуме о битых ссылках. Однако не нашел одного простого ответа, Как же все таки удалить эти ссылки. Поиск через Xenu вывел все ссылки, в том числе и битые. Отфильтровал битые, дальше что? Советуют кто, что, но так односложно никто сказать не может. Где то, прочитал, что эти ссылки надо посмотреть в исходном коде страницы. Открыл и не пойму, как именно в этом коде я могу их найти, не понятно?
Но есть польза, Все таки нашел как разобраться на каких страницах есть эти ссылки.  В этом отлично помогает Google webmaster. В нем можно найти с каких страниц идут эти ссылки. Вот только не понятно, как именно на этих страницах искать?
Обращаюсь ко всем желающим выработать универсальное решение проблемы битых ссылок. Если кто, то нашел универсальный простой ответ на этот вопрос, поделитесь.
 
*

Вад

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Наверное понятней сформулировать проблему так. Как, зная на какой странице находится битая ссылка, и открыв ее исходный код, отыскать ее? И как ее удалить со страницы?
*

Вад

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Короче делюсь с тем, что я нашел, и благодаря чему удалил основную часть битых ссылок со своего сайта.
Кратко это так.
Захожу на Google вебмастер
Открываю в инструментах вебмастеров Панель инструментов сайта - Ошибки сканирования
Под графиком указаны страницы с ошибками, нажимаю на любую из них
Открывается окошко, в нем копирую адрес ссылки.
Захожу в панель управления - компонент Перенаправление (в фильтре ввожу адрес битой ссылки)
Открываю ее. Здесь будет указана сама ссылка и новый URL куда бы Вы хотели ее перенаправить
Указал и включаю ссылку. Тестируем в Google если работает, отмечаем ее как исправленую.
И так каждую.
Это пока только те ссылки которые простые, а вот с другими типа  - разберусь позже и обязательно напишу подробно. А то как то уже устал просить ГУРУ от Joomla, не соизволит, кто либо из отцов основателей форума, выделить 1 минуту своего драгоценного времени и сделать намек, как решить ту или иную проблему
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Так где находятся ваши битые ссылки, в статьях или непосредственно в служебных файлах сайта? Если в статьях, то воспользуйтесь редактором. В служебных файлах, тогда нужно делать поиск по файлам. А сейчас вы не удаляете их, а просто делаете редирект.
*

Вад

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Согласен с Вами.Я только перенаправляю.Это лишь часть решения проблемы битых ссылок. По поводу редактора. Конечно в тексте устранить это просто. Однако, как правило, во всяком случае у меня битые ссылки являются результатом установки модулей и других расширений.Соответственно они генерируются не так просто. Сейчас отработаю пошаговый алгоритм поиска и удаления этого мусора и отпишусь. Кстати последний рост количества битых ссылок произошел при очередном обновлении Joomla.
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
Почему у меня их вообще нет? А если вы вносите изменения руками в файлы Joomla, шаблона или модуля, а затем их обновляете, естественно нужно опять вносить сделанные ранее изменения.
Задумайтесь что будет, когда ваших перенаправлений станет несколько сотен… Устраняйте причину, а не занимайтесь ерундой.
*

Вад

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Так вот в том то и вопрос! Надо сначала понять, где именно выводится ссылка. Допустим неработающая ссылка имеет такой вид (http://www.market.puhglavtorg.ru/shopping/ziletki-puh/) и находится на 3 страницах. У меня одна проблема. Как я должен определить, в каком именно месте указанных страниц находится именно эта неработающая ссылка. В тексте описания ее нет, в коде страницы я ее не вижу. Так вот и вопрос, каким именно способом (1,2,3) я должен вычислить ее место. Знаете, подскажите. Поэтому я такие ссылки перенаправляю, убирая их из раздела исключенные страницы (404). У меня их 32 на 1500 ссылок. А вот такие заковыристые ссылки как    - ищу по адресу, это изображение. Нахожу и  определяю почему она битая, устраняю причину, почему она не работает
А вот к примеру понять где такое чудо встречается - 
http://www.market.puhglavtorg.ru/shopping/index.php?option=com_jshopping&view=products&task=&category_id=3&manufacturer_id=&label_id=&vendor_id=&price_from=&price_to=&Itemid=577  --- не могу понять что это и как его найти и удалить. Если в файле то в каком?
*

Sgrey

  • Захожу иногда
  • 75
  • 4 / 1
У вас магазин, а с ними я никогда дела не имел, наверно вероятность получить неработающую ссылку с магазином выше. С другой стороны, мне кажется ваши проблемы от отсутствия понимания базовых основ.
 
http://www.market.puhglavtorg.ru/varezki-puh/plugins/jshoppingproducts/askquestion/css/images/question.png - что в ней заковыристого? Просто в папке /varezki-puh/plugins/jshoppingproducts/askquestion/css/images отсутствует изображение question.png скорее всего со знаком вопроса и выводится через CSS.

http://www.market.puhglavtorg.ru/shopping/index.php?option=com_jshopping&view=products&task=&category_id=3&manufacturer_id=&label_id=&vendor_id=&price_from=&price_to=&Itemid=577 – это просто дубль страницы в не ЧПУ варианте, который должен быть закрыт от индексации. Ссылка вела на категорию с id=3 и товар с id=577.

http://www.market.puhglavtorg.ru/shopping/ziletki-puh новый путь вероятно такой http://www.market.puhglavtorg.ru/ziletki-puh. Почему он изменился, вам виднее. Почему теперь у категорий нет в пути shopping, а у товаров в них есть. Что с этим делать? Решать вам. Возможно надо меньше играться с расширениями. Если внутренних ссылок ведущих на старый адрес на сайте нет, то можно просто забить. Поисковикам в общем то нет дела, до ваших неработающих ссылок. Можно делать перенаправление, если на них идет трафик и жалко его терять.

Допустим неработающая ссылка имеет такой вид (http://www.market.puhglavtorg.ru/shopping/ziletki-puh/) и находится на 3 страницах. У меня одна проблема. Как я должен определить, в каком именно месте указанных страниц находится именно эта неработающая ссылка. В тексте описания ее нет, в коде страницы я ее не вижу. Так вот и вопрос, каким именно способом (1,2,3) я должен вычислить ее место.
Моя не понимать. Давать ссылку на эти 3 страницы. Впрочем, добавляется она в них все равно динамически, поэтому убирать ее надо не из них, а там где она генерируется, т.е. в модуле, компоненте...
*

Вад

  • Осваиваюсь на форуме
  • 47
  • 0 / 0
Конечно за совет спасибо! Поучительно и главное во время! По поводу игры с расширениями. Обновление Joomla было причиной изменения принципов построения пунктов меню. И в этом заключалась проблема. Что бы изменить пункт меню, созданный до обновления, необходимо сделать определенные действия, но проще сделать новый пункт меню. Поэтому данная проблема  и возникла.
Теперь по поводу изображений, действительно это оно и в общем то я это исправил довольно просто. Зашел в папку, нашел картинку, и сделал так, что бы ее имя соответствовало указанному в ссылке.
Так, что в общем то ничего нового для себя не открыл. Хотя спасибо за критику. Да кстати, по поводу магазина. Магазин это вещь в которую необходимо постоянно вносить изменения, поэтому битые ссылки это мусор постоянный  сопровождающий ИМ. Тем более, что для оптимизации магазина постоянно необходимо устанавливать обновления и расширения.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Оптимизация сайта

Автор joni

Ответов: 0
Просмотров: 2075
Последний ответ 22.07.2023, 17:10:11
от joni
Скрипт при закрытии сайта

Автор Mick_20

Ответов: 8
Просмотров: 2533
Последний ответ 14.06.2023, 18:40:20
от effrit
Кнопка “Добавить в корзину” VirtueMart не работает на главной странице сайта

Автор max_max

Ответов: 0
Просмотров: 7255
Последний ответ 20.04.2021, 12:40:37
от max_max
[FAQ] Ускоряем загрузку сайта (руководства и инструменты)

Автор Fedor Vlasenko

Ответов: 117
Просмотров: 103102
Последний ответ 05.11.2020, 19:53:12
от Grigoriy82
Как убрать < class="moduletable ">на лицевой части сайта?

Автор indes

Ответов: 11
Просмотров: 4184
Последний ответ 07.05.2020, 17:35:38
от beliyadm