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

SvetlovPhoto

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Здраствуйте... У меня возникло двен проблемы с Joomla, которые своими силами решить не получается(

1. Создаю какой-либо материал, какой-либо категории, сохраняю.  В настрйоках самой Joomla включены стандартные средства SEO (т.е. ЧПУ), так вот, если я создаю пункт меню видущий на созданный материал, то отображается все отлично, с алиасом который я задал, в меню и вид самой странички то, что нужно.  Но если я добавляю ссылку на эту созданную статью, через текстовое поле (например упоминаю в статье, что есть такая-то статья), то данная статья вылазит уже без ЧПУ, и вверху статьи, самым первым заголовком стоит "МАТЕРИАЛЫ"..  Тоже самое у меня встречалось в версии 1.7.х но там не стал эту проблему решать, а сейчас очень нужно, но выхода найти не могу ( Для примера, не сочтите за рекламу, страница ошибки 404 (другие странички просто подправил топором и напильником ПРИМЕР )
Помогите пожалуйста решить проблему !

2. Не так существенно, но тоже глаза режет..

Есть на сайте статьи, которые не привязаны не к каким пунктам меню и не выодятся, как блог категории.. Ссылки на данные статьи, стоят только в других статьях.. И для таких материалов, выходит очень странный ЧПУ (например http://creatiff-photo.ru/for-loving-2man/20-information/98-gift.html)  Данна статья имеет Алиас gift с ID-98 и входит в категорию Information c ID-20. С этим я не спорю: Но по какой-то не ведомой причине, к ссылке привязался "for-loving-2man" хотя такой катеогии или подкатегории у меня нету, есть страничка с таким Алиасом. Но сама ссылка-это ерунда, проблемы возникают с хлебными крошками, т.к они выглядят следующим образом:  Главная - Влюбленных пар-information.  Первые две ссылки, с ними еще можно жить, а вот Information, создает страницу блога категории, но кривую до жути.. и вот хочется как-то удалить эту ссылку категории, или хотябы настроить так, чтобы она выдавала материалы категории в один столбик и т.д.  но как сделать не знаю (

Буду рад любой помощи! спасибо!
*

SvetlovPhoto

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Придется самому ответить на свой вопрос номер 1: 

В файлике components\com_content\views\article\tmpl\default.php и есть макет статей.. Но менять его безсмысленно, тк при обновлении, все изменения потруться.  нужно переопределить каркас страницы, для этого в папке  templates\Ваш_Шаблон\html   создаем папки  \com_content\article\  и кудаем туда копию default.php
после чего в этой копии ищем:
Код
?>
 <div class="item-page<?php echo $this->pageclass_sfx?>">
<?php if ($this->params->get('show_page_heading', 1)) : ?>
<h1>
<?php echo $this->escape($this->params->get('page_heading')); ?>
</h1>
<?php endif; ?>
<?php

И удаляем оттуда:
Код
<h1>
<?php echo $this->escape($this->params->get('page_heading')); ?>
</h1>
сохраняем.

Вот и все..
*

greenmar

  • Захожу иногда
  • 95
  • 4 / 0
Есть более быстрое и простое решение 1-го вопроса, если это Joomla 2.5.
В админке меню РАСШИРЕНИЯ - МЕНЕДЖЕР ЯЗЫКОВ, вкладка ПЕРЕОПРЕДЕЛЕНИЕ КОНСТАНТ
Нажимаешь кнопку СОЗДАТЬ справа вверху. Откроется окно, справа вводишь в строку поиска слово которое хочешь заменить в языковом файле. В твоём случае "материалы" (я ещё исправлял в своё время "подкатегории" - не очень понимаю к чему этот заголовок). Нажимаешь найти и тебе выдаются все результаты где встречается это слово. Ищешь то что тебе нужно и кликаешь на него. В твоём случае константа будет JGLOBAL_ARTICLES. Она появиться в окошке слева, а ниже будет твой перевод. Вместо надписи "материалы" ставишь пробел и всё.
С помощью менеджера констант можно поменять всё что связано с переводами.

Насчёт второго вопроса. Чего ты хотел от хлебных крошек, если делаешь ссылку на статью с другой статьи, которая имеет алиас "for-loving-2man"? Для правильных ссылок и ЧПУ надо правильно распределять материалы и создавать нужные категории или вспомогательное меню, которое на сайте не отображается, но делается для определения ссылки. Какая у тебя иерархия категорий и материалов? Не зная это невозможно что-то посоветовать.
*

SvetlovPhoto

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
Спасибо, очень полезное сообщение, буду теперь знать.. просто недели две лазил по рунету в поисках решения первого вопрсоа и не нашел( додумался, только поправить шаблон...

Что касается хлебных крошек теперь понял, но не хтел замарачиватсья с неопубликованым меню, да и не совсем понимаю как(  Получается, я создаю меню, которого негде на страницах нет, и в этом случае ссылки ведут на 404 :( Я опять что-то не так делаю?  мне по сути нужно, чтобы были пару статей, просто страницами никуда не принадлежащими.. например: 404, Форма обратной связи и пара информационых страничек. Для этого я присовил им "анкатигориес", теперь создаю модуль меню, скажем в левой позиции, создаю меню с нужными страничками..и вот пока меню есть, странички открываются ,как только меню закрываю, все страницы уходят на404 :(
*

autokaif

  • Захожу иногда
  • 81
  • 0 / 0
Уважаемый SvetlovPhoto, в Joomla 2.5 в статье показывается родительская категория каждого материала, и она обернута в <h1>, а надо в <h2>. Прежде чем побесокоить Вас, пытался найти эту нечесть, увы не получается. Подскажите пожалуйста, буду Очень признателен
« Последнее редактирование: 17.06.2012, 05:02:59 от autokaif »
*

Serjj

  • Захожу иногда
  • 164
  • 4 / 0
  • Кот да Винчи
Есть более быстрое и простое решение 1-го вопроса, если это Joomla 2.5.
В админке меню РАСШИРЕНИЯ - МЕНЕДЖЕР ЯЗЫКОВ, вкладка ПЕРЕОПРЕДЕЛЕНИЕ КОНСТАНТ
Нажимаешь кнопку СОЗДАТЬ справа вверху. Откроется окно, справа вводишь в строку поиска слово которое хочешь заменить в языковом файле. В твоём случае "материалы" (я ещё исправлял в своё время "подкатегории" - не очень понимаю к чему этот заголовок). Нажимаешь найти и тебе выдаются все результаты где встречается это слово. Ищешь то что тебе нужно и кликаешь на него. В твоём случае константа будет JGLOBAL_ARTICLES. Она появиться в окошке слева, а ниже будет твой перевод. Вместо надписи "материалы" ставишь пробел и всё.
С помощью менеджера констант можно поменять всё что связано с переводами.
Ай спасибо! Как раз то, что нужно!))
*

woland-w

  • Осваиваюсь на форуме
  • 20
  • 0 / 0
Здравствуйте.  У меня похожая проблема, вот только "материалы" прописываются в url страници (/index.php/Материалы/kosmrem.html), я так понял, что это катигория. Использую плагин sh404SEF. Пытался в категориях изменить на "material", но тщетно. Как изменить ума не приложу.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

В Joomla 2.5 VirtueMart 2.0.26d не работает добавление в корзину под мобилку

Автор kvintovskiy

Ответов: 8
Просмотров: 1889
Последний ответ 15.04.2024, 17:29:25
от Vastriet
Модуль устанавливается, но Joomla его не видит

Автор ruppert

Ответов: 20
Просмотров: 18245
Последний ответ 01.08.2022, 05:30:50
от rezon777
Как сделать что бы заголовки статей на сайте были в теге <h1>?

Автор MultiMatrix83

Ответов: 10
Просмотров: 3123
Последний ответ 27.04.2022, 15:56:45
от MultiMatrix83
Как добавить описание к пункту меню в Joomla 2.5? (Как у материалов)?

Автор nia

Ответов: 7
Просмотров: 5937
Последний ответ 29.03.2021, 12:10:26
от sivers
Конструктор страниц (Page Builder) для Joomla 2.5

Автор nia

Ответов: 4
Просмотров: 1882
Последний ответ 14.03.2021, 12:17:35
от nia