Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

costas

Користувачі
  
  • Публікації

    2 822
  • З нами

  • Відвідування

Усі публікації користувача costas

  1. Вы господа разберитесь пожалуйста, что такое SCS OpenCart (ну уж точно не CMS), и не вводите народ в заблуждение, OpenCart это opencart.com, а myopencart.ru это русский форк данного проекта, который достаточно отличается от оригинала. И форум OpenCart находится тут http://forum.opencart.com/.Автоматизирована у Вас офлайн торговля, ну ни как не онлайн, нет закачки данных с сервера о заказах и прочих данных, за что платить 1000руб в месяц - за выгрузку каталога на сервер?
  2. Если честно, то слабо себе представляю как можно объяснить установку и настройку сервера Linux под хостинг человеку, не имеющему хотя бы базовых навыков Linux пользователя.
  3. Ubuntu 10.10.64 не серверный вариант, лучше всё таки 10.04 LTS, на 512Мбайт импорт\экспорт XLS работать не сможет, там если мне не изменяет память 512 нужно для самого модуля, а у Вас на весь сервер 512.Будет верным решением воспользоваться услугами unix-администратора, что бы он Вам всё поставил и настроил, и желательно не студента.
  4. Если я правильно понял то Вам подойдёт http://lib.clodo.ru/lamp-ubutu1004/, всё зависит от тарифа конечно же.Если Вы заказали Virtual Server, то Вам помимо действий описанных у них на сайте потребуется: - оптимизация СУБД MySQL (правка и тюнинг конфига, ибо там он всегда по дефолту) исходя из RAM вашего тарифа - оптимизация связки Вебсервер-PHP (возможно замена apache на lighthttpd или nginx + fastcgiPHP) - экономия по ресурсам в основном - защита стандартными средствами связки Вебсервер-PHP (исключить все возможности не влияющие на работу магазина, разадача бананов, настройка песочницы и тд) - возможно подключение и настройка модуля кеширования для связки Вебсервер-PHP - настройка и защита SSH и FTP должным образом - оптимизация ядра linux (sysctl, etc..) - настройка Firewall (iptables) - схема обновления установленнго ПО (пакетная база дистрибутива) - критические обновления обязательны. - дополнительно если нужна почта и dns, то тут то же много всего, начиная с выбора ПО и дальнейшей его настройки По части панели управления не увидел ничего вменяемого там, хотя гласят что есть всё, может пропустил... Вообщем использование VDS обычно требует наличие правильных рук, чтоб работало как часы...
  5. if (isset($data['filter_tag']) && $data['filter_tag']) { $sql .= " AND p.product_id IN (SELECT pt.product_id FROM " . DB_PREFIX . "product_tag pt WHERE pt.language_id = '" . (int)$this->config->get('config_language_id') . "' AND LOWER(pt.tag) LIKE '%" . $this->db->escape(strtolower($data['filter_tag'])) . "%')"; } if (isset($data['filter_category_id']) && $data['filter_category_id']) { if (isset($data['filter_sub_category']) && $data['filter_sub_category']) { $implode_data = array(); $this->load->model('catalog/category'); $categories = $this->model_catalog_category->getCategoriesByParentId($data['filter_category_id']); foreach ($categories as $category_id) { $implode_data[] = "p2c.category_id = '" . (int)$category_id . "'"; } $sql .= " AND p.product_id IN (SELECT p2c.product_id FROM " . DB_PREFIX . "product_to_category p2c WHERE " . implode(' OR ', $implode_data) . ")"; } else { $sql .= " AND p.product_id IN (SELECT p2c.product_id FROM " . DB_PREFIX . "product_to_category p2c WHERE p2c.category_id = '" . (int)$data['filter_category_id'] . "')"; } } if (isset($data['filter_manufacturer_id'])) { $sql .= " AND p.manufacturer_id = '" . (int)$data['filter_manufacturer_id'] . "'"; } Это из модели товара, конкретно из метода getProducts, это стандартный фильтр в котором есть - Теги, Категория, Производитель и т.д. Выбор группы товара попадает под условия Категория = category_id и Производитель = filter_manufacturer_id, собственно внутри это будет именно так и ни как по другому, стандартный фильтр есть и он работает, причём превосходно.Всё что требуется это добавить в существующую модель категорий в виде второго уровня категорий КатегорияПроизводитель, решается это формированием подкатегории в виде КатегорияПроизводитель на основании фильтрации по товару (не путать с фильтрацией самого товара). В работе для Товарная группа -> Фирма -> Товар: 1) Выбираете категории (все, ибо они у вас все родительские для КатегорияПроизводитель, других нет) 2) Выбираете для каждой выбранной категории Производителей на основании наличия товара в КатегорияТоварнаяГруппа и КатегорияПроизводитель, то есть если есть товар в Категории и Производителе зн КатегорияТоварнаяГруппа -> КатегорияПроизводитель присутствует. Механизм выборки сего списка основная головная боль. 3) Имеете КатегорияТоварнаяГруппа_ID -> КатегорияПроизводитель_ID = список товара по стандартному фильтру. 4) ЧПУ - возможно придётся допиливать чтоб для клиента выглядело именно как категория обе схемы работают одинаково в обе стороны, смена схемы по аналогии с валютой например, можно создавать по два метода на каждую схему, можно один, тут как программист решит.Модель категорий пилить неизбежно, до кучи все контроллеры где светятся списки товаров (если хотите причёсанные ссылки)... ЗЫ забыл упомянуть что всё это проделывается с Родительсими категориями и встроенным функционалом Производители, тоесть вложенность она визуальная, на деле есть категории и есть производители завязанные через товар... ИХМО изменение в схеме БД, хотябы изменение вышеобозначенной таблицы, упростило бы всё в разы...
  6. навскидку.. дописать в модель категории метод выбора производителей для конекретной категории по наличю товара, для выбора самого товара уже есть в модели фильтр по производителю, просто нужно включить его как обязательный фильтр ну и помудрить с ЧПУ.Что то похожее видел, но там ещё были изменения в структуре БД (таблица product_to_category) с привязкой товар-категория-производитель (три поля), в дефолтной поставке идёт товар-категория (два поля).
  7. То есть /алкогольные-напитки/водка/смирнов-номер-21 и /алкогольные-напитки/смирнов-номер-21 не одно и тоже? Просто если товар отображается в родительской категории и в дочерней как быть? По логике разумно иметь в url путь с категорией, + если добавить что товар может быть в двух дочерних категориях, получается, что бы учесть работу яшкина и правильную индексацию нужно пожертвовать логикой и визуализацией навигации, и привести всё к виду /смирнов-номер-21 ? Я правильно понял суть вопроса?
  8. Модуль идёт в составе магазина.Потому что магазин на базе opencart 1.5.0.5 Не позднее следующей недели...
  9. http://www.opencart.com/index.php?route=extension/extension/info&extension_id=2318&filter_search=CR2_HTML&filter_license=0&sort=e.date_modified&order=DESCв переписанном мной снято ограничение на три блока (анлим)... а вот платный http://www.opencart.com/index.php?route=extension/extension/info&extension_id=2401&filter_username=cryoutcreations
  10. Вообщем вопрос, есть модуль написанный "кем-то" и выложенный в бесплатном доступе на оф. сайте, есть такой же модуль но платный выложенный там же, разница между ними существенная (в бесплатном ограниченны возможности), у меня есть этот бесплатный модуль переписанный мной под мои нужды, в котором ряд ограничений сами собой отвалились (не все, то есть модуль не соответствует платному как впрочем уже и бесплатному), лицензий GPL и им же подобных там нет, могу я выкладывать такие модули здесь в свободном доступе? З.Ы. в дальнейшем вообще планирую от него избавиться в пользу аналога собственной разработки, но пока времени не особо...
  11. Про это я и забыл $_['text_items'] = '%s item(s) - %s';но это и не нужно по факту...
  12. В самом шаблоне этого кода нет, код формируется в catalog/controller/checkout/cart.phpмагия здесь $json['total'] = sprintf($this->language->get('text_items').... скрипт который обрабатывет запросы на страничке здесь catalog/view/javascript/common.js
  13. В магазине уже всё есть готовое admin/model/catalog/product.php: - class ModelCatalogProduct->addProduct($data) - тут все запросы к базе, включая сами таблицы берёте за основу admin/controller/catalog/product.php: - тут вся работа по обработке данных формы ($this->model_catalog_product->addProduct($this->request->post); и тд) - обработака самих форм + готовые шаблоны форм всё что требуется -это склонировать добавление товара в виде отдельного модуля с использованием существующей модели + шаблоны форм, всё достаточно тривиально... Что бы товар был отключен по дефолту в склонированной форме меняете поле <select name="status"> на тип hidden с нулевым значением...
  14. Задачка довольно интересная, у нас как раз идёт работа над таким модулем, пока написали только сам парсер, который читает модель в виде атрибутов и на основании модели парсит страницу, вторым этапом будет интеграция в виде модуля, версия магазина opencart 1.5.0.5.
  15. https://opencartforum.com/topic/3754-изменение-видов-ссылок-чпу/page__p__25404__fromsearch__1#entry25404
  16. costas

    MySQL

    -- данный тип коментария не поддерживается в вашей СУБД, удалите строки с "--"
  17. Обычно допускаются символы:подчёркивание тире точка остальное лишнее... примерно так: $pattern = '|^([a-z0-9_\.\-]{1,40})@([a-z0-9\.\-]{1,61})\.([a-z]{2,6})|is';
  18. Уважаемый, а Вы батенька вор. Это ж надо додуматься на сайте русскоязычной версии выкладывать воврованные модули... Это плевок с Вашей стороны во всех здесь присутствующих программистов занимающихся сопровождением данного проекта, чей сосбтвенно труд Вы и украли.З.Ы. ИХМО топик удлить, автора в перманент...
  19. Для information всё есть в админке, там просто прописываете "Псевдоним" и всё работает из коробки...
  20. ИХМО миграция магазина с другого движка, хотят сохранить все труды по продвижению в поисковых и тд, чтоб визуально выглядело так же..
  21. }elseif ($key == 'path') { $categories = explode('_', $value); $url = '/shop/category'; foreach ($categories as $category) { $url .= '/'.$category; } unset($data[$key]); }// Эта скобка пропущена /* SEO Custom URL */ if( $_u = $this->getURL($data['route']) ){ $url .= $_u; unset($data[$key]); }/* SEO Custom URL */
  22. <?php class ControllerCommonSeoUrl extends Controller { /* SEO Custom URL */ private $url_list = array ( 'common/home' => 'home', 'checkout/cart' => 'cart', 'account/register' => 'account/register' ); /* SEO Custom URL */ public function index() { // Add rewrite to url class if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); } // Decode URL if (isset($this->request->get['_route_'])) { $parts = explode('/', $this->request->get['_route_']); if ( count($parts) > 1 ) { if ($parts[1] == 'category'){ $this->request->get['path'] = $parts[2]; for ( $i = 3 ; $i < count($parts); $i++) { $this->request->get['path'] .= '_' . $parts[$i]; } }elseif( $parts[1] == 'item' ) { $this->request->get['product_id'] = $parts[2]; } } foreach ($parts as $part) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'"); if ($query->num_rows) { $url = explode('=', $query->row['query']); if ($url[0] == 'product_id') { $this->request->get['product_id'] = $url[1]; } if ($url[0] == 'category_id') { if (!isset($this->request->get['path'])) { $this->request->get['path'] = $url[1]; } else { $this->request->get['path'] .= '_' . $url[1]; } } if ($url[0] == 'manufacturer_id') { $this->request->get['manufacturer_id'] = $url[1]; } if ($url[0] == 'information_id') { $this->request->get['information_id'] = $url[1]; } } else { $this->request->get['route'] = 'error/not_found'; } } /* SEO Custom URL */ if ( $_s = $this->setURL($this->request->get['_route_']) ) { $this->request->get['route'] = $_s; }/* SEO Custom URL */ if (isset($this->request->get['product_id'])) { $this->request->get['route'] = 'product/product'; } elseif (isset($this->request->get['path'])) { $this->request->get['route'] = 'product/category'; } elseif (isset($this->request->get['manufacturer_id'])) { $this->request->get['route'] = 'product/manufacturer/product'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; } if (isset($this->request->get['route'])) { return $this->forward($this->request->get['route']); } } } public function rewrite($link) { if ($this->config->get('config_seo_url')) { $url_data = parse_url(str_replace('&', '&', $link)); $url = ''; $data = array(); parse_str($url_data['query'], $data); foreach ($data as $key => $value) { if (isset($data['route'])) { if ( (($data['route'] == 'product/manufacturer/product' || $data['route'] == 'product/product') && $key == 'manufacturer_id') || ($data['route'] == 'information/information' && $key == 'information_id')) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = '" . $this->db->escape($key . '=' . (int)$value) . "'"); if ($query->num_rows) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif( $key == 'product_id' ) { $url = '/shop/item/'.$value; unset($data[$key]); }elseif ($key == 'path') { $categories = explode('_', $value); $url = '/shop/category'; foreach ($categories as $category) { $url .= '/'.$category; } unset($data[$key]); /* SEO Custom URL */ if( $_u = $this->getURL($data['route']) ){ $url .= $_u; unset($data[$key]); }/* SEO Custom URL */ } } if ($url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . $key . '=' . $value; } if ($query) { $query = '?' . trim($query, '&'); } } return $url_data['scheme'] . '://' . $url_data['host'] . (isset($url_data['port']) ? ':' . $url_data['port'] : '') . str_replace('/index.php', '', $url_data['path']) . $url . $query; } else { return $link; } } else { return $link; } } /* SEO Custom URL */ public function getURL($route) { if( count($this->url_list) > 0) { foreach ($this->url_list as $key => $value) { if($route == $key) { return '/'.$value; } } } return false; } public function setURL($_route) { if( count($this->url_list) > 0 ){ foreach ($this->url_list as $key => $value) { if($_route == $value) { return $key; } } } return false; }/* SEO Custom URL */ } ?>
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.