altime Опубликовано 3 февраля, 2017 Жалоба Поделиться Опубликовано 3 февраля, 2017 файл admin/BrandAdmin.php покажите<?php require_once('api/Newcms.php'); ############################################# Class Category - Edit the good gategory############################################class BrandAdmin extends Newcms{ private $allowed_image_extentions = array('png', 'gif', 'jpg', 'jpeg', 'ico'); function fetch() { $brand = new stdClass; if($this->request->method('post')) { $brand->id = $this->request->post('id', 'integer'); $brand->name = $this->request->post('name'); $brand->description = $this->request->post('description'); $brand->url = $this->request->post('url', 'string'); $brand->meta_title = $this->request->post('meta_title'); $brand->meta_keywords = $this->request->post('meta_keywords'); $brand->meta_description = $this->request->post('meta_description'); // Не допустить одинаковые URL разделов. if(($c = $this->brands->get_brand($brand->url)) && $c->id!=$brand->id) { $this->design->assign('message_error', 'url_exists'); } else { if(empty($brand->id)) { $brand->id = $this->brands->add_brand($brand); $this->design->assign('message_success', 'added'); } else { $this->brands->update_brand($brand->id, $brand); $this->design->assign('message_success', 'updated'); } // Удаление изображения if($this->request->post('delete_image')) { $this->brands->delete_image($brand->id); } // Загрузка изображения $image = $this->request->files('image'); if(!empty($image['name']) && in_array(strtolower(pathinfo($image['name'], PATHINFO_EXTENSION)), $this->allowed_image_extentions)) { $this->brands->delete_image($brand->id); move_uploaded_file($image['tmp_name'], $this->root_dir.$this->config->brands_images_dir.$image['name']); $this->brands->update_brand($brand->id, array('image'=>$image['name'])); } $brand = $this->brands->get_brand($brand->id); } } else { $brand->id = $this->request->get('id', 'integer'); $brand = $this->brands->get_brand($brand->id); } $this->design->assign('brand', $brand); return $this->design->fetch('brand.tpl'); }} case 'disable':{foreach($ids as $id)$this->brands->update_brand($id, array('visible'=>0));break;}case 'enable':{foreach($ids as $id)$this->brands->update_brand($id, array('visible'=>1));break;} Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 3 февраля, 2017 Жалоба Поделиться Опубликовано 3 февраля, 2017 Не ну ты посмотри на него! Использует NULL версию симплы, и имеет наглость просить тут помощи! По мне так нужно отправлять куда подальше вот таких. Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 3 февраля, 2017 Жалоба Поделиться Опубликовано 3 февраля, 2017 Выполнила все 4 пункта. Лампочки переключаются, но до перезагрузки страницы. После изменений в файле BrandAdmin.php при попытке открыть страницу бренда выдает ошибку" Parse error: syntax error, unexpected 'case' (T_CASE) in /home/****/****/www/admin/BrandAdmin.php on line 70 "line 70 у меня - это case 'disable': Что делать дальше, ума не приложу Помогите, кто может! В инструкции в пункте 2 ошибка. Это пункт надо выполнять в ДРУГОМ файле, в simpla/BrandsAdmin.php Цитата Ссылка на сообщение Поделиться на другие сайты
altime Опубликовано 3 февраля, 2017 Жалоба Поделиться Опубликовано 3 февраля, 2017 В инструкции в пункте 2 ошибка. Это пункт надо выполнять в ДРУГОМ файле, в simpla/BrandsAdmin.phpСпасибо Цитата Ссылка на сообщение Поделиться на другие сайты
altime Опубликовано 3 февраля, 2017 Жалоба Поделиться Опубликовано 3 февраля, 2017 в шаблоне отключение видимости: {if $brand->visible}вывод бренда{/if}В каком месте шаблона нужно вставить этот код? Пробовала по всякому, после перезагрузки страницы состояние не сохраняется Цитата Ссылка на сообщение Поделиться на другие сайты
ahmed Опубликовано 4 февраля, 2017 Жалоба Поделиться Опубликовано 4 февраля, 2017 В каком месте шаблона нужно вставить этот код? Пробовала по всякому, после перезагрузки страницы состояние не сохраняетсяВставлять в зависимости от шаблона, от его содержимого и от своих целей. В предложенном решении есть ошибка, из-за чего "лампочка" у него выполняет роль чисто декоративную, смена состояния при клике реально не производится. Пробуйте в simpla/ajax/update_object.php заменить case 'brands':на case 'brand': Цитата Ссылка на сообщение Поделиться на другие сайты
altime Опубликовано 4 февраля, 2017 Жалоба Поделиться Опубликовано 4 февраля, 2017 Вставлять в зависимости от шаблона, от его содержимого и от своих целей. В предложенном решении есть ошибка, из-за чего "лампочка" у него выполняет роль чисто декоративную, смена состояния при клике реально не производится. Пробуйте в simpla/ajax/update_object.php заменить case 'brands':на case 'brand': Заменила. Результат тот же Видимо, эта публикация действительно недоработана. Жаль, функция удобная. Непонятно, почему она не реализована по умолчанию Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 4 февраля, 2017 Жалоба Поделиться Опубликовано 4 февраля, 2017 Заменила. Результат тот же Видимо, эта публикация действительно недоработана. Жаль, функция удобная. Непонятно, почему она не реализована по умолчаниюПоясните чем это удобно? Отключать бренд чтобы не выводить товары этого бренда, или для чего? Цитата Ссылка на сообщение Поделиться на другие сайты
altime Опубликовано 4 февраля, 2017 Жалоба Поделиться Опубликовано 4 февраля, 2017 Поясните чем это удобно? Отключать бренд чтобы не выводить товары этого бренда, или для чего?Чтобы не отображать пустые бренды, когда в них заканчивается товар. Приходится их временно удалять в админке, а потом (при появлении товара) снова добавлять Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 4 февраля, 2017 Жалоба Поделиться Опубликовано 4 февраля, 2017 Чтобы не отображать пустые бренды, когда в них заканчивается товар. Приходится их временно удалять в админке, а потом (при появлении товара) снова добавлятьЭто давно уже исправлено в симпле.Какая у вас версия? Цитата Ссылка на сообщение Поделиться на другие сайты
altime Опубликовано 4 февраля, 2017 Жалоба Поделиться Опубликовано 4 февраля, 2017 Это давно уже исправлено в симпле.Какая у вас версия?2.3.6 Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 Это давно уже исправлено в симпле.Какая у вас версия? Подскажите пожалуйста, как исправить в старых версиях данную проблему с брендами? Чтобы не отображать пустые бренды с отсутствующими товарами. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 Подскажите пожалуйста, как исправить в старых версиях данную проблему с брендами? Чтобы не отображать пустые бренды с отсутствующими товарами.А у вас какая версия симплы? Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 А у вас какая версия симплы? Simpla 2.0 Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 Simpla 2.0Покажите содержимое функции get_brands в api/Brands.php. Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 Покажите содержимое функции get_brands в api/Brands.php. public function get_brands($filter = array()) { $brands = array(); $category_id_filter = ''; if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold('LEFT JOIN __products p ON p.brand_id=b.id LEFT JOIN __products_categories pc ON p.id = pc.product_id WHERE pc.category_id in(?@)', (array)$filter['category_id']); $order = 'b.name'; if(!empty($filter['sort'])) switch ($filter['sort']) { case 'position': $order = 'b.position'; break; case 'name': $order = 'b.name'; break; case 'image': $order = 'b.image'; break; } // Выбираем все бренды $query = $this->db->placehold("SELECT DISTINCT b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.meta_canonical, b.image, b.visible, b.position FROM __brands b $category_id_filter ORDER BY $order"); $this->db->query($query); return $this->db->results(); } Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 (изменено) UPD: 30.08.2017 Внёс правки. Изменено 31 августа, 2017 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 24 августа, 2017 Жалоба Поделиться Опубликовано 24 августа, 2017 Спасибо большое, попробую исправить, отпишусь! Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 25 августа, 2017 Жалоба Поделиться Опубликовано 25 августа, 2017 Noxter Сделал всё по вашей инструкции, работает. А подскажите пожалуйста, какой добавить доп. фильтр по полю visible? Не получилось. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 25 августа, 2017 Жалоба Поделиться Опубликовано 25 августа, 2017 Noxter Сделал всё по вашей инструкции, работает. А подскажите пожалуйста, какой добавить доп. фильтр по полю visible? Не получилось.Чуть позже сделаю и выложу инструкцию. Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 28 августа, 2017 Жалоба Поделиться Опубликовано 28 августа, 2017 Доброе утро, Noxter! Подскажите пожалуйста? Цитата Ссылка на сообщение Поделиться на другие сайты
Skynet Опубликовано 30 августа, 2017 Жалоба Поделиться Опубликовано 30 августа, 2017 Чуть позже сделаю и выложу инструкцию. Пытался сам сделать, не получилось! Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 30 августа, 2017 Жалоба Поделиться Опубликовано 30 августа, 2017 (изменено) Файл api/Brands.php, заменить функцию get_brands на эту: public function get_brands($filter = array()) { $category_id_filter = ''; $visible_filter = ''; $active_filter = ''; $in_stock_filter = ''; if(isset($filter['in_stock'])) $in_stock_filter = $this->db->placehold('AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock'])); if(isset($filter['visible'])) $visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible'])); if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold("LEFT JOIN __products p ON p.brand_id=b.id LEFT JOIN __products_categories pc ON p.id = pc.product_id WHERE pc.category_id in(?@) $visible_filter $in_stock_filter", (array)$filter['category_id']); if(isset($filter['active'])) $active_filter = $this->db->placehold('AND visible = ?', intval($filter['active'])); // Выбираем все бренды $query = $this->db->placehold("SELECT DISTINCT b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image FROM __brands b $category_id_filter WHERE 1 $in_stock_filter $visible_filter $active_filter ORDER BY b.name"); $this->db->query($query); return $this->db->results(); }Файл view/ProductsView.php меняем выборку брендов на эту: // Выбираем бренды, они нужны нам в шаблоне if(!empty($category)) { $brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>true, 'active'=>true)); $category->brands = $brands; }Пробуйте. Изменено 30 августа, 2017 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
loxter Опубликовано 30 августа, 2017 Жалоба Поделиться Опубликовано 30 августа, 2017 Файл api/Brands.php, заменить функцию get_brands на эту: public function get_brands($filter = array()) { $category_id_filter = ''; $visible_filter = ''; $active_filter = ''; $in_stock_filter = ''; if(isset($filter['in_stock'])) $in_stock_filter = $this->db->placehold('AND (SELECT count(*)>0 FROM __variants pv WHERE pv.product_id=p.id AND pv.price>0 AND (pv.stock IS NULL OR pv.stock>0) LIMIT 1) = ?', intval($filter['in_stock'])); if(isset($filter['visible'])) $visible_filter = $this->db->placehold('AND p.visible=?', intval($filter['visible'])); if(!empty($filter['category_id'])) $category_id_filter = $this->db->placehold("LEFT JOIN __products p ON p.brand_id=b.id LEFT JOIN __products_categories pc ON p.id = pc.product_id WHERE pc.category_id in(?@) $visible_filter $in_stock_filter", (array)$filter['category_id']); if(isset($filter['active'])) $active_filter = $this->db->placehold('AND visible = ?', intval($filter['active'])); // Выбираем все бренды $query = $this->db->placehold("SELECT DISTINCT b.id, b.name, b.url, b.meta_title, b.meta_keywords, b.meta_description, b.description, b.image WHERE 1 $in_stock_filter $visible_filter $active_filter FROM __brands b $category_id_filter ORDER BY b.name"); $this->db->query($query); return $this->db->results(); }[/code] Файл [b]view/ProductsView.php[/b] меняем выборку брендов на эту: [code=auto:0] // Выбираем бренды, они нужны нам в шаблоне if(!empty($category)) { $brands = $this->brands->get_brands(array('category_id'=>$category->children, 'visible'=>true, 'active'=>true)); $category->brands = $brands; }Пробуйте. Запрос явно ошибочный, так как в нем сначала поставлено WHERE, а лишь затем FROМ. Раньше такие ошибки делали начинающие, а теперь, видимо, дошла очередь до специалистов с 8-летним стажем в Simpla. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 30 августа, 2017 Жалоба Поделиться Опубликовано 30 августа, 2017 (изменено) Запрос явно ошибочный, так как в нем сначала поставлено WHERE, а лишь затем FROМ. Раньше такие ошибки делали начинающие, а теперь, видимо, дошла очередь до специалистов с 8-летним стажем в Simpla.Только из-за таких дебилов как ты и не выкладывают готовые решения на форуме, ты ведь затычка во все дыры. Ошибка не детская, а машинальная я делал на скорую руку но тебе дебилу обязательно нужно дое***** вместо того чтобы просто указать где ошибка. P.S. Ты конченый Kors, я не знаю как тебя окружающие люди терпят. UPD: 30.08.2017 Внёс правки. Изменено 31 августа, 2017 пользователем Noxter Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.