Вот захотелось мне использовать другой фреймворк - materializecss к примеру, хотя теперь их куча этих фреймворков - хочешь bootstrap (3 теперь и 4), хочешь TITON, не в этом суть
переопределение шаблона и макетов страниц, блогов - вещь относительно простая, ну поменять классы у дивов - не особая проблема, логика разбиения на колонки простая в blog.php
но вот копнул глубже и глубоко задумался
вот например вывел я во фронденд добавление статьи, переопределил и переписал все в соответствии со совим фреймворком, т.е. табы мои вот выглядит так
Все поля рендерятся в соответствии с bootstrap 2, но это полбеды - переопределил renderfield , и стало вроде что то в соответствии с моим фреймворком,
Но сами то поля зарыты гораздо глубже: есть добавление файла картинки для изображения например и в ядре Joomla оно прописано как вызов скрипта modal а триггером становится кнопка, с классом "modal btn"
В большинстве фреймворков, даже в бустрапе 3 класс .modal закреплен за модальным окном и по умолчанию либо hide либо display:none, если фреймворк прикрепляется через CDN , то само собой файл CSS не поправишь, приходится переписывать для a.modal.btn отдельное свойство, что на мой взгляд немного нелепо - именно так кстати делается в популярном фреймворке для Joomla - T3 для BS3.
Я пошел дальше немного и все таки залез в \libraries\cms\form\field\media.php и присвоил там вместо класса modal класс modal-trigger. и теперь в стандарных компонентах выглядит загрузка файла как я хочу, хотя и не совсем так, хотелось бы. Но ведь это хак ядра получается? И при обнове есть шанс что слетит?
А там еще куча всего в ядре - и datepicker и sortable, вот мне нафик не нужно родное джумловской это хозяйство - я например пользоваться isotopejs люблю для сортировки, и дата мне нравится у материалайза к примеру.
Но как сделать так, чтобы поля были полностью переопределены на мои скрипты и фреймворки я не понимаю.
Плагин писать? Ядро хакать дальше?
Почему вот нельзя было задавать просто типы полей без разметки совсем, а разметку отдельно делать, какждый как хочет, а вот эту хрень не обязательной делать, а лишь одним из шаблонов:
$html[] = '<a class="modal btn" title="' . JText::_('JLIB_FORM_BUTTON_SELECT'). '" href="'
. ($this->readonly ? ''
: ($this->link ? $this->link
: 'index.php?option=com_media&view=images&tmpl=component&asset=' . $asset . '&author='
. $this->form->getValue($this->authorField)). '&fieldid=' . $this->id . '&folder=' . $folder). '"'
. ' rel="{handler: \'iframe\', size: {x: 800, y: 500}}">';
$html[] = JText::_('JLIB_FORM_BUTTON_SELECT'). '</a><a class="btn hasTooltip" title="'
. JText::_('JLIB_FORM_BUTTON_CLEAR'). '" href="#" onclick="';
$html[] = 'jInsertFieldValue(\'\', \'' . $this->id . '\');';
$html[] = 'return false;';
$html[] = '">';
$html[] = '<span class="icon-remove"></span></a>';