Понадобилось мне на компоненте 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 и будет отдаваться таким как есть.
Спасибо) Все гуд)