ps-simpla Опубликовано 16 апреля, 2015 Жалоба Поделиться Опубликовано 16 апреля, 2015 http://s7.hostingkartinok.com/uploads/images/2015/04/c3da1e8098f98e92295be007e113717b.png Часто поднимался вопрос как сделать изображение для поста блога Нам надо:Дополнительно поле type="file" для загрузки файла Возможности:- Загрузка изображения- Удаление изображения- Вывод ссылки изображения в шаблон- Расширение изображений которые можно загружать #0 - Запрос в БД: ALTER TABLE `s_blog` ADD `image` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `name` #1 - \simpla\design\html\post.tplнайдем: $('input[name="date"]').datepicker({ regional:'ru' }); и ниже вставим: $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); найдем: <!-- Правая колонка свойств товара --> <div id="column_right"> и ниже вставим: <!-- Изображение поста --> <div class="block layer images" style="margin-top: 44px;"> <h2>Изображение поста</h2> <input class='upload_image' name=image type=file> <input type=hidden name="delete_image" value=""> {if $post->image} <ul> <li> <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a> <img src="../{$config->blog_images_dir}{$post->image}" alt="" /> </li> </ul> {/if} </div> #2 - \simpla\PostAdmin.phpнайдем: class PostAdmin extends Simpla { ниже вставим: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico'); найдем: else { $this->blog->update_post($post->id, $post); $post = $this->blog->get_post($post->id); $this->design->assign('message_success', 'updated'); } ниже вставим: // Удаление изображения if($this->request->post('delete_image')) { $this->blog->delete_image($post->id); } // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->blog->delete_image($post->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->blog_images_dir.$image['name']); $this->blog->update_post($post->id, array('image'=>$image['name'])); } $post = $this->blog->get_post(intval($post->id)); #3 - \api\Blog.php найдем: b.name, и рядом вставим (в 2-х случаях): b.image, найдем: $query = $this->db->placehold("DELETE FROM __blog WHERE id=? LIMIT 1", intval($id)); и ниже вставим: $this->delete_image($id); найдем: /* * * Следующий пост * @param $post * */ и выше вставим: // Удалить изображение поста public function delete_image($id) { $id = (array) $id; $query = $this->db->placehold("SELECT image FROM __blog WHERE id in(?@)", $id); $this->db->query($query); $filenames = $this->db->results('image'); if(!empty($filenames)) { $query = $this->db->placehold("UPDATE __blog SET image=NULL WHERE id in(?@)", $id); $this->db->query($query); foreach($filenames as $filename) { $query = $this->db->placehold("SELECT count(*) as count FROM __blog WHERE image=?", $filename); $this->db->query($query); $count = $this->db->result('count'); if($count == 0) { @unlink($this->config->root_dir.$this->config->blog_images_dir.$filename); } } } } #5 - \confing\confing.phpнайдем: ;Изображения категорий categories_images_dir = files/categories/; ниже вставим: ;Изображения блога blog_images_dir = files/blog/; Не забываем создать папку "blog" в папке "file" #4 - вывод в шаблоне {if $post->image}<img src="../{$config->blog_images_dir}{$post->image}" alt="" />{/if} Тоже самое + ресайз by Виталий АнатольевичНесколько изображений для поста блога Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 16 апреля, 2015 Жалоба Поделиться Опубликовано 16 апреля, 2015 (изменено) зачем дублировать было же? линк Изменено 16 апреля, 2015 пользователем shooroop Цитата Ссылка на сообщение Поделиться на другие сайты
ps-simpla Опубликовано 16 апреля, 2015 Автор Жалоба Поделиться Опубликовано 16 апреля, 2015 Спасибо Цитата Ссылка на сообщение Поделиться на другие сайты
mart Опубликовано 17 апреля, 2015 Жалоба Поделиться Опубликовано 17 апреля, 2015 зачем дублировать было же? линк СпасибоОпубликовал. Альтернативное решение никогда не повредит. Цитата Ссылка на сообщение Поделиться на другие сайты
Gandalf Опубликовано 10 мая, 2015 Жалоба Поделиться Опубликовано 10 мая, 2015 Подскажите как сделать ресайз для картинки Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) подскажите,как сделать изображение для категории статьи?Для статей у меня получилось сделать по вашему примеру.Вот мой порядок действий:0) добавил в бд в таблицу s_article_categories поле для изображений 1) в файл simpla/design/html/article_category.tpl уже есть код // Удаление изображений $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); + добавил <!-- Правая колонка свойств товара --> <div id="column_right"> <!-- Изображение категории --> <div class="block layer images"> <h2>Изображение категории</h2> <input class='upload_image' name=image type=file> <input type=hidden name="delete_image" value=""> {if $category->image} <ul> <li> <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a> <img src="../{$config->categories_images_dir}{$category->image}" alt="" /> </li> </ul> {/if} </div> </div> 2)simpla/ArticleCategoryAdmin.phpдобавлена строчка: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico'); и после else { $this->articles->update_category($category->id, $category); $this->design->assign('message_success', 'updated'); } вставил: // Удаление изображения if($this->request->post('delete_image')) { $this->articles->delete_image($category->id); } // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->articles->delete_image($category->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->categories_images_dir.$image['name']); $this->categories->update_category($category->id, array('image'=>$image['name'])); } $category = $this->articles->get_category(intval($category->id)); 3)далее если на основе категории то идем в /api/Categories.php??? Подскажите, плиз! Мб надо новый файл создать и засунуть его в api? Изменено 24 июля, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Смотрите в api/Articles.php Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Смотрите в api/Articles.phpну там я делал, вывод картинок для статей. А сейчас мне надо сделать вывод картинок для категорий статей. Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Там и функции категорий в этом файле. Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) Изображение для категории статей Запрос в mysql; ALTER TABLE `s_article_categories` ADD `image` VARCHAR(255) NOT NULL AFTER `name`; simpla/design/html/article_category.tpl После: <script> $(function() { Вставляем // Удаление изображений $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); Далее вставляем в правую колонку, или куда вам удобно. <div class="block layer images" style="margin-top: 44px;"> <h2>Изображение категории</h2> <input class='upload_image' name=image type=file> <input type=hidden name="delete_image" value=""> {if $category->image} <ul> <li> <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a> <img src="../{$config->article_category_images_dir}{$category->image}" alt="" /> </li> </ul> {/if} </div> confing/config.php ;Изображения категорий статей article_category_images_dir = files/artcatimg/; simpla/ArticleCategoryAdmin.phpПосле class ArticleCategoryAdmin extends Simpla { Вставляем: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico'); Далее в этом-же файле После $category->meta_description = $this->request->post('meta_description'); Вставляем $category->image = $this->request->post('image'); Далее в этом-же файле После $this->design->assign('message_success', 'updated'); } Вставляем: // Удаление изображения if($this->request->post('delete_image')) { $this->articles->delete_image($category->id); } // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->articles->delete_image($category->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->article_category_images_dir.$image['name']); $this->articles->update_category($category->id, array('image'=>$image['name'])); } $category = $this->articles->get_category(intval($category->id)); api/Articles.phpПосле c.name category, Вставляем в 2-ух местах c.image, В директории /files создаем папку artcatimg и устанавливаем на неё права 777. Вывод в шаблоне: {if $article_category->image}<img src="../{$config->article_category_images_dir}{$article_category->image}" alt="" />{/if} Возможно написал что-то не верно, не супер-профессионал в php - но работает. Изменено 24 июля, 2016 пользователем strukov Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 d Изображение для категории статей Запрос в mysql; ALTER TABLE `s_article_categories` ADD `image` VARCHAR(255) NOT NULL AFTER `name`; simpla/design/html/article_category.tpl После: <script> $(function() { Вставляем // Удаление изображений $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); Далее вставляем в правую колонку, или куда вам удобно. <div class="block layer images" style="margin-top: 44px;"> <h2>Изображение категории</h2> <input class='upload_image' name=image type=file> <input type=hidden name="delete_image" value=""> {if $category->image} <ul> <li> <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a> <img src="../{$config->article_category_images_dir}{$category->image}" alt="" /> </li> </ul> {/if} </div> confing/config.php ;Изображения категорий статей article_category_images_dir = files/artcatimg/; simpla/ArticleCategoryAdmin.phpПосле class ArticleCategoryAdmin extends Simpla { Вставляем: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico'); Далее в этом-же файле После $category->meta_description = $this->request->post('meta_description'); Вставляем $category->image = $this->request->post('image'); Далее в этом-же файле После $this->design->assign('message_success', 'updated'); } Вставляем: // Удаление изображения if($this->request->post('delete_image')) { $this->articles->delete_image($category->id); } // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->articles->delete_image($category->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->article_category_images_dir.$image['name']); $this->articles->update_category($category->id, array('image'=>$image['name'])); } $category = $this->articles->get_category(intval($category->id)); api/Articles.phpПосле c.name category, Вставляем в 2-ух местах c.image, В директории /files создаем папку artcatimg и устанавливаем на неё права 777. Вывод в шаблоне: {if $article_category->image}<img src="../{$config->article_category_images_dir}{$article_category->image}" alt="" />{/if} Возможно написал что-то не верно, не супер-профессионал в php - но работает.Спасибо, но выскочили ошибки после того как попытался добавить картинку в категорию статей : Warning: move_uploaded_file(files/artcatimg/6.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in Z:\home\123.ru\www\simpla\ArticleCategoryAdmin.php on line 55Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move 'Z:\tmp\php3805.tmp' to 'files/artcatimg/6.jpg' in Z:\home\123.ru\www\simpla\ArticleCategoryAdmin.php on line 55 Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) в 12:58 обновил инструкцию, сделайте все как написано у меня шаг за шагом.У меня всё отлично работает, пример http://market.uimax.ru/articles/samodel И читайте внимательно ошибки, которые выдает система. "No such file or directory " Изменено 24 июля, 2016 пользователем strukov Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 в 12:58 обновил инструкцию, сделайте все как написано у меня шаг за шагом.У меня всё отлично работает, пример http://market.uimax.ru/articles/samodel И читайте внимательно ошибки, которые выдает система. "No such file or directory "можешь выложить как вывести для статьи?А то у меня получился конфликт статей с категориями статей Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) Удалено Изменено 24 июля, 2016 пользователем strukov Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) ммммм..... можешь все файлы выложить? которые участвуют в выводе изображений для статей и категорий статей? или выложить инструкцию тогда по статьям, потому что по категориям ты выложил. Изменено 24 июля, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Ты что-то явно делаешь не так, потому что решение выше - рабочее, файлы скидывал все которые нужны.Папку создал? В конфиге прописал? Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 просто выложи плиз инструкцию для статей. ТОлько там мог ошибку налепить! Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Ты что-то явно делаешь не так, потому что решение выше - рабочее, файлы скидывал все которые нужны.Папку создал? В конфиге прописал?Да, конечно) просто там где фотку для категории статьи вроде добавляю там пропадает фотка для статьи Цитата Ссылка на сообщение Поделиться на другие сайты
strukov Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Можешь FTP дать? Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 в 12:58 обновил инструкцию, сделайте все как написано у меня шаг за шагом.У меня всё отлично работает, пример http://market.uimax.ru/articles/samodel И читайте внимательно ошибки, которые выдает система. "No such file or directory "откатил все назад. Убрал где я делал изображение для статей. Решил сперва сделать для категорий статей.Все по инструкции сделал и теперь выдает ошибку Fatal error: Call to undefined method Articles::delete_image() in Z:\home\123.ru\www\simpla\ArticleCategoryAdmin.php on line 54 смотрим эти строчки в них должна быть ошибка: { $this->articles->delete_image($category->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->article_category_images_dir.$image['name']); $this->articles->update_category($category->id, array('image'=>$image['name'])); } Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Попробуйте вместо $this->articles прописать везде $this->blog Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) Попробуйте вместо $this->articles прописать везде $this->blogтолько в файле simpla\ArticleCategoryAdmin.php? а что это даст? у меня получилось по аналогу с инструкцией в начале получилось вывести картинки для статей. Но не получается для категорий статей((( Изменено 24 июля, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Скорее всего, это тоже даст ошибки, но уже другие... Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 Скорее всего, это тоже даст ошибки, но уже другие...И с чего бы это? Если функция удаления изображения прописана в api/Blog.php (как указано в первому посту), то ее выполнять нужно соответственно $this->blog->delete_image. Я нигде в топике не увидел чтобы просили создать или редактировать какой-то файл api/Articles.php, если где-то упоминалось прошу указать где именно. Цитата Ссылка на сообщение Поделиться на другие сайты
motya88 Опубликовано 24 июля, 2016 Жалоба Поделиться Опубликовано 24 июля, 2016 (изменено) Итак, ниже по шагам я написал как сделал вывод изображений для статей:#0 - Запрос в БД: ALTER TABLE `s_articles` ADD `image` VARCHAR( 255 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `name` #1 - \simpla\design\html\article.tplнайдем: $('input[name="date"]').datepicker({ regional:'ru' }); и ниже вставим: $(".images a.delete").click( function() { $("input[name='delete_image']").val('1'); $(this).closest("ul").fadeOut(200, function() { $(this).remove(); }); return false; }); Потом в нужном месте вставим: <!-- Изображение поста --> <div class="block layer images"> <h2>Изображение поста</h2> <input class='upload_image' name=image type=file> <input type=hidden name="delete_image" value=""> {if $article->image} <ul> <li> <a href='#' class="delete"><img src='design/images/cross-circle-frame.png'></a> <img src="../{$config->articles_images_dir}{$article->image}" alt="" /> </li> </ul> {/if} </div> #2 - \simpla\ArticleAdmin.phpнайдем: class ArticleAdmin extends Simpla { ниже вставим: private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico'); найдем: else { $this->articles->update_article($article->id, $article); $article = $this->articles->get_article($article->id); $this->design->assign('message_success', 'updated'); } ниже вставим: // Удаление изображения if($this->request->post('delete_image')) { $this->articles->delete_image($article->id); } // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->articles->delete_image($article->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->articles_images_dir.$image['name']); $this->articles->update_article($article->id, array('image'=>$image['name'])); } $article = $this->articles->get_article(intval($article->id)); #3 - \api\Articles.php Вставил (в 2-х случаях): $query = $this->db->placehold("SELECT a.*, a.image, c.url category_url, c.name category FROM __articles a LEFT JOIN __article_categories c ON c.id = a.category_id $where LIMIT 1"); найдем: $query = $this->db->placehold("DELETE FROM __blog WHERE id=? LIMIT 1", intval($id)); и ниже вставим: $this->delete_image($id); найдем: /* * * Следующий пост * @param $post * */ и выше вставим: // Удалить изображение поста public function delete_image($id) { $id = (array) $id; $query = $this->db->placehold("SELECT image FROM __articles WHERE id in(?@)", $id); $this->db->query($query); $filenames = $this->db->results('image'); if(!empty($filenames)) { $query = $this->db->placehold("UPDATE __articles SET image=NULL WHERE id in(?@)", $id); $this->db->query($query); foreach($filenames as $filename) { $query = $this->db->placehold("SELECT count(*) as count FROM __articles WHERE image=?", $filename); $this->db->query($query); $count = $this->db->result('count'); if($count == 0) { @unlink($this->config->root_dir.$this->config->articles_images_dir.$filename); } } } } #5 - \confing\confing.phpпрописал ;Изображения статей articles_images_dir = files/articles/; Создал папку /files/articles #4 - вывод в шаблоне {if $article->image}<a href="article/{$article->url}" style="background-image:url(/{$config->articles_images_dir}{$article->image});"></a>{/if} ТУТ У МЕНЯ ВСЕ ПОЛУЧИЛОСЬ!!!!КАК ВЫВЕСТИ КАРТИНКУ ДЛЯ КАТЕГОРИИ СТАТЬИ? Изменено 24 июля, 2016 пользователем motya88 Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.