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

Как известно, модули Joomla привязываются к пунктам меню. В случае mod_jcomments_latest введена также привязка к компонентам. Есть еще и дополнительная фильтрация по категориям, но лишь для случая, когда в списке компонентов выбран ТОЛЬКО com_content. Соответственно, нужны отдельные копии модуля для каждой категории основного компонента Joomla, а также для каждого дополнительного приложения. В пределах копии можно объединять категории com_content или несколько компонентов. Нет возможности объединить, например, комментарии к категориям и комментарии к приложениям, отличным от com_content, в один блок. Мой метод позволяет в пределах блока фильтровать комментарии к категориям и отдельным материалам приложения com_content и одновременно - к другим компонентам и их структурным элементам. Подробно и с примерами объясню принцип такой гибкой фильтрации.

Некоторое время назад я написал цикл статей о внедрении кнопок социальных медиа в сайт на 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-сайта рассматривалась фильтрация только по материалам. Единственное исключение - во второй из них было также указано, как скрыть навигатор на странице избранных материалов. Но что если нужно привязать модуль либо другое расширение, а в общем случае - любой кусок кода к выбранным категориям, компонентам, определенным страницам компонентов, а то и ко всему перечисленному одновременно? Вы скажете, что модули и так привязываются к пунктам меню, а при использовании более продвинутого менеджера модулей (например, Advanced Module Manager) - и к категориям, статьям, пользователям, компонентам и т. д. Это так; но, чтобы выводить модуль с разными настройками вывода на соответствующих страницах, придется создать несколько его копий, привязанных к этим страницам. Например, на этом сайте модуль последних комментариев выводит список комментариев к материалам тех категорий и компонентов, на странице которых он высвечивается. Поскольку структура сайта достаточно разветвленная, да к тому же он еще и мультиязычный, количество копий модуля - целых 8 (восемь!) только для русской части сайта. Неудобно.

Предлагаемое решение обеспечит гибкость и контекстность вывода контента по заданным критериям. Знание кода желательно, но я постараюсь дать точные рекомендации по его внедрению, что позволит и менее квалифицированным джумловодам его использовать при условии точного выполнения процедуры. К тому же, я попытался в отдельной статье подробно описать структуру внутренних ссылок сайта на Joomla, что призвано облегчить понимание алгоритма. Ну что, по коням?

Upd: English version of the article: The structure of internal links within Joomla site.


За последнее время я написал и внедрил несколько функций, позволяющих фильтровать вывод страниц сайта, работающего на CMS Joomla версии 2.5 и новее. Перед тем, как поделиться ими с общественностью, затрону тему, вынесенную в заголовок этой статьи, поскольку понимание принципа формирования внутренних ссылок на страницы джумловских приложений поможет лучше разобраться в их алгоритмах.

Немного теории

Приложения для CMS Joomla разрабатываются в виде компонентов. Компоненты отвечают за вывод страниц сайта. Ссылка на каждую страницу генерируется в соответствующем компоненте в стандартном формате URI:

http://[имя сайта]/index.php?[строка запроса]

Строка запроса (query string) представляет из себя последовательность пар ключ=значение, разделенных амперсандом. Значения ключей и определяют вывод каждой страницы. URI страниц генерируются в соответствии со структурой компонента. Нас сейчас интересует не механизм формирования ссылок, а результат для каждой страницы или групп страниц конкретного приложения. Зная, как идентифицировать ключи и их значения, можно гибко манипулировать выводом контента.

Upd: English version of the article: Using of menu item aliases in Joomla.


В предыдущей статье я описал процесс переноса информационного наполнения сайта-источника на сайт-приемник и интегрирования его в виде отдельного раздела в структуру сайта-приемника. Компонент J2XML справился с этой задачей хорошо. Поставить ему оценку "отлично" не позволил тот факт, что, как отмечалось в конце статьи, его функционал не включает перенос и интеграцию структуры меню. Впрочем, воспроизвести ее на сайте-приемнике вручную не заняло много времени. А вот когда я начал привязывать пункты к соответствующим элементам контента, то столкнулся с некоей проблемой. Именно в процессе ее решения я впервые в своей практике познакомился с опцией, вынесенной в заголовок данной статьи.

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

Логика возникновения проблемы станет ясной, когда я проиллюстрирую ее конкретным примером. Для пущей наглядности заменю узкую тематику моего сайта-источника более популярной, а именно - автомобилями. Надеюсь, читатели, относящиеся к прекрасному полу, простят меня за тему, более типичную для интересов пола сильного )).

Upd: English version of the article: Joomla: Merge two sites into one using component J2XML.


Не так давно я имел помимо данного сайта еще один. По некоторым причинам решил присоединить второй сайт к этому в качестве отдельного раздела. При этом тот другой сайт появился даже раньше этого и имел несколько сотен статей, разделенных на полтора десятка категорий, а также полсотни зарегистрированных пользователей. На этом сайте к тому времени информации было не меньше. Задача: перенести наполнение сайта на другой так, чтобы создать объединенную структуру.

Нашелся отличный компонент J2XML, заточенный именно под подобную задачу. Он бесплатный, имеет гибкие настройки. Экспортирует связанную структуру материалов, категорий и пользователей с сайта-донора и интегрирует ее в структуру сайта-акцептора. До комплекта переносит еще и картинки в статьях, а также ссылки (WebLinks). Перенос, как следует из названия, осуществляется через XML-файлы. Детальному рассмотрению настроек и функционала компонента J2XML и посвящена эта статья.

Upd: English version of the article: Photoshop: Processing photos of paintings for online gallery.


Как я уже отмечал в статье о редактировании анимированных GIF-ов, я никак не являюсь экспертом по Фотошопу. Однако, изучив некоторые сценарии обработки изображений, с успехом их использую. К примеру, когда открыл здесь на сайте галереи двух не чужих мне юных художников, то озаботился методом, вынесенным в заголовок статьи. Опишу задачу нагляднее.

Дано: фотография картины. В своем первозданном виде она никак не годится для выкладывания:

ogri.me | Photoshop: Обработка снимков картин для online-галереи #01

Ожидаемый результат:

ogri.me | Photoshop: Обработка снимков картин для online-галереи #02

Последовательность действий по превращению первого во второе и вынесена на повестку сегодняшнего дня.

Upd: English version of the article: Custom 404 error page in Joomla 2.5.


Тема, вынесенная в заголовок статьи, вроде бы описана и обсуждена в сети множество раз. И тем не менее, как это зачастую бывает, информация в каждом источнике неполна. Общая картина складывается из разрозненных сведений, а некоторые частные глюки, с которыми мне пришлось столкнуться, не освещены вообще, - по крайней мере, я такового освещения не нашел и придумал свое решение. Поэтому цель данной статьи (как и всех прочих) - собрать воедино инфу из инета, структурировать, дополнить собственным опытом и передать на суд сетевой общественности.

Upd: English version of the article: Joomla 2.5: Remove breadcrumbs from specific pages.


Хлебные крошки (breadcrumbs), известные также как навигатор сайта, - полезный модуль Joomla. И, как всякий модуль, они могут привязываться ко всем или только определенным пунктам меню. Также можно отвязать их от всех или конкретных пунктов. Многие джумловоды желают скрыть навигатор на главной странице сайта, поскольку на ней он содержит только пункт "Главная" | "Home", к тому же без линка, не неся таким образом ни смысловой, ни функциональной нагрузки. Возможно, структура сайта предусматривает и другие страницы, на которых по тем или иным причинам есть смысл скрывать навигатор. Самым типичным примером является кастомная страница ошибки 404, которая, как я отмечаю в соответствующей статье, посвященной правилам ее создания и настройки, должна быть вписана в шаблон сайта, но при этом стоять как бы особняком. Навигатор на ней не только не нужен, но еще и идеологически вреден. Будем рассматривать именно эту страницу как частный случай, описывающий общий принцип отвязки хлебных крошек от определенного материала.

Upd: English version of the article: Social Media Buttons in Joomla 2.5. Selective placement.


Во время написания статьи о кастомизации страницы ошибки 404 я поднял тему, как отвязать от интерфейса страницы ненужные элементы. Отдельная статья посвящена выборочному скрытию модуля хлебных крошек. Также я пришел к выводу о нецелесообразности показа социальных кнопок на странице 404. Возможны и другие случаи, когда соцкнопки стоит скрыть на определенных страницах или наоборот - выводить только на некоторых. В данном цикле статей я как раз и столкнулся с подобной необходимостью: панели от Яндекса и Share42 выведены в соответствующих статьях исключительно для иллюстрации, сам же я использую вариант от Pluso. Поэтому я решил добавить сабжевую тему в цикл, а заодно сослаться на нее из статьи о 404-й станице как на один из этапов ее настройки.

Upd: English version of the article: Social Media Buttons in Joomla 2.5. Share42 floating vertical panel.


Нашлось еще одно симпатичное решение, позволяющее как просто вставить горизонтальную панель в тело статьи, так и подвесить вертикальную "плавающую" панель. Во втором случае кнопки будут присутствовать на любой странице сайта. Именно на этом варианте и остановимся, поскольку первый был рассмотрен в предыдущих статьях на примере других типов соцкнопок. Поможет в этом сайт share42.com, где можно настроить под себя панельку кнопок. Выбор соцсетей там богатый, к тому же есть почти все русские. Сконфигурировать свой вариант просто и интуитивно понятно. Выбираем размер кнопок, кликаем на нужных социальных сервисах, по желанию добавляем кнопки из раздела Прочее - E-Mail, печать и т. д. Тип панели с иконками выбираем - вертикальная "плавающая".

© 2011-2017 ogri.me
Использование и перепечатка материалов сайта разрешены и приветствуются. Прямая индексируемая ссылка на используемую статью или, на худой конец, на сам сайт была бы хорошей наградой автору за его нелегкий труд.