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

Re: PhocaGallery 2.1.0 RC
« Ответ #30 : 06.04.2010, 01:53:33 »
У меня версия 2.6.2, последний метод скрытия не помог.
administrator\components\com_phocagallery\libraries\phocagallery\render\renderfront.php
Код
function getString() {
return '<'.'d'.'i'.'v'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'visibility:hidden;'.' '.'''t'.'e'.'x'.'t'.'-'.'a'.'l'.'i'.'g'.'n'.':'.' '.'c'.'e'.'n'.'t'.'e'.'r'.';'.' '.'c'.'o'.'l'.'o'.'r'.':'.' '.'r'.'g'.'b'.'('.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.')'.';'.'"'.'>'.'P'.'o'.'w'.'e'.'r'.'e'.'d'.' '.'b'.'y'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.'>'.'P'.'h'.'o'.'c'.'a'.'<'.'/'.'a'.'>'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'/'.'p'.'h'.'o'.'c'.'a'.'g'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.' '.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.'>'.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'<'.'/'.'a'.'>'.'<'.'/'.'d'.'i'.'v'.'>';
}
Код
function getString() {
return '<'.'d'.'i'.'v'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'v'.'i'.'s'.'i'.'b'.'i'.'l'.'i'.'t'.'y'.':'.'h'.'i'.'d'.'d'.'e'.'n'.';'.' '.'''t'.'e'.'x'.'t'.'-'.'a'.'l'.'i'.'g'.'n'.':'.' '.'c'.'e'.'n'.'t'.'e'.'r'.';'.' '.'c'.'o'.'l'.'o'.'r'.':'.' '.'r'.'g'.'b'.'('.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.','.' '.'2'.'1'.'1'.')'.';'.'"'.'>'.'P'.'o'.'w'.'e'.'r'.'e'.'d'.' '.'b'.'y'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'"'.'>'.'P'.'h'.'o'.'c'.'a'.'<'.'/'.'a'.'>'.' '.'<'.'a'.' '.'h'.'r'.'e'.'f'.'='.'"'.'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'.'/'.'p'.'h'.'o'.'c'.'a'.'g'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.' '.'s'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.' '.'n'.'o'.'n'.'e'.';'.'"'.' '.'t'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n'.'k'.'"'.' '.'t'.'i'.'t'.'l'.'e'.'='.'"'.'P'.'h'.'o'.'c'.'a'.' '.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'"'.'>'.'G'.'a'.'l'.'l'.'e'.'r'.'y'.'<'.'/'.'a'.'>'.'<'.'/'.'d'.'i'.'v'.'>';
}
не помагают избавится от копирайта...

Есть вот еще пост на другом форуме...http://joomla-support.ru/post85008-3.html. Я убрал $tmpl['ab'] = base64_decode... , но при редактировании render.php сайт не отображается, поэтому я его оставил - копирайт пропал на главной странице, но при виде категории он появляется (((

Вы неправильно встроили код, смотрите внимательнее. Если сделать точно как на примере mgm - все работает.
*

ЖиВоЙ

  • Захожу иногда
  • 362
  • 3 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #31 : 07.04.2010, 15:15:31 »
с обеими проблемами разобрался сам. и спешу поделиться способом убирания копирайта:
открываем /administrator/components/com_phocagallery/helpers/phocagallery.php

находим функцию
Код
function getPhocaInfoCode($display_phoca_info)
    {
        $version    = PhocaGalleryHelper::getPhocaVersion();
        $output    = '';
        if ($display_phoca_info != 0) {
            $output        .= '';
        }
        
        if ($display_phoca_info == 1) {
            $output    .= '<a href="http://www.phoca.cz/" style="text-decoration:none" target="_blank" title="Phoca Gallery">'. JHTML::_('image', 'components/com_phocagallery/assets/images/icon-phoca-logo.png', 'Phoca Gallery'). '</a>';
            $output    .= ' <a href="http://www.phoca.cz/" style="text-decoration:none" target="_blank" title="Phoca Gallery">'. $version .'</a>';
        }
        if ($display_phoca_info == 2 || $display_phoca_info == 3) {
            $output    .= '<a href="http://www.phoca.cz/" style="text-decoration:none" target="_blank" title="Phoca Gallery">'. JHTML::_('image', 'components/com_phocagallery/assets/images/icon-phoca-logo.png', 'Phoca Gallery'). '</a>';
        }
        
        if ($display_phoca_info == 4) {
            $output    .= ' <a href="http://www.phoca.cz/" style="text-decoration:none" target="_blank" title="Phoca Gallery">Phoca Gallery</a>';
        }
        
        if ($display_phoca_info == 5) {
            $output    .= ' <a href="http://www.phoca.cz/" style="text-decoration:none" target="_blank" title="Phoca Gallery">Phoca Gallery '.$version.'</a>';
        }
        
        if ($display_phoca_info == 6) {
            $output    .= ' <a href="http://www.phoca.cz/" style="text-decoration:none" target="_blank" title="Phoca Gallery">'. JHTML::_('image', 'components/com_phocagallery/assets/images/icon-phoca-logo-seal.png', 'Phoca Gallery'). '</a>';
        }
        
        if ($display_phoca_info != 0) {
            $output        .= '</div>';
        } else {
            $output        .= '<!-- <a href="http://www.phoca.cz/">site: www.phoca.cz | version: '.$version.'</a> -->';// info for developers, need not to ask for the PhocaGallery version....
        }
        
        return $output;
    
    }

заменяем на
Код
function getPhocaInfoCode($display_phoca_info)
    {
        $version    = PhocaGalleryHelper::getPhocaVersion();
        $output    = '';
        if ($display_phoca_info != 0) {
            $output        .= '';
        }
        
        if ($display_phoca_info == 1) {
            $output    .= '';
        }
        if ($display_phoca_info == 2 || $display_phoca_info == 3) {
            $output    .= '';
        }
        
        if ($display_phoca_info == 4) {
            $output    .= '';
        }
        
        if ($display_phoca_info == 5) {
            $output    .= '';
        }
        
        if ($display_phoca_info == 6) {
            $output    .= '';
        }
        
        if ($display_phoca_info != 0) {
            $output        .= '';
        } else {
            $output        .= '';
        }
        
        return $output;
    
    }

« Последнее редактирование: 28.01.2011, 12:59:17 от smart »
*

ЖиВоЙ

  • Захожу иногда
  • 362
  • 3 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #32 : 08.04.2010, 23:40:36 »
по какой причине картинка при клике может показывать это:
"Вы не можете посетить текущую страницу потому, что:
просроченная закладка/избранное
поисковый механизм, у которого просрочен список для этого сайта
пропущен адрес
у вас нет прав на эту страницу
Запрашиваемый ресурс не был найден.
В процессе обработки вашего запроса произошла ошибка." ??

сама картинка загружена в категорию, раньше отображалась нормально. сегодня случайно залез - и на тебе...
*

ЖиВоЙ

  • Захожу иногда
  • 362
  • 3 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #33 : 09.04.2010, 01:35:21 »
исправилось только после включения в параметрах Detail Window - Highslide (image only) или Modal popup box (image only)...
*

keks20

  • Захожу иногда
  • 75
  • 0 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #34 : 08.10.2010, 00:50:37 »
Ребята подскажите как разбить выводимую галерею на несколько страниц. Чтоб все картинки (100 шт. допустим) не шли на обной странице.
Спасибо за помощь. Галерея 2.7.3
*

Gazinur

  • Захожу иногда
  • 60
  • 0 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #35 : 11.11.2010, 18:11:39 »
Здравствуйте! Почему-то у меня в админской части PhocaGallery нет таких настроек, как "Детальный вид", "Водяной знак", "Параметры слайд-шоу". Подскажите, пожалуйста, что делать? Дополнительно что-то установить нужно?
*

beliy-linuxoid

  • Захожу иногда
  • 123
  • 1 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #36 : 20.05.2011, 13:02:56 »
вот для 2.7.5:

Комментируем номера строк в файлах:

83: /components/com_phocagallery/views/category/view.html.php
83: /administrator/components/com_phocagallery/front/views/category/view.html.php

//$tmpl['lm'] = '<'.'d'.'i'.'v'.' '.'s'.'t'.'y'.'l'.'e'.'='...

Ищем функции getString() и getDivs() и изменяем на return '';

551, 687-699: /administrator/components/com_phocagallery/libraries/phocagallery/render/renderfront.php

Далее:

507:/components/com_phocagallery/views/categories/tmpl/default.php
507:/administrator/components/com_phocagallery/front/views/categories/tmpl/default.php
*

woodooi

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

ntxp

  • Осваиваюсь на форуме
  • 29
  • 0 / 0
Re: PhocaGallery 2.1.0 RC
« Ответ #38 : 27.11.2014, 11:12:27 »
Добрый день, коллеги :)

Имею Фоку версии 2.8.1  на Joomla 1.5. Так же, как и топикстартера, не пускает редактировать некоторые категории, пишет " PhocaGallery Categories Категория2 сейчас редактируется другим администратором"

Подскажите, как можно это побороть? Пробовал подождать какое-то время - не помогает :(
« Последнее редактирование: 28.11.2014, 12:52:41 от ntxp »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Phoca и Google

Автор Alex_gs

Ответов: 0
Просмотров: 2610
Последний ответ 15.02.2021, 15:37:57
от Alex_gs
Не могу установить Phoca Gallery

Автор No_LiMiT

Ответов: 113
Просмотров: 46818
Последний ответ 25.01.2018, 10:16:01
от Zolushka
Phoca Galley. Как при выводе родительской категории отобразить изображения всех дочерних категорий?

Автор Igoritaly

Ответов: 0
Просмотров: 1961
Последний ответ 15.04.2017, 19:05:50
от Igoritaly
Phoca gallery

Автор user

Ответов: 387
Просмотров: 123080
Последний ответ 09.12.2015, 21:00:16
от demyan
Phoca Gallery. Вывод последних фото.

Автор rich-hb

Ответов: 14
Просмотров: 8127
Последний ответ 30.04.2015, 07:05:11
от koyot777