вопрос по редактору и автоматизации обрамления для определенного раздела

  • 6 Ответов
  • 174 Просмотров

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

*

_92

  • **
  • 11
  • 0
здравствуйте

задача такая
- сейчас в материалах загружено большое количество изображений (т.е. в каждом материале прямо в редакторе имеем множество img)
- мне нужно настроить автоматизацию (обрамить img тегами div, span, ..), но только чтоб на страницах определенного раздела (/section_name/element_name_1/, /section_name/element_name_2/, ..) выводилось, например, div.. span.. /span.. div.. img.. img.. img.. img.. /div.. /div..

сейчас самым простым для себя нашел в /templates/*название шаблона*/html/com_content/.. делать проверку на uri, т.е. если мы находимся в section_name и и еще есть element_name_хх, то вызываем наше обрамление и вставляем внутрь наши img

вопрос - как правильно нужно сделать в данном случае?

*

effrit

  • *****
  • 7441
  • 815
  • effrit.com
здра.
как работает - так и правильно :)
можно в плагин вынести эти же самые операции, а можно экспортировать дамп базы с нужными материалами и пройтись по ним регулярками с помощью Notepad++, чтобы не тратить ресурсы сервера на оборачивание каждый раз


*

_92

  • **
  • 11
  • 0
можно в плагин вынести эти же самые операции
тоже про это думал
начал было изучать https://docs.joomla.org/Creating_a_Plugin_for_Joomla и сделал уже простой плагин
но до конца не могу сообразить логику работы будущего плагина - сможете описать кратко принцип работы для моей задачи

а можно экспортировать дамп базы с нужными материалами и пройтись по ним регулярками с помощью Notepad++, чтобы не тратить ресурсы сервера на оборачивание каждый раз
просто в дальнейшем материалы будут наполняться новыми img

а если, например, потратить время (или в других проектах с нуля) и перенести все img в медиа-менеджер по разделам
то как потом можно сделать, чтоб можно было в редакторе в нужном месте просто прописать, к примеру, [show_imgs_block folder="section_name"], наподобие шорткодов в wordpress
и на нужной странице вызывалась, к примеру, function show_imgs_block($folder ='')
« Последнее редактирование: 14.12.2016, 17:40:18 от _92 »

*

Septdir

  • *******
  • 2138
  • 106
  • JoomlaZen
А я вот не согласен насчет плагина или базы. Плагин и база вещь глобальная и сервеная, а обрамление картинок все же вещь фронтальная. Можно и js написать и скинуть все на браузер.

Ну а если все же делать серверно то первое что нужно сделать это определить когда.
1. В момент сохранения - только плагин (content/onContentBeforeSave). Но с уже имеющимся материалами не прокатит, придется либо функцию написать, либо как писалось взять дамп и сделать замену.
2. В момент вывода - Два варианта либо плагин (content/onContentPrepare) либо переопределить шаблон com_content(делать нечно подобное в index не очень хорошая затея).

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

Третье реализация.
Ну тут все просто используем регулярку
Код: php
$text = 'Image reular <img alt="Joomla! Documentation" src="https://docs.joomla.org/skins/foreground/joomla_logo_small.png" style="max-width: 64px;height:auto; max-height:36px; display: inline-block; vertical-align:middle;">';
$text = preg_replace('/(<img[^>]+>)/', '<div><span>$text = 'Image reular <img alt="Joomla! Documentation" src="https://docs.joomla.org/skins/foreground/joomla_logo_small.png" style="max-width: 64px;height:auto; max-height:36px; display: inline-block; vertical-align:middle;">';
$text = preg_replace('/(<img[^>]+>)/', '<div><span>$1</span></div>', $text);
echo $text;
</span></div>', $text);
echo $text;
« Последнее редактирование: 14.12.2016, 17:47:35 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen

*

_92

  • **
  • 11
  • 0
либо плагин (content/onContentPrepare)
1 скажите, в чем разница если делать через плагин и function onContentPrepare() или через /templates/*название шаблона*/html/com_content/article/default.php с условием <?php if ($this->item->catid == '*id-категории*'): ?>
2 имеет ли значение в этом случае, если включено кэширование в настройках админки

*

Septdir

  • *******
  • 2138
  • 106
  • JoomlaZen
1 скажите, в чем разница если делать через плагин и function onContentPrepare() или через /templates/*название шаблона*/html/com_content/article/default.php с условием <?php if ($this->item->catid == '*id-категории*'): ?>
2 имеет ли значение в этом случае, если включено кэширование в настройках админки
1. Разница в том когда и где это происходит. onContentPrepare() выполняется еще до самого вывода и меняет сам текст ну или что вы там меняете и работает не только в материале но и в категории, архиве израбнных, может даже в некоторых модулях. Ну и соответственно по умолчанию не зависит от шаблона.
Переопределение делается для каждой вьюхи отдельно (отдельно категория отдельно материал) и привязано к определенному шаблону.
2. По идеи нет.
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
________
Мои Контакты | JoomlaZen