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

vlanis

  • Осваиваюсь на форуме
  • 19
  • 5 / 0
JoomFish я под 1.6 не нашёл. Кстати и чего то подобного тоже нету.
« Последнее редактирование: 29.08.2013, 09:55:41 от b2z »
*

vlanis

  • Осваиваюсь на форуме
  • 19
  • 5 / 0
*

vlanis

  • Осваиваюсь на форуме
  • 19
  • 5 / 0
Блин, много прочитал, не бейте сразу...
1. Флажочки (картинки) надо куда-то закидывать или как? Добавил модуль, включил плагин, в main menu добавил 2 пункта, один принадлежит русскому, другой английскому языку. Написал 2 статьи одна русская, другая английская, появился модуль в нужной позиции (заголовок его), но самой переключалки языков я не увидел.
2. Если статьи переключать с помощью кнопок next и prew то они чередуются, хотя принадлежат разным языкам... как это?
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
1. Флажочки должны сами появляться. Но походу какой-то баг. Я проверил, у меня на тестовом сайте тоже не появляются...
2. Фиг знает =)
*

vlanis

  • Осваиваюсь на форуме
  • 19
  • 5 / 0
Не пойму, но люди же делают, пол форума обсуждает тему мультиязычности! Хрен с ними с флажками, даже текстовое переключение не появляется. Что то тут не так.
*

vlanis

  • Осваиваюсь на форуме
  • 19
  • 5 / 0
Короче разобрался. Решение нашлось на забугорном оффициальном форуме. Один дядька (infograf768) пишет:

Цитировать
I am going to repeat myself...

What has changed in 1.6.2 (not 1.6.3) is that each content language needs to have a specific published DEFAULT HOME PAGE menu item set in a specific menu, tagged to THAT content language and displayed by a specific menu module tagged to the same language.

Otherwise, the langswitcher will not display the flag.

Означает что надо в главной менюхе завести обязательно два пункта один типа "Главная", другой "Home" специально для русского и англицкого языков и каждому из пунктов назначить главную страницу (нажать в менеджере меню на неактивную звёздочку). Вот тогда флажки и появяца. Хух.
« Последнее редактирование: 08.05.2011, 01:49:45 от vlanis »
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

neguru

  • Новичок
  • 1
  • 0 / 0
Я делал, вернее делаю немецко-русский сайт по вот этим материалам:
http://docs.joomla.org/Language_Switcher_Tutorial_for_Joomla_1.6
http://joomla.mirocommunity.org/video/490/en0015-joomla-16-multi-languag
http://forum.joomla.org/viewtopic.php?p=2391457
Советую начать с видео. Там все есть.
Делайте как в видео, только СНАЧАЛА создайте парочку материалов для каждого языка,
а потом по ходу ПРИВЯЖИТЕ к ним соответствующие пункты меню.
В фильме это сделано как-то не явно, а это важно.
помучился , правда, изрядно пока понял почему флажки не видны http://forumr.de
Сейчас ковыряю его потихоньку дальше.
Успехов
 ^-^
*

kolias23

  • Новичок
  • 8
  • 4 / 0
1.
В Расширения/Менеджер языков/Языки контента создайте нужную Вам языковую локализацию, например:
Заголовок: Русский (RU)
Заголовок в 'Родном' языке: Русский (RU)
Код языка для URL: ru
Префикс изображения: ru
Тег языка: ru-RU

2.
Создайте меню с необходимыми языками, например:
- Menu (EN), алиас en
- Меню (RU), алиас ru
- Меню (UA), алиас ua

3.
В каждом меню создайте главную страницу с Избранные материалы и установите необходимые языковые настройки. Страница создана по умолчанию не учитывается.

4.
В Менеджер материалов создайте материал для каждой главной страницы с соответствующими языковыми настройками. После создания присвойте ему Избранные.

5.
В Расширения/Менеджер модулей создайте модуль Переключение языков и укажите необходимое месторасположение.

6.
В Расширения/Менеджер плагинов включите Система - Фильтр языка

7.
В каждом меню
- Menu (EN) - Home
- Меню (RU) - Главная
- Меню (UA) - Головна
Установите опубликовывать на главной

Самое главное:
Страницу которая была создана по умолчанию установите доступ Special, так Вы скроете ее от вывода
« Последнее редактирование: 03.07.2011, 00:02:58 от kolias23 »
*

kolias23

  • Новичок
  • 8
  • 4 / 0
greddy рад был помочь, сам долго мучился.
« Последнее редактирование: 04.07.2011, 04:39:36 от kolias23 »
*

CUBICK

  • Осваиваюсь на форуме
  • 12
  • 0 / 0
у меня как не крути при включении модуля выдает

Warning: Invalid argument supplied for foreach() in  ....\modules\mod_languages\helper.php on line 42
Warning: Invalid argument supplied for foreach() in ....\modules\mod_languages\tmpl\default.php on line 29


а если включаю плагин сайт ложится

п.с. Joomla 1.7
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
CUBICK, а на стандартном шаблоне как?
Я с мобильного, в основном...
*

iuranemo

  • Осваиваюсь на форуме
  • 13
  • 1 / 0
*

vladis15

  • Осваиваюсь на форуме
  • 15
  • 0 / 0
Нужна помощь   !  . Сайт на J 2.5 . Мозг сломал и ни фига не получается. Буду благодарен за помощь. почта phcom1@ya.ru  пишите туда, скину пароль  к админке
*

center-plast

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Нужна помощь   !  . Сайт на J 2.5 . Мозг сломал и ни фига не получается. Буду благодарен за помощь. почта phcom1@ya.ru  пишите туда, скину пароль  к админке

я в такой же ситуации. смог решить проблему?
*

Жиров

  • Новичок
  • 7
  • 2 / 0
2center-plast, vladis15.

Нахожусь в той-же примерно ситуации, как и вы, но немного продвинулся, может что вылезет позже, но пока вроде все получилось..

Ориентируйтесь на пост kolias23 выше, там правильный порядок действий. Сейчас попробую дополнить его пост.

п1.- все так и вроде все понятно.
п.2- это делать в Меню\Менеджер Меню\Добавить новое меню. Только я названия им давал не как kolias23- Меню (UA), например, а  Main Menu(UA). Но, наверное, название ни на что не влияет. Тип меню ставил mainmenuua - для украинского и так далее, отличие - 2 проследние буквы. Новый тип меню появится в списке Меню. По умолчанию Main Menu на английском языке, но новое меню Main Menu(UK)- тоже делайте, невзирая на это. В общем, новые меню на все языки, которые будут на сайте.
п.3 - тоесть, например, для англ. языка Меню\Main Menu(UK)(то, что создали)\Добавить новый пункт меню.  И добавляем пункт Home, но в его настройках указываем Язык=Англ. Аналогично для Main Menu(RU) - пункт Главная, язык-русс., и так все языки.
п.4 Вроде ясно.
п.5 Тоже понятно.
п.6 Понятно.
п.7 Важно! Флажки без этого не появятся. Я полдня об стену головой бился, чуть не убился, пока дошло. :) Открываете в Меню соответствующий пункт и тыкаете по звездочке "Главная страница". Появляется флажок языка, если правильно обозначили код, префикс и тег языка когда делали п.1

И, как написано, скрываете прежнюю главную страницу, получаете новую, с переключением между языками, но пустую..


Добавлю теперь от себя:

У меня сайт был с материалом, на Англ.языке, , и я хотел перенести все это в многоязычный. Для этого я скопировал в новом пункте Home все настройки, какие были для старого пункта Home. Потом в новое меню Main Menu(UK) (английское)переназначил все пункты, которые были в старом Main Menu(тоже англ., весь контент был только англ.). Для переноса открываете пункт меню для редактирования и ставите привязку к Main Menu(UK) вместо Main Menu в настройках.

Ну и, вроде, все перенеслось, как было в старом сайте, все пункты меню, и стало открываться на главной, и по всем пунктам, как и было.

Теперь сажусь делать переводы и привязывать к этим пунктам пункты меню со статьями на других языках.
*

b2z

  • Глобальный модератор
  • 7284
  • 778 / 0
  • Разраблю понемногу
*

Жиров

  • Новичок
  • 7
  • 2 / 0
Еще нашел. Все пункты меню каждого языка вовсе не обязательно держать (и создавать) в меню конкретных языков (которые мы делали, как описано, в п.2 выше и добавляли в него главный пункт меню в п.3)
В том меню можно оставить только этот главный пункт, который пометился флажком языка, а все остальные пункты меню этого языка можно создавать в общем для всех языков меню, только ставить им конкретный язык и привязывать к пунктам на других языках.

Где это важно - например я уперся в это при использовании модуля S5 Flex Menu, он привязывает и отображает только одно, назначенное ему меню, а всех остальных в упор не видит, а исполняет при этом роль главного меню сайта. Соответственно, при переключении на меню любого языка, кроме назначенного для этого модуля, пропадают все кнопки меню в этом модуле. Поэтому я свалил в одно меню все пункты разных языков, и назначил это меню данному модулю. И все заработало.
Единственное "но"- главный пункт меню, "Home", или там "Главная" - будет один, общий для всех. Если кто знает, как можно отображать этот пункт разными языками- буду благодарен. Причем именно в этом модуле S5 Flex Menu, а не в обычном меню. Как-то может и можно, настройки главной страницы то он берет все равно из пункта другого меню? А может и низзя? Не знаю.

Да, еще, хоть главный пункт и показывает общим для всех (одинаковой кнопкой), но при переключении между языками главную страницу (Номе, или там Главная) настраивает в соответствии с настройками пункта меню для главной страницы текущего языка. Так что их все нужно отстроить одинаково, если хотите чтоб главная страница выглядела одинаково во всех языках. Вроде и недостаток, но если хотите сделать для разных языков разное наполнение сайта- то достоинство наоборот. Даже главную страницу можно разной сделать, а не только вторые страницы.
« Последнее редактирование: 21.03.2012, 04:56:23 от Жиров »
*

_ib_

  • Давно я тут
  • 673
  • 100 / 8
новичкам также рекомендуется к просмотру:
Легальные шаблоны и дёшево!  + скидки до 50% для шаблонов клуба Joomlart, RocketTheme, Yootheme и Gavick.

при интересе пишите в личку или на мыло: "p" точка "d" собака gmx.de
*

DKsN

  • Захожу иногда
  • 258
  • 15 / 0
  • [BODY]
новичкам также рекомендуется к просмотру:
Тут далеко и не новички английского не знают в должной степени, так что рекомендация, имхо, малость пролетает мимо.
Да и собственно, или я мож ниалё, это форум РУССКОЙ поддержки Joomla, что за мода - отсылать к примерам на "вражих" языках? Кто знает языки, тот и сам всё найдёт на ино-сайтах.
___________________________________________________________________________________________________________

Флаги не хотят показываться никак(
J2.5

Делаю сайт на 4х языках: рус, англ, турецкий и немецкий.
-Сделал языки контента (2+2 новых)
-Сделал меню по псевдонимам пунктов меню, с соответственными языками (4 шт)
-Сделал 4 категории материалов, соответсвенно языкам
-Разместил 4 одинаковых статьи на разных языках и в соответсвующих категориях материалов

Все четыре материала указаны для показа на главной, и по-тому, что теперь показывается лишь статья на русском, я понимаю, что мультиязычность работает на этом сайте. Хотя не проверял больше никак.

Собственно вот сайт
Код
http://3dpoptv.com/

Плагины и модуль мультиязычности включены, но флагов нет. И названия языков не появляются, как настройки не выставлял. Появляется только выподающая менюшка, но и она не выпадает, одна видимость.
ЧЯДНТ?
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Решилось http://joomlaforum.ru/index.php/topic,214750.msg1124502.html#msg1124502
« Последнее редактирование: 01.05.2012, 12:59:52 от DKsN »
*

aleksi2004

  • Осваиваюсь на форуме
  • 11
  • 0 / 0
Fatal error: Using $this when not in object context in /home/modelee/public_html/libraries/joomla/plugin/plugin.php on line 103
КАК исправить?
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Во вкладке Языки контента ошибка 500 была. (исправил)
Менеджер Расширений - База данных
Вверху справа кнопка "Исправить"
После этого 500 ошибка изчезла
« Последнее редактирование: 06.06.2012, 18:44:12 от Dobreff »
*

Dobreff

  • Захожу иногда
  • 214
  • 10 / 4
Где это важно - например я уперся в это при использовании модуля S5 Flex Menu, он привязывает и отображает только одно, назначенное ему меню, а всех остальных в упор не видит,
Так сделай ДВА модуля. Один отображается в одном меню, другой в другом.
Разве проблема?
*

Жиров

  • Новичок
  • 7
  • 2 / 0
Так сделай ДВА модуля. Один отображается в одном меню, другой в другом.
Разве проблема?
Вот холера. Чё ж меня так переклинило. это-ж модули и разноязычные сайты фактически разные сайты, а не один. Спасибо, КО, плюсик вам.
*

VadimNExt

  • Захожу иногда
  • 154
  • 24 / 0
А Easy Language плагин, почему ни кто не использует?
Идея не нова, что-то подобное предлагалось и для Joomla 1.5
Суть в том, что для всех языков используется общие материалы, меню и пр.
Текст, например в материале выделяется тегами вида::
Код
{lang en}Text english{/lang}.
"en" - это параметр по которому фильтрует контент плагин для показа, и он совпадает с URL в настройках для каждого языка.

Самое главное, что эти-же теги вставляются и в поля названий меню, категорий, метатегов, а так-же непосредственно в сам HTML код контента.

Вот ссылка на плагин:
http://extensions.joomla.org/extensions/languages/multi-lingual-content/19439

А вот скрины поясняющие работу плагина:


[вложение удалено Администратором]
« Последнее редактирование: 08.07.2012, 04:49:23 от VadimNExt »
*

Sulpher

  • Живу я здесь
  • 2126
  • 402 / 16
  • Шаблоны и расширения Joomla
*

azx

  • Осваиваюсь на форуме
  • 32
  • 2 / 0
  • Алексей
Самое главное:
Страницу которая была создана по умолчанию установите доступ Special, так Вы скроете ее от вывода

После того как все пункты разошлись по языкозависимым меню, в исходном меню осталась только Главная для ВСЕХ языков. Скрыть ее назначив доступ Special, означает, что залогинившийся пользователь этот пункт все-таки увидит. Проще скрыть или совсем удалить привязанный к этому меню модуль.
Я сделал так - работает.
*

Torchez

  • Захожу иногда
  • 96
  • 5 / 0
Доброго дня!

Не выводятся статьи второго языка. Изначально сайт был на русском, но соответствующего языка в контенте не было. Добавил язык, добавил меню, нужно включил, в общем, вроде все сделал по ФАКу. Русскоязычная часть сайта (на первый взгляд) выводится нормально, в английской выводятся модули, но не выводятся сами статьи. При вводе прямого URL статьи она отображается, а в блоге – пусто.

Плюс, при включении плагина Language Filter перестает работать модуль Related Articles.

Выручайте.
*

capricorn

  • Завсегдатай
  • 1949
  • 118 / 3
Цитировать
в английской выводятся модули, но не выводятся сами статьи

Надо создать 2 скрытых меню для статей на обоих языках -по одному для каждого. Пункт меню - статья. Потом связать пункты меню и все будет нормально переключаться. И есть новости, что вышла JoomFish для Joomla 2.5.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться