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

dynamit

  • Завсегдатай
  • 1744
  • 265 / 0
  • Winter Is Coming
1. Как разрешить незарегистрированным пользователям ставить рейтинг?
(по мотивам решения для версии J!1.5)

Необходимо закомментировать следующие строки в следующих файлах:

components/com_phocagallery/views/category/tmpl/default_rating.php
строки 18-42


/*if ($this->tmpl['alreadyrated']) {
	

	
	
echo '<ul class="star-rating">'
	
	
	
.'<li class="current-rating" style="width:'.$this->tmpl['voteswidth'].'px"></li>'
	
	
	
.'<li><span class="star1"></span></li>';
	

	
	
for ($i = 2;$i < 6;$i++) {
	
	
	
echo '<li><span class="stars'.$i.'"></span></li>';
	
	
}
	
	
echo '</ul>'
	
	
    .'<p>'.JText::_('COM_PHOCAGALLERY_RATING_ALREADY_RATED').'</p>';
	
	
	

	
} else if ($this->tmpl['notregistered']) {
	

	
	
echo '<ul class="star-rating">'
	
	
	
.'<li class="current-rating" style="width:'.$this->tmpl['voteswidth'].'px"></li>'
	
	
	
.'<li><span class="star1"></span></li>';
	

	
	
for ($i = 2;$i < 6;$i++) {
	
	
	
echo '<li><span class="stars'.$i.'"></span></li>';
	
	
}
	
	
echo '</ul>'
	
	
    .'<p>'.JText::_('COM_PHOCAGALLERY_COMMENT_ONLY_REGISTERED_LOGGED_RATE_CATEGORY').'</p>';
	
	
	

	
} else {*/


строка 52

   /*}*/

components/com_phocagallery/controllers/detail.php

строки 62-64

      /*if ($checkUserVote) {
	
	
	
$msg = JText::_('COM_PHOCAGALLERY_RATING_IMAGE_ALREADY_RATED');
	
	
} else {*/


строка 70

         //if ($access > 0 && $user->id > 0) {

строки 76-80

         /*} else {
	
	
	
	
$app->redirect(JRoute::_('index.php?option=com_users&view=login', false), JText::_('COM_PHOCAGALLERY_NOT_AUTHORISED_ACTION'));
	
	
	
	
exit;
	
	
	
}
	
	
}*/



ВСЕ. Теперь ставить рейтинг для изображений может любой пользователь.

2. Присутствовал странный глюк, может и не глюк, но мне не очень нравилось - при закрытии окна детального просмотра остается все на месте, да еще и без шаблона. Решил так (при закрытии окна переход в обзор категории)
administrator/components/com_phocagallery/libraries/phocagallery/render/renderdetailbutton.php


$close 
=  '<div class="pg-imgbgd"><a href="'.JRoute::_('index.php?option=com_phocagallery&view=detail&catid='.$catidSlug.'&id='.$idSlug.'&tmpl=component'.'&Itemid='JRequest::getVar('Itemid'1'get''int')).'" onclick="%onclickclose%" title="'.JText::_'COM_PHOCAGALLERY_CLOSE_WINDOW').'" >'JHTML::_('image''components/com_phocagallery/assets/images/icon-exit.' $this->_formaticonJText::_'COM_PHOCAGALLERY_CLOSE_WINDOW' )).'</a></div>';


меняем на


$close 
=  '<div class="pg-imgbgd"><a href="'.JRoute::_('index.php?option=com_phocagallery&view=component&catid='.$catidSlug.'').'" onclick="%onclickclose%" title="'.JText::_'COM_PHOCAGALLERY_CLOSE_WINDOW').'" >'JHTML::_('image''components/com_phocagallery/assets/images/icon-exit.' $this->_formaticonJText::_'COM_PHOCAGALLERY_CLOSE_WINDOW' )).'</a></div>';


3. Как разрешить незарегистрированным пользователям оставлять комментарии?
пока в планах. так же как и рейтинг категорий.



P.S.
ПЕРЕД НАЧАЛОМ МОДИФИКАЦИИ ФАЙЛОВ, НЕ ЗАБЫВАЙТЕ ДЕЛАТЬ РЕЗЕРВНЫЕ КОПИИ.


=================================================================
Русская локализация PhocaGallery v3.0.0 для J!1.6
=================================================================
 
« Последнее редактирование: 08.04.2011, 23:24:20 от dynamit »
ТАМ ГДЕ ТЫ НИЧЕГО НЕ МОЖЕШЬ, ТЫ НЕ ДОЛЖЕН НИЧЕГО ХОТЕТЬ
==========================================================
Сайты на Joomla!. Верстка. Консультации.  ||  Яндекс уже не ищет, он уже продает (с)  ||    Создание шаблона для Joomla 2.5
*

[A.L.FA]MedveDb

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #1 : 13.04.2011, 17:53:15 »
В этой версии не решена ли проблема с выбором заранее созданных категорий для загрузки изображений?
*

goodween

  • Новичок
  • 1
  • 0 / 0
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #2 : 14.04.2011, 08:18:15 »
Что то все равно рейтинг не ставится "простыми смертными":(
*

dynamit

  • Завсегдатай
  • 1744
  • 265 / 0
  • Winter Is Coming
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #3 : 14.04.2011, 09:38:21 »
[A.L.FA]MedveDb, вроде все по старому.
goodween, подробнее можно?
« Последнее редактирование: 14.04.2011, 09:55:38 от dynamit »
ТАМ ГДЕ ТЫ НИЧЕГО НЕ МОЖЕШЬ, ТЫ НЕ ДОЛЖЕН НИЧЕГО ХОТЕТЬ
==========================================================
Сайты на Joomla!. Верстка. Консультации.  ||  Яндекс уже не ищет, он уже продает (с)  ||    Создание шаблона для Joomla 2.5
*

[A.L.FA]MedveDb

  • Осваиваюсь на форуме
  • 26
  • 0 / 0
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #4 : 14.04.2011, 12:38:54 »
неужели никому на своем сайте эта возможность не стала актуальна и нет никакого решения?
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #5 : 21.04.2011, 23:15:58 »
закачивать фотки всем подряд:

в components/com_phocagallery/controllers/category.php находим и удаляем
Цитировать
if ($rightFolder == '') {
            $errUploadMsg = JText::_('COM_PHOCAGALLERY_USER_FOLDER_NOT_DEFINED');
            $app->redirect($redirectUrl, $errUploadMsg);
            return false;
         }
в components/com_phocagallery/views/category/view.html.php подстраиваем U P L O A D
Цитировать
// U P L O A D
      // = = = = = = = = = =
      $this->tmpl['action']   = $uri->toString();
      $this->tmpl['ftp']       = !JClientHelper::hasCredentials('ftp');
            
      // SEF problem
*

skyscraper

  • Захожу иногда
  • 252
  • 47 / 2
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #6 : 22.04.2011, 15:48:47 »
убираем копирайты:

Цитировать
в administrator/components/com_phocagallery/libraries/phocagallery/utils/utils.php
находим:
public function footer() {
echo '<div style="text-align: center; color: rgb(211, 211, 211);">Powe'
.'red by <a href="http://www.ph'
.'oca.cz" style="text-decoration: none;" target="_blank" title="Phoc'
.'a.cz">Phoca</a> <a href="http://www.phoca.cz/phocaga'
.'llery" style="text-decoration: none;" target="_blank" title="Phoca Gal'
.'lery">Gall'
.'ery</a></div>';
}
меняем на:
public function footer() {
}

Цитировать
в administrator/components/com_phocagallery/libraries/phocagallery/render/renderinfo.php
находим:
function getPhocaIc($output){ $v = PhocaGalleryRenderInfo::getPhocaVersion(); $i = str_replace('.', '',substr($v, 0, 3)); $n = '<p>&nbsp;</p>'; $l = 'h'.'t'.'t'.'p'.':'.'/'.'/'.'w'.'w'.'w'.'.'.'p'.'h'.'o'.'c'.'a'.'.'.'c'.'z'. '/'; $p = 'P'.'h'.'o'.'c'.'a'.' '.'G'.'a'.'l'.'l'.'e'.'r'.'y'; $im = 'i'.'c'.'o'.'n'.'-'.'p'.'h'.'o'.'c'.'a'.'-'.'l'.'o'.'g'.'o'.'-'.'s'.'m'.'a'.'l'.'l'.'.'.'p'.'n'.'g'; $s = 's'.'t'.'y'.'l'.'e'.'='.'"'.'t'.'e'.'x'.'t'.'-'.'d'.'e'.'c'.'o'.'r'.'a'.'t'.'i'.'o'.'n'.':'.'n'. 'o'.'n'.'e'.'"'; $b = 't'.'a'.'r'.'g'.'e'.'t'.'='.'"'.'_'.'b'.'l'.'a'.'n '.'k'.'"'; $im2 = 'i'.'c'.'o'.'n'.'-'.'p'.'h'.'o'.'c'.'a'.'-'.'l'.'o'.'g'.'o'.'-'.'s'.'e'.'a'.'l'.'.'.'p'.'n'.'g'; $i = (int)$i * (int)$i; $lg = ''; if ($output != $i) { $lg .= $n; $lg .= '<div style="text-align:center">'; } if ($output == 1) { $lg .= '<a href="'.$l.'" '.$s.' '.$b.' title="'.$p.'">'. JHTML::_('image', 'components/com_phocagallery/assets/images/'.$im, $p). '</a>'; $lg .= ' <a href="http://www.phoca.cz/" '.$s.' '.$b.' title="'.$p.'">'. $v .'</a>'; } else if ($output == 2 || $output == 3) { $lg .= '<a href="'.$l.'" '.$s.' '.$b.' title="'.$p.'">'. JHTML::_('image', 'components/com_phocagallery/assets/images/'.$im, $p). '</a>'; } else if ($output == 4) { $lg .= ' <a href="'.$l.'" '.$s.' '.$b.' title="'.$p.'">Phoca Gallery</a>'; } else if ($output == 5) { $lg .= ' <a href="'.$l.'" '.$s.' '.$s.' '.$b.' title="'.$p.'">'.$p.' '.$v.'</a>'; } else if ($output == 6) { $lg .= ' <a href="'.$l.'" '.$s.' '.$b.' title="'.$p.'">'. JHTML::_('image', 'components/com_phocagallery/assets/images/'.$im2, $p). '</a>'; } else if ($output == $i) { $lg .= '<!-- <a href="'.$l.'">site: www.phoca.cz | version: '.$v.'</a> -->'; } else { $lg .= '<a href="'.$l.'" '.$s.' '.$b.' title="'.$p.'">'. JHTML::_('image', 'components/com_phocagallery/assets/images/'.$im, $p). '</a>'; $lg .= ' <a href="http://www.phoca.cz/" '.$s.' '.$b.' title="'.$p.'">'. $v .'</a>'; } if ($output != $i) { $lg .= '</div>' . $n; } return $lg; }
меняем на:
function getPhocaIc($output){
}
« Последнее редактирование: 22.04.2011, 15:52:00 от skyscraper »
*

Komers

  • Захожу иногда
  • 73
  • 10 / 0
Re: PhocaGallery v3.0.0 RC4 (J! 1.6) - модификации.
« Ответ #7 : 25.09.2011, 08:25:52 »
Версия 3.0.2

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

« Последнее редактирование: 25.09.2011, 08:33:33 от Komers »
*

koyot777

  • Захожу иногда
  • 136
  • 1 / 2
  • Не щекочи койота..
Re: PhocaGallery v3.0.0 RC4 (j! 1.6) - модификации
« Ответ #8 : 02.05.2015, 13:24:12 »
Доброго времени суток! помогите как и где изменить файлы в версии 3,2,8 под Дж! 2.5. Хотел чтобы гости могли голосовать за категорию и была фильтрация по ИП
*

lordnviper

  • Новичок
  • 1
  • 0 / 0
Re: PhocaGallery v3.0.0 RC4 (j! 1.6) - модификации
« Ответ #9 : 19.06.2015, 12:59:06 »
Доброго времени суток! помогите как и где изменить файлы в версии 3,2,8 под Дж! 2.5. Хотел чтобы гости могли голосовать за категорию и была фильтрация по ИП
Присоединяюсь, если решили скиньте решение плз.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Joomla 5 Модули: PhocaGallery Image Module ошибка Class "JRequest" not found

Автор prostoy

Ответов: 0
Просмотров: 933
Последний ответ 05.09.2024, 09:41:27
от prostoy
PhocaGallery

Автор rezchik

Ответов: 6
Просмотров: 1864
Последний ответ 07.01.2024, 16:59:36
от SeBun
Русификация PhocaGallery 3 и 4 для Joomla 2.5\3.0

Автор HiopsNerevar

Ответов: 118
Просмотров: 99340
Последний ответ 11.03.2022, 16:24:13
от sergeytolkachyov
Сортировка категорий в столбцах/колонках PhocaGallery 3.2.2

Автор remix8080

Ответов: 0
Просмотров: 2631
Последний ответ 20.06.2021, 17:09:27
от remix8080
PhocaGallery 2.8.1 для Joomla 1.5

Автор iGoldSilver

Ответов: 3
Просмотров: 2851
Последний ответ 16.12.2020, 10:10:17
от iGoldSilver