ADBLOCK_MSG
Joomla 3: Перенаправление на ту же страницу после авторизацииОпубликовано: 20.07.2020, 00:53 Автор: Ogri Просмотров: 5861
На сайте авторизация происходит через модуль mod_login. В настройках модуля опция Перенаправление при входе выставлена - по умолчанию. После введения правильных логина и пароля, тем не менее, умная Joomla редиректит в самые разные места в зависимости от того, страница какого расширения на данный момент активна. То в корень сайта, то в блог категории. Неудобно. При выходе пользователя (опция перенаправления - также по умолчанию) страница не меняется, всё чётко.
Пришлось покопаться и найти место в коде, где осуществляется редирект. Оно нашлось вовсе не в модуле авторизации, а в компоненте пользователей com_users. А именно - в файле components\com_users\controllers\user.php. И небольшое изменение в его коде решило вопрос.
Модификации подверглась функция login(). Вот она оригинальная:
public function login() { $this->checkToken('post'); ...................... $app->redirect(JRoute::_($app->getUserState('users.login.form.return'), false)); }
А вот изменённая.
public function login() { $this->checkToken('post'); ...................... //comment out default redirect // $app->redirect(JRoute::_($app->getUserState('users.login.form.return'), false)); //redirect to the same page $return = $input->get('return', '', 'BASE64'); $return = base64_decode($return); $app->redirect(JRoute::_($return, false)); }
Как видите, последняя строка закомментирована и вместо неё добавлены три новых строки. Логика позаимствована из следующей ниже функции logout().
Непонятно, что мешает разрабам пофиксить это недоразумение. Возможно, оно, как и многие другие, будет исправлено в Joomla 4. Вот только релиза никак не дождаться.
Добавить комментарий
Joomla: как добавить свои языковые константы или переопределить существующиеОпубликовано: 13.02.2017, 14:09 Автор: Ogri Просмотров: 61134
Вынесенная в заголовок задача не столь уж редко встает перед джумловодами. То свой текст нужно добавить, то изменить корявый или неинформативный (и зачастую еще - изобилующий ошибками) текст, составленный разрабами сторонних расширений. В Менеджере языков административного раздела сайта имеется достаточно вразумительный интерфейс для переопределения констант (Решение 2), и им, в принципе, можно бы и ограничиться. Но если вам, как и мне, интересно разобраться досконально в языковой структуре Joomla, то эта статья для вас.
В статье о замене устаревшей капчи компонента JComments на reCAPTCHA v2 (NO CAPTCHA) от Google описаны изменения в коде компонента. При этом, поскольку ввод новой капчи не требует вводить буквенно-цифровой код с картинки, потребовалось также заменить сообщение об ошибке. Оригинальное сообщение для русского языка загружалось из языкового файла компонента посредством константы:
ERROR_CAPTCHA="Пожалуйста, введите код изображенный на картинке!"
Новый текст, в полном соответствии с гугловским, должен быть таким: "Пожалуйста, подтвердите, что вы не робот!".
На примере решения этой, казалось бы, простой задачи я постараюсь разложить по полочкам все тонкости работы с языковыми константами. Будут рассмотрены альтернативные варианты решения и изложена логика выбора окончательного из них.
Решение 1. На уровне шаблона
Перед тем, как перейти непосредственно к капче, давайте совершим небольшой экскурс в теорию и разберемся в структуре языковых папок и формате имен языковых файлов.
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JCommentsОпубликовано: 13.02.2017, 13:23 Автор: Ogri Просмотров: 87536
Небольшая предыстория. Я изначально использовал родную капчу компонента JComments
- kcaptcha
. В какой-то момент отключил ее, поскольку она раздражала комментаторов. Тут же в комментарии посыпался спам в гигантских количествах. Начал использовать CleanTalk
- символически платный ($9 в год) плагин, защищающий от спамботов не только комментарии, но и вход/регистрацию, контакты и формы многих сторонних расширений. Спам было прекратился, но в последнее время эти гады настрополились слать мусорные комментарии, по форме маскирующиеся под нормальные и даже включающие в тексте заголовки статей. Их CleanTalk
пока отфильтровать не может. Подобных "комментариев" стало приходить по 4-5 в день - не очень критично, да и убивать их легко прямо из уведомлений в почте. Но все же захотелось найти компромиссное решение проблемы - капчу, блокирующую не отлавливаемый CleanTalk
-ом спам, но в то же время не раздражающую потенциальных комментаторов.
NO CAPTCHA reCAPTCHA
от Гугла (или просто reCAPTCHA v2.0
) подходит идеально. Начиная с Joomla 3.4, вторая версия включена в плагин reCAPTCHA
, поставляемый с CMS. На время написания прошло почти два года с того релиза, а разрабы JComments
так и не озаботились добавить поддержку этого плагина в свой компонент. Это никак не умаляет его достоинств - JComments
был и остается лучшим бесплатным решением для комментариев на Джумла-сайте. Тем более что встроить сабж в комментарии достаточно просто своими силами. Для этого вам предстоит выполнить ряд несложных действий.
Единая фильтрация вывода модуля mod_jcomments_latestОпубликовано: 23.06.2016, 10:48 Автор: Ogri Просмотров: 39361
Во вступлении к статье о фильтрации контента по материалам, категориям и компонентам я упомянул, что для избирательной привязки модуля последних комментариев требуется создавать некоторое количество его копий. На сайте, достаточно разветвленном по структуре и тематике, а особенно - в случае многоязычности, это количество может исчисляться десятками. Каждая копия имеет свои настройки, устанавливаемые в менеджере модулей. Если нужно изменить какие-либо параметры во всех или даже нескольких копиях модуля, предстоит кропотливая и нудная работа в админке сайта - открывать страницу каждой копии и вручную вносить изменения. Можно, конечно, объединять комментарии к нескольким смежным темам в один общий модуль, но не лучше ли найти гибкое решение, позволяющее и рыбку съесть - четко отфильтровать комменты к каждой теме или даже подтеме, и манту не замочить - свести количество копий модуля к минимуму, а то и к одной-единственной. Я, как мне кажется, таковое решение нашел, и помогло мне в этом знание структуры внутренних ссылок страниц приложений, формируемых движком Джумлы.
Как известно, модули Joomla привязываются к пунктам меню. В случае mod_jcomments_latest введена также привязка к компонентам. Есть еще и дополнительная фильтрация по категориям, но лишь для случая, когда в списке компонентов выбран ТОЛЬКО com_content. Соответственно, нужны отдельные копии модуля для каждой категории основного компонента Joomla, а также для каждого дополнительного приложения. В пределах копии можно объединять категории com_content или несколько компонентов. Нет возможности объединить, например, комментарии к категориям и комментарии к приложениям, отличным от com_content, в один блок. Мой метод позволяет в пределах блока фильтровать комментарии к категориям и отдельным материалам приложения com_content и одновременно - к другим компонентам и их структурным элементам. Подробно и с примерами объясню принцип такой гибкой фильтрации.
Постим иллюстрированные статьи Joomla-сайта на Facebook, используя OG-тегиОпубликовано: 13.09.2015, 13:06 Автор: Ogri Просмотров: 14061
Некоторое время назад я написал цикл статей о внедрении кнопок социальных медиа в сайт на Joomla 2.5. Перейдя на 3.x (на момент написания этот сайт работает под 3.4.4), я продолжал держать на страницах статей кнопки от share42, интегрированные по той же методике, и до определенного времени их функционал работал на ура. Однако с некоторых пор начались определенные глюки при расшаривании статей в некоторых соцсетях. В частности, раньше при попытке поделиться в Facebook давалась возможность выбрать одну из картинок, имеющихся на странице. Теперь же такая опция пропала, картинка выбиралась самим скриптом Фейсбука, причем отфонарно. Пришлось разобраться, что изменилось в политике Закерберга, и под эти изменения подстроиться. Результатам этого исследования данная статья и посвящена.
Но прежде всего я обновил скрипт от share42 и обнаружил, что он теперь датируется маем 2014-го. Я на тот момент использовал версию от октября 2013-го. Заменил скрипт на более свежий, но проблема осталась. Найдя в коде событие клика по кнопке FB, открывающее окно "Поделиться", обнаружил, что вызывается сервис sharer.php. Перед его вызовом формируется строка запроса, состоящая из нескольких параметров: url, title, summary (description)
и массив images[]
. Последний параметр-массив и формировал выбор картинок в диалоге.
С некоторых пор Facebook изменил набор параметров sharer.php. Собственно, все кроме ссылки на расшариваемую страницу были попросту уволены. Нынешний вид обработки события клика по кнопке должен выглядеть так:
Joomla: Фильтруем контент по материалам, категориям и компонентамОпубликовано: 16.06.2014, 16:20 Автор: Ogri Просмотров: 15248
В статьях о привязке соцкнопок и хлебных крошек к определенным страницам Joomla-сайта рассматривалась фильтрация только по материалам. Единственное исключение - во второй из них было также указано, как скрыть навигатор на странице избранных материалов. Но что если нужно привязать модуль либо другое расширение, а в общем случае - любой кусок кода к выбранным категориям, компонентам, определенным страницам компонентов, а то и ко всему перечисленному одновременно? Вы скажете, что модули и так привязываются к пунктам меню, а при использовании более продвинутого менеджера модулей (например, Advanced Module Manager) - и к категориям, статьям, пользователям, компонентам и т. д. Это так; но, чтобы выводить модуль с разными настройками вывода на соответствующих страницах, придется создать несколько его копий, привязанных к этим страницам. Например, на этом сайте модуль последних комментариев выводит список комментариев к материалам тех категорий и компонентов, на странице которых он высвечивается. Поскольку структура сайта достаточно разветвленная, да к тому же он еще и мультиязычный, количество копий модуля - целых 8 (восемь!) только для русской части сайта. Неудобно.
Предлагаемое решение обеспечит гибкость и контекстность вывода контента по заданным критериям. Знание кода желательно, но я постараюсь дать точные рекомендации по его внедрению, что позволит и менее квалифицированным джумловодам его использовать при условии точного выполнения процедуры. К тому же, я попытался в отдельной статье подробно описать структуру внутренних ссылок сайта на Joomla, что призвано облегчить понимание алгоритма. Ну что, по коням?
Структура внутренних ссылок сайта на JoomlaОпубликовано: 13.06.2014, 17:11 Автор: Ogri Просмотров: 38882
За последнее время я написал и внедрил несколько функций, позволяющих фильтровать вывод страниц сайта, работающего на CMS Joomla версии 2.5 и новее. Перед тем, как поделиться ими с общественностью, затрону тему, вынесенную в заголовок этой статьи, поскольку понимание принципа формирования внутренних ссылок на страницы джумловских приложений поможет лучше разобраться в их алгоритмах.
Немного теории
Приложения для CMS Joomla разрабатываются в виде компонентов. Компоненты отвечают за вывод страниц сайта. Ссылка на каждую страницу генерируется в соответствующем компоненте в стандартном формате URI:
http://[имя сайта]/index.php?[строка запроса]
Строка запроса (query string) представляет из себя последовательность пар ключ=значение
, разделенных амперсандом. Значения ключей и определяют вывод каждой страницы. URI страниц генерируются в соответствии со структурой компонента. Нас сейчас интересует не механизм формирования ссылок, а результат для каждой страницы или групп страниц конкретного приложения. Зная, как идентифицировать ключи и их значения, можно гибко манипулировать выводом контента.
Использование псевдонимов пунктов меню в JoomlaОпубликовано: 03.12.2013, 17:47 Автор: Ogri Просмотров: 13968
В предыдущей статье я описал процесс переноса информационного наполнения сайта-источника на сайт-приемник и интегрирования его в виде отдельного раздела в структуру сайта-приемника. Компонент J2XML справился с этой задачей хорошо. Поставить ему оценку "отлично" не позволил тот факт, что, как отмечалось в конце статьи, его функционал не включает перенос и интеграцию структуры меню. Впрочем, воспроизвести ее на сайте-приемнике вручную не заняло много времени. А вот когда я начал привязывать пункты к соответствующим элементам контента, то столкнулся с некоей проблемой. Именно в процессе ее решения я впервые в своей практике познакомился с опцией, вынесенной в заголовок данной статьи.
Опишу задачу. На сайте-источнике было несколько меню. На сайте-приемнике нужно поместить их в том же виде - отдельными модулями, но, поскольку новый контент должен по задумке стать отдельным разделом, в URL и хлебных крошках все подразделы должны содержать название и алиас раздела. Меню же, соответствующие подразделам, при этом должны быть первого уровня. Однако, если выполняется второе условие, то не выполняется первое. Вот тут и помогла опция выбора типа пункта меню как псевдонима другого пункта.
Логика возникновения проблемы станет ясной, когда я проиллюстрирую ее конкретным примером. Для пущей наглядности заменю узкую тематику моего сайта-источника более популярной, а именно - автомобилями. Надеюсь, читатели, относящиеся к прекрасному полу, простят меня за тему, более типичную для интересов пола сильного )).
Joomla: Сливаем два сайта в один при помощи компонента J2XMLОпубликовано: 27.11.2013, 20:26 Автор: Ogri Просмотров: 36946
Не так давно я имел помимо данного сайта еще один. По некоторым причинам решил присоединить второй сайт к этому в качестве отдельного раздела. При этом тот другой сайт появился даже раньше этого и имел несколько сотен статей, разделенных на полтора десятка категорий, а также полсотни зарегистрированных пользователей. На этом сайте к тому времени информации было не меньше. Задача: перенести наполнение сайта на другой так, чтобы создать объединенную структуру.
Нашелся отличный компонент J2XML, заточенный именно под подобную задачу. Он бесплатный, имеет гибкие настройки. Экспортирует связанную структуру материалов, категорий и пользователей с сайта-донора и интегрирует ее в структуру сайта-акцептора. До комплекта переносит еще и картинки в статьях, а также ссылки (WebLinks). Перенос, как следует из названия, осуществляется через XML-файлы. Детальному рассмотрению настроек и функционала компонента J2XML и посвящена эта статья.
Photoshop: Обработка снимков картин для online-галереиОпубликовано: 10.10.2013, 17:49 Автор: Ogri Просмотров: 11373
Как я уже отмечал в статье о редактировании анимированных GIF-ов, я никак не являюсь экспертом по Фотошопу. Однако, изучив некоторые сценарии обработки изображений, с успехом их использую. К примеру, когда открыл здесь на сайте галереи двух не чужих мне юных художников, то озаботился методом, вынесенным в заголовок статьи. Опишу задачу нагляднее.
Дано: фотография картины. В своем первозданном виде она никак не годится для выкладывания:
Ожидаемый результат:
Последовательность действий по превращению первого во второе и вынесена на повестку сегодняшнего дня.
Кастомная страница 404 в Joomla 2.5Опубликовано: 27.08.2013, 19:34 Автор: Ogri Просмотров: 21159
Тема, вынесенная в заголовок статьи, вроде бы описана и обсуждена в сети множество раз. И тем не менее, как это зачастую бывает, информация в каждом источнике неполна. Общая картина складывается из разрозненных сведений, а некоторые частные глюки, с которыми мне пришлось столкнуться, не освещены вообще, - по крайней мере, я такового освещения не нашел и придумал свое решение. Поэтому цель данной статьи (как и всех прочих) - собрать воедино инфу из инета, структурировать, дополнить собственным опытом и передать на суд сетевой общественности.
- Joomla 2.5: Убираем хлебные крошки с выбранных страниц
- Кнопки социальных сетей в Joomla 2.5. Выборочное подключение
- Кнопки социальных сетей в Joomla 2.5. Плавающая панель от Share42
- Кнопки социальных сетей в Joomla 2.5. Варианты от Яндекса и Pluso
- Кнопки социальных сетей в Joomla 2.5
- Миграция с Joomla 1.5 на Joomla 2.5. Эпилог
- Миграция с Joomla 1.5 на Joomla 2.5. Ч.2-2. Шаблон, редактор и другие расширения
- Миграция с Joomla 1.5 на Joomla 2.5. Ч.2-1. Перенос jDownloads и jComments
- Миграция с Joomla 1.5 на Joomla 2.5. Ч.1. Перенос информационного наполнения
- Миграция с Joomla 1.5 на Joomla 2.5. Предисловие
Новые
-
20.07.2020, 00:53
Joomla 3: Перенаправление на ту же страницу после авторизации -
13.02.2017, 14:09
Joomla: как добавить свои языковые константы или переопределить существующие -
13.02.2017, 13:23
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments -
23.06.2016, 10:48
Единая фильтрация вывода модуля mod_jcomments_latest -
13.09.2015, 13:06
Постим иллюстрированные статьи Joomla-сайта на Facebook, используя OG-теги
Популярные
-
118347
Миграция с Joomla 1.5 на Joomla 2.5. Ч.2-1. Перенос jDownloads и jComments -
87536
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments -
63821
Редактирование анимированных GIF-имиджей в Photoshop CS3 -
61134
Joomla: как добавить свои языковые константы или переопределить существующие -
44830
Цифровые коды WEB (веб) цветов для сайта
Авторизация
Гитара
Гостевая колонка
Последние комментарии
-
Joomla: Интегрируем reCAPTCHA v2 (NO CAPTCHA) в JComments
-
Тест
25.08.2020 11:37
Не выводит сообщение об ошибке, если галку не нажать в рекапче
-
Николай3333
05.08.2020 07:55
Неужели работает?
-
Дарья Смирнова
29.07.2020 06:02
Здравствуйте, все вроде сделала по инструкции, но точно так же никаких изменений. Разве что теперь ...
-
ТвойБро
24.03.2020 03:42
Огромное спасибо, помогло. Странно, что по дефолту в jcomments предлагает в настройках выбрать ...
-
Валерий
21.02.2020 03:25
Проверка
-
Денис
02.01.2020 21:21
УРАААА! Заработало после очистки кэша сайта! Спасибо!
-
Денис
02.01.2020 20:56
Забыл сказать, что этот вариант установился на сайт, но по-прежнему при использовании reCAPTCHA ...
-
Вованя
25.12.2019 18:31
12345
-
Вованя
25.12.2019 18:31
Проверка, просто проверяю. раз раз раз)
-
Тест
25.08.2020 11:37
-
Миграция с Joomla 1.5 на Joomla 2.5. Ч.2-1. Перенос jDownloads и jComments
-
Андрей67
11.08.2020 16:54
У меня такая же картина, нет кнопки Импорт. как быть?
-
Андрей67
11.08.2020 16:54