yakutec Опубликовано 14 июня, 2014 Жалоба Поделиться Опубликовано 14 июня, 2014 Вот так я сделал превью фото для категорийИдем в файл config/config.php, правим строки: ;Изображения категорий categories_images_dir = files/categories/; resized_category_img_images_dir = files/categories/preview/; Создаем папку previews в папке files/categories (решение хранить в originals мне не понравилось)Идем в файл api/Design.php и регистриуем новую функцию для Smarty: $this->smarty->registerPlugin('modifier', 'resize', array($this, 'resize_modifier')); $this->smarty->registerPlugin('modifier', 'resize_catalog', array($this, 'resize_catalog_modifier')); ... public function resize_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); return $this->config->root_url.'/'.$this->config->resized_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename); } public function resize_catalog_modifier($filename, $width=0, $height=0, $set_watermark=false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark); $resized_filename_encoded = $resized_filename; if(substr($resized_filename_encoded, 0, 7) == 'http://') $resized_filename_encoded = rawurlencode($resized_filename_encoded); $resized_filename_encoded = rawurlencode($resized_filename_encoded); return $this->config->root_url.'/'.$this->config->resized_category_img_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename); } Теперь нужно реализовать ресайз для категорий, для этого правим .htaccess в корне RewriteRule ^files/categories/preview/(.+) resize/resize.php?file=$1&is_category&token=%{QUERY_STRING} Файл resize/resize.php $filename = $_GET['file']; $token = $_GET['token']; $is_category = 0; ... $resized_filename = $simpla->image->resize($filename, $is_category); И api/Image.php function resize($filename, $is_category = 0) ...// Пути к папкам с картинками if($is_category == 1) { $originals_dir = $this->config->root_dir.$this->config->categories_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_category_img_images_dir; } else { $originals_dir = $this->config->root_dir.$this->config->original_images_dir; $preview_dir = $this->config->root_dir.$this->config->resized_images_dir; }Добавляем код для удаления превью, при удалении фотографий в файле api/Categories.php // Удалить изображение категории public function delete_image($categories_ids) { $categories_ids = (array) $categories_ids; $query = $this->db->placehold("SELECT image FROM __categories WHERE id in(?@)", $categories_ids); $this->db->query($query); $filenames = $this->db->results('image'); if(!empty($filenames)) { $query = $this->db->placehold("UPDATE __categories SET image=NULL WHERE id in(?@)", $categories_ids); $this->db->query($query); foreach($filenames as $filename) { $query = $this->db->placehold("SELECT count(*) as count FROM __categories WHERE image=?", $filename); $this->db->query($query); $count = $this->db->result('count'); if($count == 0) { $file = pathinfo($filename, PATHINFO_FILENAME); $ext = pathinfo($filename, PATHINFO_EXTENSION); // Удалить все ресайзы $rezised_images = glob($this->config->root_dir.$this->config->resized_category_img_images_dir.$file."*.".$ext); if(is_array($rezised_images)) { foreach (glob($this->config->root_dir.$this->config->resized_category_img_images_dir.$file."*.".$ext) as $f) { @unlink($f); } } @unlink($this->config->root_dir.$this->config->categories_images_dir.$filename); } } unset($this->categories_tree); unset($this->all_categories); } } Теперь достаточно написать код в шаблоне вида: {$c->image|resize_catalog:300:120} чтобы получить отрисайзенное фото категории. Цитата Ссылка на сообщение Поделиться на другие сайты
xilt Опубликовано 7 сентября, 2014 Жалоба Поделиться Опубликовано 7 сентября, 2014 RewriteRule ^files/categories/preview/(.+) resize/resize.php?file=$1&is_category&token=%{QUERY_STRING} Файл resize/resize.php $filename = $_GET['file'];$token = $_GET['token'];$is_category = 0;...$resized_filename = $simpla->image->resize($filename, $is_category); Замечен баг, ресайз сохранялся в стандартную директорию миниатюр, а не в нужную папку. Что нужно исправить: RewriteRule ^files/categories/preview/(.+) resize/resize.php?file=$1&is_category=1&token=%{QUERY_STRING} $filename = $_GET['file']; $token = $_GET['token']; $is_category = $_GET['is_category']; После изменения, все заработало как нужно, работает на [2.3.6]. yakutec, спасибо за решение Цитата Ссылка на сообщение Поделиться на другие сайты
villain1988 Опубликовано 16 сентября, 2014 Жалоба Поделиться Опубликовано 16 сентября, 2014 Вот так я сделал превью фото для категорий Идем в файл config/config.php, правим строки: ;Изображения категорий categories_images_dir = files/categories/; resized_category_img_images_dir = files/categories/preview/; Создаем папку previews в папке files/categories (решение хранить в originals мне не понравилось)Идем в файл api/Design.php и регистриуем новую функцию для Smarty: Замечен еще один баг:Нужно создать папку preview а не previews Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.