Главная Программирование Joomla JoomFish и PhocaGallery. Проблемы

JoomFish и PhocaGallery. Проблемы

Четверг, 23 Сентябрь 2010 | Раздел: Программирование - Joomla

 

JoomFish и PhocaGallery. ПроблемыПеред мной встала задача подружить эти два компонента. В первую очередь я скачал PhocaGallery JoomFish Files. Скачанный архив я поставил в JoomFish. Для этого зашел в “Элементы материала” - “Установить”. Всё успешно установилось! После этого я скопировал все изображения и категории PhocaGallery с языка ru на eng. Всё удачно скопировалось, пока всё олично. Идем дальше. Пробую написать перевод описания категории и изображения. Всё супер - перевод работает.

Что можно отнести к минусам:

1. В переводах при просмотре изображений и категорий галереи нет фильтров.

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

Какая несправедливость - почему при переводе стандартных материалов Joomla есть фильтр по категории и разделу, а для JoomFish нету :(

Решение проблемы:

Логика (как всегда) проста - понять как работают фильтры для стандартных материалов Joomla и сделать по аналогии.

Первое что я посмотрел это файл administrator/components/com_joomfish/contentelements/content.xml

В этом файле хранится информация о том как же JoomFish переводить таблицу #__content (таблица хранит все стандартные материалы Joomla). А также в этом xml-файле есть отдельная секция translationfilters, содержащая список фильтров:

<translationfilters>

<frontpage>id</frontpage>

<section>sectionid</section>

<category>catid</category>

<author>created_by</author>

<keyword>title</keyword>

<published>published</published>

<changed>created|modified</changed>

<trash>state</trash>

<archive>state</archive>

<id>id</id>

</translationfilters>

Возник конечно резонный вопрос: как эти фильтры обрабатываются? Узнаем! Т.е. необходимо найти где же происходит чтение и обработка этого xml. Сделал я следующее: взял в руки FireBug, посмотрел параметры POST запроса, при смене элемента материала, параметр task содержал translate.show. Недолго думаю я зашел в administrator/components/com_joomfish/controllers/translate.php, нашел там функцию showTranslate, далее перешел в функцию showTranslationOverview, в которой уже нашел следующие строки:

JLoader::import( 'models.TranslationFilter',JOOMFISH_ADMINPATH);

$tranFilters = getTranslationFilters($catid,$contentElement);

Как не сложно догадаться, первая строчка грузит модель TranslationFilter, а вторая выполняет функцию получения списка фильтров с параметрами $catid,$contentElement, где $catid - идентификатор элемента материала, $contentElement - собственно сам объект элемента материала.

Хорошо, открываем файл модели TranslationFilter и смотрим найденную функцию TranslationFilter. В ней выполняется метод $filterNames=$contentElement->getAllFilters(); который собственно и получает из xml файла список фильтров. Далее этот список перебирается и подключаются (инклудятся) все найденные файлы фильтров JPATH_SITE."/administrator/components/com_joomfish/contentelements/$filterType.php" ;

где $filterType = "translation".ucfirst(strtolower($key))."Filter" ; $key - это название фильтра из xml файла.

и создаются объекты этих фильтров: $filters[strtolower($key)] =  new $filterType($contentElement);

Собственно опишу сам родительский класс фильтра: translationFilter

атрибуты класса:

var $filterNullValue; // нулевое значение фильтра

var $filterType; // тип фильтра (должен совпадать с именем из xml файла элемента)

var $filter_value; // значение фильтра

var $filterField = false; // название поля в базе, по которому необходимо фильтровать

var $tableName = "";// название таблицы базы данных, по которой фильтруем

var $filterHTML=""; // html фильтра (не используется)

два метода:

"translation[имя фильтра]Filter" // метод констуктора

_createfilterHTML // метод создания html для фильтра, должен возвращать массив вида:

$arr[‘html’] - должен содержать поле фильтра (отмечу что можно любой html сюда вставлять)

$arr[‘title’] - заголовок фильтра - это та строчка которая выводится сверху html-а

 

собственно задача состоит в том чтобы создать класс фильтра и правильно описать эти две функции

 

2. Проблема при переводе пунктов меню, указывающих на галерею.

Описание проблемы:

1. Меняем стандартные глобальные настройки PhocaGallery

2. Создаем пункт меню с типом галереи. при создании не меняем настройки - а используем все по умолчанию

3. Заходим в JoomFish и копируем пункты меню на другой язык

4. В итоге получаем: В пунктах меню в скопированном языке установлены совсем не те глобальные параметры что нам нужны :(. А установлены первоначальные (дефолтные) глобальные параметры PhocaGallery.

Что делать?

Есть два варианта:

1. Ставить параметры для всех пунктов меню заново. (если их много - это будет долго)

2. Перед копированием на другой язык изменить файл, хранящий дефолтные глобальные параметры компонента “administrator/components/com_joomfish/config.xml”. (в нем придется разобраться - при том что и параметров у фоки не мало)

Последнее обновление 08.10.11 04:03
 

Комментарии  

 
0 #2 26.01.2013 15:13
Наблюдается такая проблема: в английском переводе отображаются все картинки категории, а в русском - только часть.
Что посоветуете?
Цитировать
 
 
0 #1 16.09.2012 01:03
Дык удалось написать фильтры для Фоки? В ближайшее время собираюсь делать их (правда без фиша). Не поделитесь ли опытом в виде кода?
Цитировать
 

Добавить комментарий


Защитный код
Обновить