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

_92

  • Новичок
  • 11
  • 0 / 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

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

_92

  • Новичок
  • 11
  • 0 / 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, 15:40:18 от _92 »
*

Septdir

  • Живу я здесь
  • 2741
  • 133 / 3
  • 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, 15:47:35 от Septdir »
Не можете справиться с задачей сами пишите, решу ее за вас, не бесплатно*.
*Интересная задача, Деньги или Бартер. Натурой не беру!
Мои Контакты | Мой GitHub | JoomlaZen
*

_92

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

Septdir

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

Вопрос по материалам и картинкам в них

Автор mefxl

Ответов: 5
Просмотров: 220
Последний ответ 06.12.2017, 17:37:58
от mefxl
Левая реклама на мобильной версии сайта (вопрос к профи)

Автор ppb25

Ответов: 7
Просмотров: 252
Последний ответ 22.11.2017, 11:20:53
от voland
Ищу хак для задания описания раздела непосредственно в меню

Автор vaf

Ответов: 4
Просмотров: 105
Последний ответ 15.11.2017, 16:33:06
от NewUsers
Важный вопрос по автоматизации

Автор Zhanadil1509

Ответов: 0
Просмотров: 59
Последний ответ 15.11.2017, 07:59:40
от Zhanadil1509
Дубли с названием раздела, как с этим бороться?

Автор Евгений1980

Ответов: 0
Просмотров: 48
Последний ответ 10.11.2017, 11:10:28
от Евгений1980