Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 30 Ответов
  • 3891 Просмотров
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Приветствую!

При разборе полетов Joomla 2.5  ! нашел кучу лагов и багов. Они не влияют на работоспособность системы, но очень затрудняют процесс разработки расширений.

т.е. в 2.5 для категорий не сделана толком обработка данных плагинами. Т.е. категория это типа не контент, обойдется и так.
без хаков не обошлось, посему текущая версия 2.5.8 плюс хаки на
1) модель категории (3 строчки), обработка данных категории плагинами перед передачей в форму.
2) шаблон редактирования категории, добавлена обработка полей attribs.

Далее возникли замечания по поводу универсальности таблицы категорий. Хоть в ней и создаются категории для разных компонент, но файлам ядра Joomla, что с ней работают не хватает гибкости, заточены только на эту таблицу.
« Последнее редактирование: 13.11.2012, 20:15:46 от smart »
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Вы меня будете учить и указывать, что я не так назвал?
я ни словом не обмолвился про фронт сайта. В админке движка без костылей нельзя добавить свою хмл-форму в форму редактирования категории.
Т.е. для XML имеющей имя params это возможно, а вот для других случаев нет.
Посему и написал, что полноценное и нормально смотрящееся расположение дополнительных полей возможно через минихаки.


Насчет универсальности, мне нужна была функциональная копия категорий, чтобы не менять глобально стандартный компонент категорий. Так вот, часть стандартного функционала слишком жестко заточена под таблицу категорий.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
мне не понятны причины по которым категория должна обрабатываться контент плагином!
Я не вижу причин не обрабатывать. Дело в том, что начиная с 1.6 у плагинов контента поменялась сигнатура и появился такой параметр как контекст, и контекст определяет, для какого типа содержимого вызывается событие. В свое время был очень удивлен, когда мой JComments, в лоб портированный на 1.6, вдруг вызывался из медиа-менеджера, а потом нашел:

Код: php
$dispatcher->trigger('onContentAfterDisplay', array('com_media.file', &$this->_tmp_img, &$params));

И это вполне логично, ибо и файлы, и материалы, и категории - это все контент, содержимое сайта. И начиная с версии 1.6 нет никаких причин не обрабатывать эти данные контент-плагинами. Главное, чтобы был корректно указан контент, тогда плагины смогут корректно его обрабатывать.
« Последнее редактирование: 14.11.2012, 13:09:41 от smart »
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #3 : 13.11.2012, 22:13:02 »
Вот наспамили-то!
Если учесть, что стандартные категории используются во многих местах, то их тоже надо было делать более функциональными.
В админке категория вполне так ничего поддается обработке плагинами, но вот не обрабатывается она на событие onContentPrepareData.

Это замечательно:
$result = $dispatcher->trigger($this->event_before_save, array($this->option . '.' . $this->name, &$table, $isNew));
$dispatcher->trigger($this->event_after_save, array($this->option . '.' . $this->name, &$table, $isNew));
но повторяюсь, при структуре MVC и возможности использования плагинов, зачем лезть в стандартный код. Но вот приходится хакать, т.к. не хватает той гибкости что нужна.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #4 : 13.11.2012, 23:37:32 »
В админке категория вполне так ничего поддается обработке плагинами, но вот не обрабатывается она на событие onContentPrepareData.
Ну так сделай готовый патч и давай его на баг-треккер, а я попробую его продвинуть...
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #5 : 14.11.2012, 12:33:04 »
Ха, блин, там (в админке) таки есть обработчик "onContentPrepareData" в категории. Но как же он нехило заныкан.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #6 : 14.11.2012, 12:50:09 »
Так, ребята давайте мирно. И конструктивно. Я вас обоих уважаю, и давайте без перехода на личности.

Фей, объясни, зачем действительно в административной панели обрабатывать контент плагинами категории? Можешь как-то более подробно описать проблему?
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #7 : 14.11.2012, 12:54:37 »
Хорошо. У меня есть самописный компонент. Он использует категории. Но для категорий мне нужен дополнительный функционал, который будет обработан плагином.
Подобные плагины я делал для профиля юзера в админке и фронте. Это дополнительные поля и функционал. Там все ИДЕАЛЬНО работает.
В категории же пришлось извращаться, чтобы с минимальным вмешательством в стандартный код добиться своего.

Если у вас есть идея как к форме редактирования категории добавить нужный функционал, я готов выслушать. И готов признать себя дураком, если это прокатит.

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

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #8 : 14.11.2012, 13:03:59 »
Погоди, если тебе нужны дополнительные поля, то в чем проблема воспользоваться событием onPrepareForm?
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #9 : 14.11.2012, 13:05:04 »
начнем с к примеру с дополнительных полей на основе XML как самого простого
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #10 : 14.11.2012, 13:05:54 »
Ха, блин, там (в админке) таки есть обработчик "onContentPrepareData" в категории. Но как же он нехило заныкан.

Здесь я ошибся, есть onContentPrepareForm.
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #11 : 14.11.2012, 13:08:04 »
Погоди, если тебе нужны дополнительные поля, то в чем проблема воспользоваться событием onPrepareForm?

Я им и воспользовался. Так и есть.
Но это самое простое. Теперь мне туда нать вопхнуть гуглькарту (яндекс карту) и повесить соотв обработчик поля адреса.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #12 : 14.11.2012, 13:09:23 »
Но это самое простое. Теперь мне туда нать вопхнуть гуглькарту (яндекс карту) и повесить соотв обработчик поля адреса.
А в чем проблема? Создай свой тип поля, создай свой XML для формы у себя в компоненте и он подгрузится (посмотри метод preprocessForm в модели категории).
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #13 : 14.11.2012, 13:12:01 »
Не спорю, что через свой тип поля можно.

Во только скажи мне пожалуйста, куда и где выведется все это барахло в форме редактирования категории?
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #14 : 14.11.2012, 13:13:04 »
если свой компонент то дополнительные поля можно сделать даже не выполняя onPrepareForm )))
Ну непосредственно для категорий - да, я просто напомнил про это событие, как довольно удобное для решения подобных задач.

Во только скажи мне пожалуйста, куда и где выведется все это барахло в форме редактирования категории?
Ну форма рендерится вполне стандартным способом, выведется там, где расположишь эти поля. В конечном счете, ты потом на onPrepareForm можешь подвигать их, если уж очень хочется. Но зато универсально и без каких-либо хаков.
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #15 : 14.11.2012, 13:13:28 »
правильно! все будет справа!
а внизу, где выводится блок аксесов, больше нифига не выведешь, а места там дофига
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #16 : 14.11.2012, 13:14:16 »
поэтому и ругаюсь, что без хаков блин никак
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #17 : 14.11.2012, 13:15:43 »
правильно! все будет справа!
а внизу, где выводится блок аксесов, больше нифига не выведешь, а места там дофига
Почему? Если вставишь в блок params, то да, а если в основную группу параметров - то будет по центру. Ну посмотри XML описания формы, там несколько групп полей, и справа выводятся только параметры, остальная форма рендерится в основной области.
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #18 : 14.11.2012, 13:19:32 »
Почему? Если вставишь в блок params, то да, а если в основную группу параметров - то будет по центру. Ну посмотри XML описания формы, там несколько групп полей, и справа выводятся только параметры, остальная форма рендерится в основной области.

уверен?
Я вот открыл файл edit.php и вот в упор не вижу групповой выборки из формы.
Код
<form action="<?php echo JRoute::_('index.php?option=com_categories&extension='.JRequest::getCmd('extension', 'com_content').'&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate">
<div class="width-60 fltlft">
<fieldset class="adminform">
<legend><?php echo JText::_('COM_CATEGORIES_FIELDSET_DETAILS');?></legend>
<ul class="adminformlist">
<li><?php echo $this->form->getLabel('title'); ?>
<?php echo $this->form->getInput('title'); ?></li>

<li><?php echo $this->form->getLabel('alias'); ?>
<?php echo $this->form->getInput('alias'); ?></li>

<li><?php echo $this->form->getLabel('extension'); ?>
<?php echo $this->form->getInput('extension'); ?></li>

<li><?php echo $this->form->getLabel('parent_id'); ?>
<?php echo $this->form->getInput('parent_id'); ?></li>

<li><?php echo $this->form->getLabel('published'); ?>
<?php echo $this->form->getInput('published'); ?></li>

<li><?php echo $this->form->getLabel('access'); ?>
<?php echo $this->form->getInput('access'); ?></li>

<?php if ($this->canDo->get('core.admin')): ?>
<li><span class="faux-label"><?php echo JText::_('JGLOBAL_ACTION_PERMISSIONS_LABEL'); ?></span>
<div class="button2-left"><div class="blank">
      <button type="button" onclick="document.location.href='#access-rules';">
      <?php echo JText::_('JGLOBAL_PERMISSIONS_ANCHOR'); ?></button>
      </div></div>
    </li>
<?php endif; ?>

<li><?php echo $this->form->getLabel('language'); ?>
<?php echo $this->form->getInput('language'); ?></li>

<li><?php echo $this->form->getLabel('id'); ?>
<?php echo $this->form->getInput('id'); ?></li>
</ul>
<div class="clr"></div>
<?php echo $this->form->getLabel('description'); ?>
<div class="clr"></div>
<?php echo $this->form->getInput('description'); ?>
</fieldset>
</div>

<div class="width-40 fltrt">

<?php echo JHtml::_('sliders.start', 'categories-sliders-'.$this->item->id, array('useCookie'=>1)); ?>
<?php echo $this->loadTemplate('options'); ?>
<div class="clr"></div>

<?php echo JHtml::_('sliders.panel', JText::_('JGLOBAL_FIELDSET_METADATA_OPTIONS'), 'meta-options'); ?>
<fieldset class="panelform">
<?php echo $this->loadTemplate('metadata'); ?>
</fieldset>

<?php echo JHtml::_('sliders.end'); ?>
</div>
<div class="clr"></div>

<?php if ($this->canDo->get('core.admin')): ?>
<div  class="width-100 fltlft">

<?php echo JHtml::_('sliders.start', 'permissions-sliders-'.$this->item->id, array('useCookie'=>1)); ?>

<?php echo JHtml::_('sliders.panel', JText::_('COM_CATEGORIES_FIELDSET_RULES'), 'access-rules'); ?>
<fieldset class="panelform">
<?php echo $this->form->getLabel('rules'); ?>
<?php echo $this->form->getInput('rules'); ?>
</fieldset>

<?php echo JHtml::_('sliders.end'); ?>
</div>
<?php endif; ?>
<div>
<input type="hidden" name="task" value="" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>

Где здесь есть вывод "чужих" полей?
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #19 : 14.11.2012, 13:21:13 »
ну никто же не мешает вам с помощью JS перенести поля куда вам угодно )

Я не извращенец. Яву применяю только там где это нужно.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #20 : 14.11.2012, 13:24:27 »
Я вот открыл файл edit.php и вот в упор не вижу групповой выборки из формы.
Хм, да, ты прав. Ну тогда как вариант - вставлять в правый блок, а затем двигать с помощью JavaScript (если уж очень хочется показывать не в правом блоке, а где-то иначе). И в этом нет ничего извращенного.

Хотя я бы оставил в правом блоке, ибо это как бы расширение функционала категории для конкретного расширения, и вполне логично, что дополнительные параметры находятся где-то сбоку.
*

smart

  • Администратор
  • 6485
  • 1318 / 15
  • Хочешь сделать хорошо — сделай!
Re: Дополнительные поля в категории
« Ответ #21 : 14.11.2012, 13:28:14 »
Да и вообще, это все завязано на конкретный шаблон административной панели. Вполне возможно, что появится шаблон, где по центру места будет мало, а по бокам много. Лично я ничего плохого в текущей логике расположения элементов не вижу.

А возвращаясь к исходной задаче - добавить поля без модификации стандартных компонентов можно, вызывать onContentPrepareData не требуется, при необходимости можно передвинуть элементы с помощью JavaScript.
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #22 : 14.11.2012, 14:38:06 »
ну если поколдовать с шаблоном... надо проверить
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #23 : 16.11.2012, 09:56:18 »
Что-то там я не особо заметил новичков в PHP. Но если вернуться к нашим баранам, то все layout спокойно переопределяются в шаблоне админки (и категории тоже). В этом случае конечно зависим от текущего шаблона.

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

b2z

  • Глобальный модератор
  • 7277
  • 777 / 0
  • Разраблю понемногу
Re: Дополнительные поля в категории
« Ответ #24 : 16.11.2012, 11:28:14 »
Но если вернуться к нашим баранам, то все layout спокойно переопределяются в шаблоне админки (и категории тоже). В этом случае конечно зависим от текущего шаблона.
Не совсем понял, каким образом?
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #25 : 16.11.2012, 11:44:58 »
Не совсем понял, каким образом?

По-умолчанию в админке юзается шаблон bluestork. В нем каталог HTML практически пустой.
Добавляем туда com_categories/category/edit.php взяв его из админки категории, меняем его как хотим и все. Измененный шаблон формы редактирования категории будет активным.

Но повторюсь, в этом случае мы зависим от текущего активного шаблона админки, а это не удобно.
*

b2z

  • Глобальный модератор
  • 7277
  • 777 / 0
  • Разраблю понемногу
Re: Дополнительные поля в категории
« Ответ #26 : 16.11.2012, 11:52:45 »
По-умолчанию в админке юзается шаблон bluestork. В нем каталог HTML практически пустой.
Добавляем туда com_categories/category/edit.php взяв его из админки категории, меняем его как хотим и все. Измененный шаблон формы редактирования категории будет активным.

Но повторюсь, в этом случае мы зависим от текущего активного шаблона админки, а это не удобно.
Блин, реально не подумал. Сколько знаю Joomla, а об этом только сейчас узнал. Всегда думал, что переопределить можно только на фронте. Мне стыдно :)
*

b2z

  • Глобальный модератор
  • 7277
  • 777 / 0
  • Разраблю понемногу
Re: Дополнительные поля в категории
« Ответ #28 : 16.11.2012, 12:28:35 »
Ладно, тут мы уже заоффтопили. Все обсуждение плагина будем вести в соответствующей теме. Его бы допилить, да ещё сделать с параметрами (типа какие виды можно переопределять), был бы очень полезный плагин. Все - обсуждаем там :)
*

Фей

  • Давно я тут
  • 741
  • 86 / 3
  • Истина в вине!
Re: Дополнительные поля в категории
« Ответ #29 : 16.11.2012, 12:33:30 »
Лады, предположим, что мы за счет системного плагина (подчеркиваю системного) переопределили модель, вид, возможно и контролер (но под вопросом).

Тогда:
1. плагин должен отслеживать куда ему можно, а куда нельзя лезть.
2. насчет категорий, там такой замут конкретный, а с учетом того, что многие компоненты используют механизм категорий, то изменение данного механизма чревато.
3. в плагинах вообще есть такие события как onContentAfterSave, onContentBeforeSave и т.д., что абсолютно не мешает стандартной логике, но позволяет добавить функционал работы с данными.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Вывести поле изображение материала в модуле "Список материалов категории"

Автор aleksandrozz

Ответов: 12
Просмотров: 9900
Последний ответ 14.10.2022, 05:12:04
от denxio
Перенаправление htaccess с id в категории на без id

Автор MultiMatrix83

Ответов: 12
Просмотров: 892
Последний ответ 21.11.2021, 19:15:00
от MultiMatrix83
Закрыть от индексации только страницу категории

Автор DDAANN

Ответов: 5
Просмотров: 2181
Последний ответ 07.03.2021, 13:23:34
от Followme
Расширение поля контента

Автор Atalla

Ответов: 12
Просмотров: 785
Последний ответ 13.06.2019, 07:44:02
от anatol81n
Поля [tile] и [url] в скрипте Share42

Автор Darkcitadel

Ответов: 3
Просмотров: 1266
Последний ответ 15.06.2017, 18:50:38
от mazepa