werber
@werber
Системный администратор Windows

Существует ли возможность назначить визуальный редактор в CMS Joomla для каждой категории материалов по своему?

Допустим, у меня есть Категория_1 и Категория_2. В виду особенностей, Категорию_1 мне нужно редактировать через JCE, а Категорию_2 - через CodeMirror. Как-то возможно реализовать данную задумку автоматически, без постоянной бегатни в меню "Система -> Общие настройки" для смены редактора?
  • Вопрос задан
  • 143 просмотра
Пригласить эксперта
Ответы на вопрос 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Привязкой плагина (или его настройками, или через общие настройки) или только доработкой через код.
Ответ написан
Комментировать
werber
@werber Автор вопроса
Системный администратор Windows
Делюсь тем, как я ПОЧТИ решил эту проблему. Итак, делаем следующее:
1. В шаблоне админки по умолчанию (скорее всего у вас Isis) создаём в папке html 2 папки - com_modules и com_content. В папке com_modules создаём папку module, в папке com_content папку - папку article. Получатся в итоге следующие пути: site.ru/administrator/templates/isis/html/com_modules/module и site.ru/administrator/templates/isis/html/com_content/article.
2. Идём по пути site.ru/administrator/components/com_content/views/article/tmpl, находим внутри файл edit.php. Его копию переносим в site.ru/administrator/templates/isis/html/com_content/article. Аналогично делаем перенос файла edit.php с site.ru/administrator/components/com_modules/views/module/tmpl в site.ru/administrator/templates/isis/html/com_modules/module.
3. В файлах edit.php, которые были скопированы в папку шаблона после строки
defined('_JEXEC') or die;
вставляем код:
$editor1 = "jce"; //название редактора для категории с ID=2 (в моём случае)
$editor2 = "codemirror"; //название редактора для всех иных категорий
$catid = $this->form->getValue("catid"); //получаем номер данной категории материала
$tmp_user = JFactory::getUser(); //инициализируем временный массив tmp_user, где хранится
//класс с информацией о параметрах пользователя. Тут же хранится и текстовый редактор
//для данного пользователя.
if ($catid == "2"){ //если редактируем материал с ID статьи = 2, то...
	$tmp_user->setParam('editor',$editor1); //устанавливаем редактор под именем $editor1
} else { //если редактируем материал с ID статьи отличной от 2, то...
	$tmp_user->setParam('editor',$editor2); //устанавливаем редактор под именем $editor2
}

Данный код можно переписать под свои нужды, настраивая как на конкретно свои редакторы, так и заменив условие IF на SWITCH, для переключения редакторов для каждой из существующих категорий материалов.
У данного кода имеется одна проблема. Код срабатывает со второго раза, если был задан до этого иной редактор. Видимо, всё же, редактор нужно задавать не в шаблоне редактирования, а где-то повыше. Я не догадался где, может кто-то скажет точнее. Но для кода на скорую руку, можно и так оставить. Во всяком случае, перезагрузить страницу не так уж и сложно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы