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

    werber
    @werber Автор вопроса
    Веб разработчик, пишу на PHP+JS/JQuery
    Делюсь тем, как я ПОЧТИ решил эту проблему. Итак, делаем следующее:
    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, для переключения редакторов для каждой из существующих категорий материалов.
    У данного кода имеется одна проблема. Код срабатывает со второго раза, если был задан до этого иной редактор. Видимо, всё же, редактор нужно задавать не в шаблоне редактирования, а где-то повыше. Я не догадался где, может кто-то скажет точнее. Но для кода на скорую руку, можно и так оставить. Во всяком случае, перезагрузить страницу не так уж и сложно.
    Ответ написан
  • Как заставить CMS Joomla выводить URL компонента меток (com_tags) в адекватном виде?

    werber
    @werber Автор вопроса
    Веб разработчик, пишу на PHP+JS/JQuery
    Короче, временное решение из головы такое (АХТУНГ! БЫДЛОКОД!):
    Так как я хотел не site.ru/component/tags/tag/text.html, а site.ru/tegi/text.html получить в итоге я сделал следующее:
    1. Создал пункт меню "Теги" (отсюда и tegi в url, но меня и это устраивает), этот пункт в меню на сайте скрыл через CSS (#menu ul li.item-xxx{display:none}).
    2. Написал простую php функцию, которую впихнул в index.php шаблона (проверено на Joomla 3.4.8):
    function URLRedirect($url_part){
    	if (strstr(JURI::current(),JURI::base().$url_part)){
    		$length = strlen(JURI::current());
    		$last_pos = strrpos(JURI::current(),"/")+1;
    		$word = substr(JURI::current(),$last_pos,($length-$last_pos));
    		$new_url = JURI::base()."tegi/".$word;
    		header("Location:".$new_url);
    	}
    }

    3. Вызвал в самом index.php шаблона в самом начале функцию таким образом:
    URLRedirect("component/tags");

    В итоге, функция ищет наличие в URL данной страницы упоминание компонента меток. Если таковое упоминание находится, получает название непосредственно страницы (xxx.html) и подменяет site.ru/component/tags/tag... на site.ru/tegi... + название страницы. В итоге получаем свою извращённую версию редиректа. Да, ещё раз повторю, я понимаю, что это быдлокод, я осознаю это. Просто изящнее пока написать не могу, навыков нет таких и опыта. Если кому будет полезно = пользуйтесь на здоровье. Ко всему прочему, мою методику можно додумать для иных аналогичных проблем. Буду особо благодарен, если у кого-то есть время и желание додумать мой код, может я что-то не учёл.
    Ответ написан
  • Как определить какой компонент не работает Joomla?

    werber
    @werber
    Веб разработчик, пишу на PHP+JS/JQuery
    1. А хостинг у вас там есть? Обычно у хостингов в панели управления есть доступ к phpMyAdmin или нечто похожее, позволяющие работать с БД сайта. В крайнем случае, можете залить в отдельную папку по FTP дистрибутив phpMyAdmin и настроить его по данным из configuration.php (файл конфигурации Joomla, лежащий, обычно, в корне сайта). Далее ступайте в таблицу _extensions, ищите там компоненты и ставьте в полях enable = 0 по очереди, может так оживите сайт.
    2. Попробуйте включить в файле configuration.php максимальное отображение ошибок, заменив значение $error_reporting с default (наверняка у вас оно) на development . Может после этого полезут ошибки, подсказывающие вам куда копать.
    3. Если у вас уже установлено было больше одного шаблона для сайта, найдите в БД (начало как в пункте 1, найдите так же таблицу _extensions) шаблоны (можно искать по полю type = template), среди них активируйте (сменой значения enabled = 1) другой шаблон для сайта, а нынешний диактивируйте (enable = 0). Этот совет по причине очень редкого, но иногда имеющего место быть корявого шаблона, который запрашивает те компоненты, которых нет.
    Ответ написан
  • Как убрать модуль группы в контакте с сайта на Joomla?

    werber
    @werber
    Веб разработчик, пишу на PHP+JS/JQuery
    Не исключаю, что вставка окна с группой зашита прямо в шаблон. Просто откройте папку templates/<ваш шаблон>/index.php, в нём поищите. Если совсем опыта мало, могу помочь на коммерческой основе с этой проблемой, напишите на werbersoft@yandex.ru.
    Ответ написан
  • Как убрать пункт Home из меню в Joomla 3.x?

    werber
    @werber
    Веб разработчик, пишу на PHP+JS/JQuery
    Как мне кажется, самый изящный и универсальный метод - скрывать первый дочерний элемент li из материнского контейнера ul меню. Как-то так для примера:
    ul#menu li:first-child {
        display: none;
    }

    Этот фикс обеспечит вам универсальное решение для любого сайта, только уточняйте как звать-величать материнский блок и корректируйте мою запись.
    Ответ написан