Понадобилось мне на компоненте Zoo сделать каталог сайтов. Решил использовать универсальный каталог, настроил вывод всех полей, но вот незадача! Zoo упорно не хотел показывать скрин сайта, потому что скрин я закидывал на хостинг картинок, а компонент понимает только относительные адреса к картинкам. Пришлось поковыряться, пошагово просмотреть логику приложению и решение было найдено:
1. идем в папку /media/zoo/elements/image и находим файл image.php
2. открываем его правим:
было
public function hasValue($params = array()) { $file = $this->get('file'); return !empty($file) && JFile::exists(JPATH_ROOT.DS.$this->get('file')); }
стало
public function hasValue($params = array()) { $file = $this->get('file'); if(!empty($file) and substr_count($file, 'http')){ /** добавим возможность вставки удаленных изображений*/ return @file_get_contents($file) ? true : false; } return !empty($file) && JFile::exists(JPATH_ROOT.DS.$this->get('file')); }
и ниже, было:
public function render($params = array()) { // init vars $params = $this->app->data->create($params); $title = $this->get('title'); $file = $this->app->zoo->resizeImage(JPATH_ROOT.DS.$this->get('file'), $params->get('width', 0), $params->get('height', 0)); $link = JURI::root() . $this->app->path->relative($file);
стало:
public function render($params = array()) { // init vars $params = $this->app->data->create($params); $title = $this->get('title'); if(substr_count($this->get('file'), 'http')){ /** добавим возможность вставки удаленных изображений*/ $link = $file = $this->get('file'); } else{ $file = $this->app->zoo->resizeImage(JPATH_ROOT.DS.$this->get('file'), $params->get('width', 0), $params->get('height', 0)); $link = JURI::root() . $this->app->path->relative($file); }
Таким образом, я добавил условие для проверки, является ли изображение удаленным или нет. При условии, что изображение удаленное — оно не будет проходить через функции ресайза Zoo и будет отдаваться таким как есть.
Спасибо) Все гуд)