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

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
многосайтовость
« : 27.08.2012, 21:39:33 »
Народ, можно на пальцах рассказать(написАть), как создать субдомен. Хочу подключить к одной базе данных, чтоб форум, пользователи и т.д и т.п пользовались двумя сайтами без лишних напрягов...Заранее спасибо!
*

Sulpher

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

ELLE

  • Глобальный модератор
  • 4510
  • 893 / 0
Re: многосайтовость
« Ответ #2 : 27.08.2012, 21:49:51 »
Sulpher, сами пользовались данным расширением?
Интересует возможность единой файловой системы + подключение разных БД.

upd: вроде как с одной БД работает, хотя надо посмотреть что оно умеет=)
« Последнее редактирование: 27.08.2012, 21:56:36 от ELLE »
*

Sulpher

  • Живу я здесь
  • 2126
  • 402 / 16
  • Шаблоны и расширения Joomla
Re: многосайтовость
« Ответ #3 : 27.08.2012, 22:03:18 »
Sulpher, сами пользовались данным расширением?
Интересует возможность единой файловой системы + подключение разных БД.

upd: вроде как с одной БД работает, хотя надо посмотреть что оно умеет=)
Да, на полигоне пробовал - получилось поддомены генерировать. То есть, в компоненте указываем, какой пункт меню делать поддоменом. Но потом отказался от этого решения, т.к. решил, что с точки зрения SEO лучше держать контент в пределах одного адреса (в рамках того сайта).
Насчет разных баз не подскажу, не помню.
*

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: многосайтовость
« Ответ #4 : 27.08.2012, 22:41:36 »
Воспользуйтесь расширением Virtual Domains
а если без них - расширений?
Как вкрутить в одну и ту же Joomla, и в одну БД еще один сайт - субдомен?
*

RoooMka

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
  • RoooM
Re: многосайтовость
« Ответ #5 : 27.08.2012, 23:13:40 »
Заливайте инсталляшку Joomla на субдомен, а при инсталляции указывайте ранее созданную базу, к которой подключен второй сайт.
Логины пароли точно такие, как на первом сайте. Должно работать.
Одна джумла на 2-х доменах работать не будет, разве что редиректами... в категорию, которую не светить на основном домене.
Но смысл таких извратов? Опишите чего добиться хотите? Есть варианты двух сайтов на 2-х базах, но одна база основная, другая - синхронная с основной. В поиске - репликация Mysql
« Последнее редактирование: 27.08.2012, 23:21:26 от RoooMka »
*

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: многосайтовость
« Ответ #6 : 27.08.2012, 23:27:57 »
Заливайте инсталляшку Joomla на субдомен, а при инсталляции указывайте ранее созданную базу, к которой подключен второй сайт.
Логины пароли точно такие, как на первом сайте. Должно работать.
Одна Joomla на 2-х доменах работать не будет, разве что редиректами... в категорию, которую не светить на основном домене.
Но смысл таких извратов? Опишите чего добиться хотите? Есть варианты двух сайтов на 2-х базах, но одна база основная, другая - синхронная с основной. В поиске - репликация Mysql
мне как раз нужна одна база, так как форум, любое другое общение будет на основном домене, а субдомен - новостной сайт
*

Sulpher

  • Живу я здесь
  • 2126
  • 402 / 16
  • Шаблоны и расширения Joomla
Re: многосайтовость
« Ответ #7 : 28.08.2012, 00:07:26 »
а если без них - расширений?
Как вкрутить в одну и ту же Joomla, и в одну БД еще один сайт - субдомен?
все просто. хостинг панель - делаете поддомен. устанавливаете Joomla в него, БД указываете ту же самую, только префикс другой. будет вам две разные Joomla в одной бд, один сайт на поддомене.
*

RoooMka

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
  • RoooM
Re: многосайтовость
« Ответ #8 : 28.08.2012, 00:16:58 »
Если на пальцах, то:
1 на хостинге заводите субдомен (к основному), например news.domen.ru (основной - domen.ru)
настройки спрашивайте у хостера (не стесняйтесь - они всегда подсказывают клиентам, а то и сами настраивают)
2 по фтп заливаете в папку поддомена news инсталляшку Joomla (лучше ту же, что и на основном, для совместимости)
3 инсталлируете зайдя на поддомен, в настройках пишете те же данные, что вписывали при инсталляции
на 4-ом шаге НЕ ВЫБЕРИТЕ (случайно) удалить старые таблицы
4 удалите папку installation

Все! Дизайн другой, сайт другой - база одна.
*

RoooMka

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
  • RoooM
Re: многосайтовость
« Ответ #9 : 28.08.2012, 00:18:32 »
все просто. хостинг панель - делаете поддомен. устанавливаете Joomla в него, БД указываете ту же самую, только префикс другой. будет вам две разные Joomla в одной бд, один сайт на поддомене.
Если поменять префикс таблиц - то пользователи основного сайта заново должны регистрироваться на сайте поддоменном
*

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: многосайтовость
« Ответ #10 : 28.08.2012, 08:26:54 »
Если поменять префикс таблиц - то пользователи основного сайта заново должны регистрироваться на сайте поддоменном
а если не поменять какие глюки будут с базой?..и куда ставить папку с сайтом на денвере?
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Re: многосайтовость
« Ответ #11 : 28.08.2012, 08:52:12 »
а если не поменять какие глюки будут с базой?..и куда ставить папку с сайтом на денвере?
Если у вас и на домене и на поддомене будет одна база с одинаковым префиксом, то это просто означает, что опубликованный материал на, например, поддомене тут же будет опубликован и на основном домене.
И, вообще, не понятно зачем все это городить?
Кстати, не факт, что удастся реализовать 2 разных шаблона при условии, что база общая с одинаковым префиксом.
Ради интереса, попробую сегодня реализовать этот эксперимент, т.е. подключу две Joomla к одной базе, отпишу результат.

Не понятна вторая часть вопроса
Цитировать
и куда ставить папку с сайтом на денвере?
Что имеете ввиду?
*

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: многосайтовость
« Ответ #12 : 28.08.2012, 09:13:22 »
Если у вас и на домене и на поддомене будет одна база с одинаковым префиксом, то это просто означает, что опубликованный материал на, например, поддомене тут же будет опубликован и на основном домене.
И, вообще, не понятно зачем все это городить?
Кстати, не факт, что удастся реализовать 2 разных шаблона при условии, что база общая с одинаковым префиксом.
Ради интереса, попробую сегодня реализовать этот эксперимент, т.е. подключу две Joomla к одной базе, отпишу результат.

Не понятна вторая часть вопросаЧто имеете ввиду?
как создать субдомен на денвере?
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Re: многосайтовость
« Ответ #13 : 28.08.2012, 09:17:51 »
как создать субдомен на денвере?
Так же, как и на хостинге
Основные домены (сайты) - это папки:
z:/home/my_site1
z:/home/my_site2
z:/home/my_site3
Поддомены - это папки:
z:/home/my_site1/my_p1
z:/home/my_site2/my_p1
z:/home/my_site3/my_p1
« Последнее редактирование: 28.08.2012, 09:22:51 от SK »
*

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: многосайтовость
« Ответ #14 : 28.08.2012, 09:32:47 »
Так же, как и на хостинге
Основные домены (сайты) - это папки:
z:/home/my_site1
z:/home/my_site2
z:/home/my_site3
Поддомены - это папки:
z:/home/my_site1/my_p1
z:/home/my_site2/my_p1
z:/home/my_site3/my_p1
спасибо...жду результата вашего эксперимента)
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Re: многосайтовость
« Ответ #15 : 28.08.2012, 09:43:56 »
спасибо...жду результата вашего эксперимента)
Результат Вас, скорее всего разочарует!
Если хотите иметь на основном домене форум, а на поддомене сайт на Joomla (или наоборот), то не надо ни чего придумывать - все уже придумано.
Ставите форум, например, phpBB. Форумы, написанные для Joomla, как правило значительно уступают самостоятельным форумам.
Ставите Joomla.
При чем лучше в разные базы - не будут мешать друг другу.
По любому, лучше на хостинге ворочать 2 базы, чем 1 большую
Если на сайте под Joomla будет регистрация пользователей (кстати, зачем она там? Многие уперлись в эту регистрацию/авторизацию на сайтах, не используя это ни как.), то поставите "мост" для синхронизации пользователей.
Собственно говоря, и все!
*

SK

  • Живу я здесь
  • 2155
  • 164 / 0
Re: многосайтовость
« Ответ #16 : 28.08.2012, 10:12:26 »
Поставил я два сайта под Joomla в одну базу с одинаковым префиксом.
Ни какой практической пользы от этого нет.
Как и предполагал, публикация/снятие с публикации материалов, модулей - отражается на обоих сайтах.
Кроме того, нельзя под одним пользователем одновременно зайти в админ.панель на обоих сайтах.
Так что, не понятно за чем это городить.
Если же ставить две Joomla в одну базу с разными префиксами, то тоже не понятно зачем.
Какой смысл в этом? Ну, разве что, если хостинг дешевый и нельзя больше одной базы создавать.
*

RoooMka

  • Осваиваюсь на форуме
  • 36
  • 0 / 0
  • RoooM
Re: многосайтовость
« Ответ #17 : 28.08.2012, 17:49:06 »
По поводу регистрации в joomla  - SK прав - сплошной спам валит.
Сношу на сайтах даже кнопку ЗАРЕГИСТРИРОВАТЬСЯ.
Кому нужна подписка юзеров - есть соответствующие компоненты,
а рассылка Joomla даже письма не шлет.

http://www.rooom.com.ua/component/user/login.php
*

kozanostra

  • Осваиваюсь на форуме
  • 32
  • 0 / 0
Re: многосайтовость
« Ответ #18 : 02.09.2012, 15:40:36 »
Результат Вас, скорее всего разочарует!
Если хотите иметь на основном домене форум, а на поддомене сайт на Joomla (или наоборот), то не надо ни чего придумывать - все уже придумано.
Ставите форум, например, phpBB. Форумы, написанные для Joomla, как правило значительно уступают самостоятельным форумам.
Ставите Joomla.
При чем лучше в разные базы - не будут мешать друг другу.
По любому, лучше на хостинге ворочать 2 базы, чем 1 большую
Если на сайте под Joomla будет регистрация пользователей (кстати, зачем она там? Многие уперлись в эту регистрацию/авторизацию на сайтах, не используя это ни как.), то поставите "мост" для синхронизации пользователей.
Собственно говоря, и все!
а как сделать этот мост?
если сделать регу через соц.сети?..или это не упростит пользователям жизнь?
*

Maxum

  • Давно я тут
  • 689
  • 32 / 1
Re: многосайтовость
« Ответ #19 : 03.09.2012, 14:50:58 »
О многосайтовости, подскажите, пожалуйста. Есть сайт, несколько основных страниц, есть некоторое количество статей в K2, товары в JoomShopping.
Цель - сделать второй сайт с другим дизайном, но теми же разделами, товарами и статьями K2 (вот надо им). Как проще это сделать? Скопировать папку с сайт1.ru в папку сайт2.ru и подсунуть сайту2 базу от первого?
Если да, то как это сделать? Массово поменять префикс?
*

MuxaS

  • Захожу иногда
  • 78
  • 3 / 0
Re: Многосайтовость
« Ответ #20 : 31.05.2015, 09:37:12 »
Цитировать
Так что, не понятно за чем это городить.
Если же ставить две Joomla в одну базу с разными префиксами, то тоже не понятно зачем.
Что же непонятного! Допустим, есть портал, основной сайт - site.ru. Есть у многих желание сделать разделы сайта на поддоменах - job.site.ru, news.site.ru и т.п.
Естественно, на каждом поддомене будет стоять своя Joomla со своим набором компонентов.
Задача - организовать общую базу пользователей на основном сайте, чтобы людям не надо было снова регистрироваться на поддоменах.
Странно, что за столько лет не появилось такой штатной функции в Joomla, просто удивительно! В Друпале это есть изначально.
*

KKAAZZOO

  • Живу я здесь
  • 2288
  • 118 / 9
Re: Многосайтовость
« Ответ #21 : 31.05.2015, 12:34:16 »
Мультисайтовость реализуется дополнительными расширениями. Если хотите в Joomla возможности мультисайтовости  как у Друпал то используйте CCK Seblod
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться