Maksclub Опубликовано 11 июля, 2014 Жалоба Поделиться Опубликовано 11 июля, 2014 upd: Все сам нашел - не исправил config.php Цитата Ссылка на сообщение Поделиться на другие сайты
Vince Опубликовано 19 апреля, 2015 Жалоба Поделиться Опубликовано 19 апреля, 2015 Все работает! Спасибо!Кроме как вы и заметили картинка не удаляетсяЕще вопрос только 1 картинку можно добавлять, как в товаре галерею нельзя? Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 11 мая, 2015 Жалоба Поделиться Опубликовано 11 мая, 2015 Все работает! Спасибо!Кроме как вы и заметили картинка не удаляетсяЕще вопрос только 1 картинку можно добавлять, как в товаре галерею нельзя?да.. это решение как превью для блога, можно и галерею, но придется чуть иначе подойти к вопросу - по примеру товаров или перечислением изо в строке изо таблицы базы данных с последующие расшифровкой в скрипте и обработкой в массив и какой смысл в этом для типового решения, когда можно чисто в редакторе приметить для блока с галереей идентификатор или класс и обработать ява скриптом в необходимом вас виде и функциями анимации, предпросмотра и т.п. Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 11 мая, 2015 Жалоба Поделиться Опубликовано 11 мая, 2015 автору респект, подобное решение у меня давно есть но до ресайза руки не доходили... попробую для последней версии именно это решение, если действительно есть косяк с удалением поправлю и выложу в паблике... Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 11 мая, 2015 Жалоба Поделиться Опубликовано 11 мая, 2015 автору респект, подобное решение у меня давно есть но до ресайза руки не доходили... попробую для последней версии именно это решение, если действительно есть косяк с удалением поправлю и выложу в паблике...удаление в админке превью - в post.tpl добавляем // Удаление изображений $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); ща посмотрю что с удалением из директории и при удалении статьи Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 11 мая, 2015 Жалоба Поделиться Опубликовано 11 мая, 2015 удаление в админке превью - в post.tpl добавляем // Удаление изображений $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); ща посмотрю что с удалением из директории и при удалении статьивсе нормально работает за исключением удаления ресайзов...для этого вместо public function delete_image($id) { $query = $this->db->placehold("SELECT image FROM __blog WHERE id=?", intval($id)); $this->db->query($query); $filename = $this->db->result('image'); if(!empty($filename)) { $query = $this->db->placehold("UPDATE __blog SET image=NULL WHERE id=?", $id); $this->db->query($query); $query = $this->db->placehold("SELECT count(*) as count FROM __blog WHERE image=? LIMIT 1", $filename); $this->db->query($query); $count = $this->db->result('count'); if($count == 0) { @unlink($this->config->root_dir.$this->config->original_images_dir.$filename); } } } пилим /* * * Удаление изображения статьи * @param $id * */ public function delete_image($id) { $query = $this->db->placehold("SELECT image FROM __blog WHERE id=?", intval($id)); $this->db->query($query); $filename = $this->db->result('image'); if(!empty($filename)) { $query = $this->db->placehold("UPDATE __blog SET image=NULL WHERE id=?", $id); $this->db->query($query); $query = $this->db->placehold("SELECT count(*) as count FROM __blog WHERE image=? LIMIT 1", $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->post_images_dir.$file.".*x*.".$ext); if(is_array($rezised_images)) foreach (glob($this->config->root_dir.$this->config->post_images_dir.$file.".*x*.".$ext) as $f) @unlink($f); @unlink($this->config->root_dir.$this->config->original_images_dir.$filename); } } } а также вместо public function delete_post($id) { if(!empty($id)) { $query = $this->db->placehold("DELETE FROM __blog WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) { $query = $this->db->placehold("DELETE FROM __comments WHERE type='blog' AND object_id=?", intval($id)); if($this->db->query($query)) return true; } } return false; } пилим по тому же принципу public function delete_post($id) { if(!empty($id)) { $query = $this->db->placehold("DELETE FROM __blog WHERE id=? LIMIT 1", intval($id)); if($this->db->query($query)) { $query = $this->db->placehold("DELETE FROM __comments WHERE type='blog' AND object_id=?", intval($id)); if($this->db->query($query)) return true; } } if(!empty($filename)) { $query = $this->db->placehold("UPDATE __blog SET image=NULL WHERE id=?", $id); $this->db->query($query); $query = $this->db->placehold("SELECT count(*) as count FROM __blog WHERE image=? LIMIT 1", $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->post_images_dir.$file.".*x*.".$ext); if(is_array($rezised_images)) foreach (glob($this->config->root_dir.$this->config->post_images_dir.$file.".*x*.".$ext) as $f) @unlink($f); @unlink($this->config->root_dir.$this->config->original_images_dir.$filename); } } return false; } вроде так.... версия симплы последняя, работоспособность проверена, все норм, но разумеется не копированием файлов - действуйте по инструкции.... Для тех кто копирует - напоминаю о конфиге, который тож нужно изменить, но его нет в архиве по понятным причинам... всем удачи))) автору еще раз респект... Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 12 мая, 2015 Жалоба Поделиться Опубликовано 12 мая, 2015 Работа проделана полезная, автору благодарность. Но только не проще ли бы уже сделать сразу ресайз общий, чтоб работал и для категорий и для прочих? Принципиальных трудностей вроде бы быть не должно. А то сейчас получается копирование кода с небольшим изменением параметров. Оно, конечно, практически работает, но очень уж некрасиво... И трудозатраты на общий ресайз, ИМХО, были бы не намного выше, чем у этой разработки. А уж польза-то была бы неизмеримо выше... Цитата Ссылка на сообщение Поделиться на другие сайты
Алексей Склейнов Опубликовано 12 мая, 2015 Жалоба Поделиться Опубликовано 12 мая, 2015 Работа проделана полезная, автору благодарность.Но только не проще ли бы уже сделать сразу ресайз общий, чтоб работал и для категорий и для прочих? Принципиальных трудностей вроде бы быть не должно. А то сейчас получается копирование кода с небольшим изменением параметров. Оно, конечно, практически работает, но очень уж некрасиво...И трудозатраты на общий ресайз, ИМХО, были бы не намного выше, чем у этой разработки. А уж польза-то была бы неизмеримо выше...ты прав, но как расширение функционала пусть будет отдельный обработчик, который впоследствии можно будет применить не только конкретно к блогу но и к подобным модулям (новости, история и т.п.) а также в целом где необходимо превью.... да и потом, я, к примеру, не расширяю существующую форму обратной связи, а как правило добавляю свою, если она отличается от дефолтной... да, отдельным файлом, но когда заказчик просит что то изменить в ней - мне проще работать с собственным файлом... плюс при последующем обновлении движка эти файлы (поскольку они отдельные) не будут затронуты, а это значит что именно с твоими доработками ничего не случится и никто не станет на тебя гнать не по делу - ты сам знаешь как это бывает.... Цитата Ссылка на сообщение Поделиться на другие сайты
Des Опубликовано 27 ноября, 2015 Жалоба Поделиться Опубликовано 27 ноября, 2015 Нашёл не дописанный кусок в пункте 9 предоставленной инструкции. Кроме "В файле "api/Design.php" добавляем плагин для смарти в __construct (там где и остальные)" А именно это: $this->smarty->cache_dir = 'cache'; $this->smarty->registerPlugin('modifier', 'resize', array($this, 'resize_modifier')); $this->smarty->registerPlugin('modifier', 'token', array($this, 'token_modifier')); $this->smarty->registerPlugin('modifier', 'plural', array($this, 'plural_modifier')); $this->smarty->registerPlugin('function', 'url', array($this, 'url_modifier')); $this->smarty->registerPlugin('modifier', 'first', array($this, 'first_modifier')); $this->smarty->registerPlugin('modifier', 'cut', array($this, 'cut_modifier')); $this->smarty->registerPlugin('modifier', 'date', array($this, 'date_modifier')); $this->smarty->registerPlugin('modifier', 'time', array($this, 'time_modifier')); Заменить на это: $this->smarty->cache_dir = 'cache'; $this->smarty->registerPlugin('modifier', 'resizepost', array($this, 'resize_modifier_post')); $this->smarty->registerPlugin('modifier', 'resize', array($this, 'resize_modifier')); $this->smarty->registerPlugin('modifier', 'token', array($this, 'token_modifier')); $this->smarty->registerPlugin('modifier', 'plural', array($this, 'plural_modifier')); $this->smarty->registerPlugin('function', 'url', array($this, 'url_modifier')); $this->smarty->registerPlugin('modifier', 'first', array($this, 'first_modifier')); $this->smarty->registerPlugin('modifier', 'cut', array($this, 'cut_modifier')); $this->smarty->registerPlugin('modifier', 'date', array($this, 'date_modifier')); $this->smarty->registerPlugin('modifier', 'time', array($this, 'time_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_modifier_post($filename, $width=0, $height=0, $set_watermark=false,$crop = false) { $resized_filename = $this->image->add_resize_params($filename, $width, $height, $set_watermark, $crop); $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->post_images_dir.$resized_filename_encoded.'?'.$this->config->token($resized_filename); } Цитата Ссылка на сообщение Поделиться на другие сайты
Des Опубликовано 27 ноября, 2015 Жалоба Поделиться Опубликовано 27 ноября, 2015 Возникла еще одна проблема, картинки не отображались, если адрес сайта начинается с https:// Для этого заменил содержимое resize/resizepost.php на: <?php chdir('..'); require_once('api/Simpla.php'); $filename = $_GET['file']; $token = $_GET['token']; $filename = str_replace('%2F', '/', $filename); //if(substr($filename, 0, 6) == 'http:/') // $filename = 'http://'.substr($filename, 6); $simpla = new Simpla(); if(!$simpla->config->check_token($filename, $token)) exit('bad token'); $resized_filename = $simpla->image->resize($filename); //if(is_readable($resized_filename)) // header('Location: '.$_SERVER['REQUEST_URI']); if(is_readable($resized_filename)) { header('Content-type: image'); print file_get_contents($resized_filename); } Цитата Ссылка на сообщение Поделиться на другие сайты
Des Опубликовано 27 ноября, 2015 Жалоба Поделиться Опубликовано 27 ноября, 2015 Последний коммент не актуальный Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.