ps-simpla Опубликовано 16 июля, 2015 Жалоба Поделиться Опубликовано 16 июля, 2015 http://i.imgur.com/c7qX2xB.jpg Аналог загрузки изображений как в товаре Возможности:- Загрузка более одного изображения- Удаление изображений- Вывод изображений в шаблон Минусы:- Оригинальные изображения загружаются в папку file/originals- "Резаные" изображения загружаются в папку file/productsp.s. В ближайшее время сделаю загрузку по другим папкам #0 - Запрос в БД: CREATE TABLE IF NOT EXISTS `s_images_post` ( `id` int(11) NOT NULL AUTO_INCREMENT, `post_id` int(11) NOT NULL DEFAULT '0', `filename` varchar(255) NOT NULL DEFAULT '', `name` varchar(255) NOT NULL, `position` int(11) NOT NULL, PRIMARY KEY (`id`), KEY `filename` (`filename`), KEY `post_id` (`post_id`), KEY `position` (`position`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; #1 - \simpla\design\html\post.tplнайдем: $('input[name="date"]').datepicker({ regional:'ru' }); ниже вставим: // Сортировка изображений $(".images ul").sortable({ tolerance: 'pointer' }); // Удаление изображений $(".images a.delete").live('click', function() { $(this).closest("li").fadeOut(200, function() { $(this).remove(); }); return false; }); // Загрузить изображение с компьютера $('#upload_image').click(function() { $("<input class='upload_image' name=images[] type=file>").appendTo('div#add_image').focus().click(); }); найдем: <!-- Правая колонка свойств товара --> <div id="column_right"> ниже вставим: <!-- Изображения поста --> <div class="block layer images"> <h2>Изображения поста</h2> <ul> {foreach from=$post_images item=image} <li> <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a> <img src="{$image->filename|resize:100:100}" alt="" /> <input type=hidden name='images[]' value='{$image->id}'> </li> {/foreach} </ul> <span class=upload_image><i class="dash_link" id="upload_image">Добавить изображение</i></span></span> <div id=add_image></div> </div> #2 - \simpla\PostAdmin.phpнайдем: public function fetch() { ниже вставим: $images = array(); найдем: $this->design->assign('message_error', 'url_exists'); ниже вставим: $images = $this->blog->get_images(array('post_id'=>$post->id)); найдем: else { $this->blog->update_post($post->id, $post); $post = $this->blog->get_post($post->id); $this->design->assign('message_success', 'updated'); } ниже вставим: // Удаление изображений $images = (array)$this->request->post('images'); $current_images = $this->blog->get_images(array('post_id'=>$post->id)); foreach($current_images as $image) { if(!in_array($image->id, $images)) $this->blog->delete_image($image->id); } // Порядок изображений if($images = $this->request->post('images')) { $i=0; foreach($images as $id) { $this->blog->update_image($id, array('position'=>$i)); $i++; } } // Загрузка изображений if($images = $this->request->files('images')) { for($i=0; $i<count($images['name']); $i++) { if ($image_name = $this->image->upload_image($images['tmp_name'][$i], $images['name'][$i])) { $this->blog->add_image($post->id, $image_name); } else { $this->design->assign('error', 'error uploading image'); } } } $images = $this->blog->get_images(array('post_id'=>$post->id)); найдем: $post = $this->blog->get_post(intval($post->id)); ниже вставим: if($post && $post->id) { // Изображения товара $images = $this->blog->get_images(array('post_id'=>$post->id)); } найдем: $this->design->assign('post', $post); выше вставим: $this->design->assign('post_images', $images); #3 - \api\Blog.php найдем: $query = $this->db->placehold("DELETE FROM __blog WHERE id=? LIMIT 1", intval($id)); выше вставим: $images = $this->get_images(array('post_id'=>$id)); foreach($images as $i) $this->delete_image($i->id); найдем: /* * * Следующий пост * @param $post * */ выше вставим: function get_images($filter = array()) { $post_id_filter = ''; $group_by = ''; if(!empty($filter['post_id'])) $post_id_filter = $this->db->placehold('AND i.post_id in(?@)', (array)$filter['post_id']); // images $query = $this->db->placehold("SELECT i.id, i.post_id, i.name, i.filename, i.position FROM __images_post AS i WHERE 1 $post_id_filter $group_by ORDER BY i.post_id, i.position"); $this->db->query($query); return $this->db->results(); } public function add_image($post_id, $filename, $name = '') { $query = $this->db->placehold("SELECT id FROM __images_post WHERE post_id=? AND filename=?", $post_id, $filename); $this->db->query($query); $id = $this->db->result('id'); if(empty($id)) { $query = $this->db->placehold("INSERT INTO __images_post SET post_id=?, filename=?", $post_id, $filename); $this->db->query($query); $id = $this->db->insert_id(); $query = $this->db->placehold("UPDATE __images_post SET position=id WHERE id=?", $id); $this->db->query($query); } return($id); } public function update_image($id, $image) { $query = $this->db->placehold("UPDATE __images_post SET ?% WHERE id=?", $image, $id); $this->db->query($query); return($id); } public function delete_image($id) { $query = $this->db->placehold("SELECT filename FROM __images_post WHERE id=?", $id); $this->db->query($query); $filename = $this->db->result('filename'); $query = $this->db->placehold("DELETE FROM __images_post WHERE id=? LIMIT 1", $id); $this->db->query($query); $query = $this->db->placehold("SELECT count(*) as count FROM __images_post WHERE filename=? 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->resized_images_dir.$file."*.".$ext); if(is_array($rezised_images)) foreach (glob($this->config->root_dir.$this->config->resized_images_dir.$file."*.".$ext) as $f) @unlink($f); @unlink($this->config->root_dir.$this->config->original_images_dir.$filename); } } #4 - \view\BlogView.php найдем: $post = $this->blog->get_post($url); ниже вставим: $post->images = $this->blog->get_images(array('post_id'=>$post->id)); $post->image = &$post->images[0]; #5 - вывод в шаблоне (post.tpl) <!-- большая --> {if $post->image} <a href="{$post->image->filename|resize:800:600:w}" class="zoom" rel="group"> <img src="{$post->image->filename|resize:200:300}" alt="{$post->name|escape}"> </a> {/if} <!-- маленькие --> {if $post->images|count>1} {foreach $post->images|cut as $i=>$image} <a href="{$image->filename|resize:800:600:w}" class="zoom" rel="group"><img src="{$image->filename|resize:95:95}" alt="{$post->name|escape}" /></a> {/foreach} {/if} Цитата Ссылка на сообщение Поделиться на другие сайты
ST_RU Опубликовано 16 июля, 2015 Жалоба Поделиться Опубликовано 16 июля, 2015 можно глупый вопрос?меня всегда удивляют такие доработки ... типа картинки в постЧто мешает вставить сколько угодно изображений в аннотацию и body ???ну правда зачем городить это всё? Денис редактор же включил в Simpla ...вставляй картинки / не хочу и отступы там можно сделать и прочее Может я чего не понимаю? Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 16 июля, 2015 Жалоба Поделиться Опубликовано 16 июля, 2015 А в товар, по-Вашему, нужны картинки? Или тоже ни к чему, раз можно вставить в описание? И в категорию... Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 16 июля, 2015 Жалоба Поделиться Опубликовано 16 июля, 2015 можно глупый вопрос?меня всегда удивляют такие доработки ... типа картинки в постЧто мешает вставить сколько угодно изображений в аннотацию и body ???ну правда зачем городить это всё? Денис редактор же включил в Simpla ...вставляй картинки / не хочу и отступы там можно сделать и прочее Может я чего не понимаю? намного легче сделать галерею через такой модуль нежели вставлять непонятно что и сколько. если в посте нужен фотоотчет, будете вставлять 100 фоток? Цитата Ссылка на сообщение Поделиться на другие сайты
ST_RU Опубликовано 16 июля, 2015 Жалоба Поделиться Опубликовано 16 июля, 2015 (изменено) А в товар, по-Вашему, нужны картинки? Или тоже ни к чему, раз можно вставить в описание?И в категорию... всё можно оформить как хочешь...вот товар, оформленный через ОБЫЧНЫЙ редактор, встроенный в симпла на тебе пример на моём сайтеhttp://instrument-54.ru/products/rems-pikus-s235 Изменено 17 июля, 2015 пользователем ST_RU Цитата Ссылка на сообщение Поделиться на другие сайты
ST_RU Опубликовано 16 июля, 2015 Жалоба Поделиться Опубликовано 16 июля, 2015 (изменено) А в товар, по-Вашему, нужны картинки? Или тоже ни к чему, раз можно вставить в описание?И в категорию... http://i.gyazo.com/6cfe45a5332d3418566ad8243ca7ac49.png в любой шаблон стили...которые есть в конце списка при выборев редактореhttp://i.gyazo.com/f7f00da393788bc309bcec5216208b54.png под "СЕБЯ" этот список можно нагородить.Встроенный редактор справляется со всеми задачами по оформлению текстов.если мозгами раскинуть Изменено 17 июля, 2015 пользователем ST_RU Цитата Ссылка на сообщение Поделиться на другие сайты
ps-simpla Опубликовано 17 июля, 2015 Автор Жалоба Поделиться Опубликовано 17 июля, 2015 для меня и для заказчика такое решение более приятно и легок в управлении Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 17 июля, 2015 Жалоба Поделиться Опубликовано 17 июля, 2015 Встроенный редактор справляется со всеми задачами по оформлению текстов.если мозгами раскинутьЕсли мозгами раскинуть еще больше, то и обычный HTML справится...И из Новосибирска в Петербург можно ходить пешком или ездить на вело, были бы способности... Решение, представленное ТС, очень хорошее и полезное. Если Вы в состоянии представить свой вариант того, как делать аналогичное, то попробуйте расписать в деталях свой метод. Интересно будет сравнить. Вместо того, чтобы абстрактно болтать... Цитата Ссылка на сообщение Поделиться на другие сайты
Maksclub Опубликовано 20 июля, 2015 Жалоба Поделиться Опубликовано 20 июля, 2015 можно глупый вопрос? А когда нужно вывести статьи на главную и страницы... как вы будете выводить это дело? Цитата Ссылка на сообщение Поделиться на другие сайты
Gragory Опубликовано 22 августа, 2015 Жалоба Поделиться Опубликовано 22 августа, 2015 (изменено) ps-simpla: p.s. В ближайшее время сделаю загрузку по другим папкам Когда ожидается доработка? Изменено 22 августа, 2015 пользователем Gragory Цитата Ссылка на сообщение Поделиться на другие сайты
Eddy Опубликовано 14 декабря, 2015 Жалоба Поделиться Опубликовано 14 декабря, 2015 Kак добавить большое фото - blog.tpl ? Цитата Ссылка на сообщение Поделиться на другие сайты
Eddy Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 вывод в шаблоне (blog.tpl) kak ? Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 иоже интересен вопрос как в blog.tpl вывести иображения? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 (изменено) вывод в шаблоне (blog.tpl) kak ? иоже интересен вопрос как в blog.tpl вывести иображения? попробуйте в view/BlogView.php заменить $posts = $this->blog->get_posts($filter); if(empty($posts)) return false; на // Выбираем статьи из базы $posts = array(); $temp_posts = $this->blog->get_posts($filter); if(empty($temp_posts)) return false; $posts_ids = array(); foreach($temp_posts as $p) { $posts[$p->id] = $p; $posts_ids[] = $p->id; } $images = $this->blog->get_images(array('post_id'=>$posts_ids)); foreach($images as $i) $posts[$i->post_id]->images[] = $i; тогда будет доступны все фото в блоге. Изменено 23 февраля, 2016 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 попробуйте в view/BlogView.php после $posts = $this->blog->get_posts($filter); if(empty($posts)) return false; добавить $posts_ids = array(); foreach($posts as $p) $posts_ids[] = $p->id; $images = $this->blog->get_images(array('post_id'=>$posts_ids)); foreach($images as $i) $posts[$i->post_id]->images[] = $i; тогда будет доступны все фото в блоге. Спасибо вывод я понимаю такой в шаблоне blog.tpl {foreach $post->images as $i=>$image} <a href="{$image->filename|resize:800:600:w}" class="zoom" rel="group"><img src="{$image->filename|resize:95:95}" alt="{$post->name|escape}" /></a> {/foreach} Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 Спасибо вывод я понимаю такой в шаблоне blog.tpl {foreach $post->images as $i=>$image} <a href="{$image->filename|resize:800:600:w}" class="zoom" rel="group"><img src="{$image->filename|resize:95:95}" alt="{$post->name|escape}" /></a> {/foreach} ну если вам все нужны фото. если нет, то {$image=$post->images|first} Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 (изменено) ну если вам все нужны фото. если нет, то {$image=$post->images|first} немного не понял как вывести только первое изображение Изменено 22 февраля, 2016 пользователем shooroop Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 {$image=$post->images|first} <a href="{$image->filename|resize:800:600:w}" class="zoom" rel="group"><img src="{$image->filename|resize:95:95}" alt="{$post->name|escape}" /></a> Так пробовали без цикла? Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 (изменено) {$image=$post->images|first} <a href="{$image->filename|resize:800:600:w}" class="zoom" rel="group"><img src="{$image->filename|resize:95:95}" alt="{$post->name|escape}" /></a> Так пробовали без цикла?да но при этом запись дублируется {foreach $posts as $post} <div id="" class="col-md-12 col-sm-12" style="margin-bottom: 10px;"> <div id="" class="col-md-5 col-sm-5 blo"> {if $post->images} {$image=$post->images|first} <img src="{$image->filename|resize:95:95}" alt="{$post->name|escape}" /> {else}<img src="design/{$settings->theme|escape}/images/noblog.jpg" alt="" />{/if} </div> <div id="" class="col-md-7 col-sm-7"> <h3><a data-post="{$post->id}" href="blog/{$post->url}">{$post->name|escape}</a></h3> <p>{$post->annotation}</p> <p>{$post->date|date}</p> </div> </div> {/foreach} получаем Изменено 22 февраля, 2016 пользователем shooroop Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 вариаций больше нет? Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 вариаций больше нет?кинь в личку blog.tpl вроде не должно Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 22 февраля, 2016 Жалоба Поделиться Опубликовано 22 февраля, 2016 кинь в личку blog.tpl вроде не должнов лс Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 23 февраля, 2016 Жалоба Поделиться Опубликовано 23 февраля, 2016 в лсзаменил код в #14 там небыло учтено того что ключи массива не являются айди постов, из-за этого давало 2ю фотку. Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 16 марта, 2016 Жалоба Поделиться Опубликовано 16 марта, 2016 в блоге работает, а как вывести на главной? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 25 марта, 2016 Жалоба Поделиться Опубликовано 25 марта, 2016 никто не знает как вывести на главной картинки? Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.