Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

alex1990

Пользователи
  
  • Публикаций

    99
  • Зарегистрирован

  • Посещение

Все публикации пользователя alex1990

  1. Добрый день! Требуется убрать поддомены с ИМ с сохранением структуры дизайна и логики. Сейчас ИМ имеет субподдомены (3шт) для каждого бренда. Товаров около 6тыс, все они находятся в общей базе но разбиты в админке под каждый поддомен. Более подробная информация и ссылка сайт в ЛС.
  2. Тоже на это грешу. Надеюсь это не долго будет висеть в ПС. Задал здесь вопрос на случай если тоже кто-то сталкивался с этим.
  3. Добрый день! Столкнулся с проблемой выдачи описания товаров и категорий с частями кода в ПС. Где искать проблему ошибки? Для некоторых товаров отображается все нормально.
  4. Я не разработчик. Спасибо за помощь. В тексте поста был задан конкретный вопрос.
  5. Через штатное присвоение на все категории (около 300). Все внятно и понятно. читайте внимательно, я про 300 автоматом не писал.
  6. Я совсем ничего не понял. Мне без модуля нужно решить этот вопрос.
  7. Каким образом? Допустим если надо разместить 300 баннеров (под каждый раздел и подраздел).
  8. Добрый день! Стоит задача поставить изображения в каждый раздел, категорию и подкатегорию , в виде баннера, через стандартное присвоение изображения в админке во вкладке "Данные". В шаблоне "Категория" разметил как <img src="<?php echo $category['thumb']; ?>" alt="<?php echo $category['name']; ?>" /> А вот в контроллере не могу разобраться как и куда прописывать проверку наличия и вывод. <?php class ControllerProductCategory extends Controller { public function index() { $this->load->language('product/category'); $this->load->model('catalog/category'); $this->load->model('catalog/product'); $this->load->model('tool/image'); if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; } if (isset($this->request->get['sort'])) { $sort = $this->request->get['sort']; } else { $sort = 'p.sort_order'; } if (isset($this->request->get['order'])) { $order = $this->request->get['order']; } else { $order = 'ASC'; } if (isset($this->request->get['page'])) { $page = $this->request->get['page']; } else { $page = 1; } if (isset($this->request->get['limit'])) { $limit = (int)$this->request->get['limit']; } else { $limit = $this->config->get($this->config->get('config_theme') . '_product_limit'); } $data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); if (isset($this->request->get['path'])) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path . $url) ); } } } else { $category_id = 0; } $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { if ($category_info['meta_title']) { if ($page > 1) { $this->document->setTitle($category_info['meta_h1']. ' – cтраница ' .$page ); } else { $this->document->setTitle($category_info['meta_title']); } } else { $this->document->setTitle($category_info['name']); } $this->document->setDescription($category_info['meta_description']); $this->document->setKeywords($category_info['meta_keyword']); if ($category_info['meta_h1']) { $data['heading_title'] = $category_info['meta_h1']; } else { $data['heading_title'] = $category_info['name']; } $data['text_refine'] = $this->language->get('text_refine'); $data['text_empty'] = $this->language->get('text_empty'); $data['text_quantity'] = $this->language->get('text_quantity'); $data['text_manufacturer'] = $this->language->get('text_manufacturer'); $data['text_model'] = $this->language->get('text_model'); $data['text_price'] = $this->language->get('text_price'); $data['text_tax'] = $this->language->get('text_tax'); $data['text_points'] = $this->language->get('text_points'); $data['text_compare'] = sprintf($this->language->get('text_compare'), (isset($this->session->data['compare']) ? count($this->session->data['compare']) : 0)); $data['text_sort'] = $this->language->get('text_sort'); $data['text_limit'] = $this->language->get('text_limit'); $data['text_catalog'] = $this->language->get('text_catalog'); $data['text_instock'] = $this->language->get('text_instock'); $data['text_out_stock'] = $this->language->get('text_out_stock'); $data['text_discontinued'] = $this->language->get('text_discontinued'); $data['text_limited_quantity'] = $this->language->get('text_limited_quantity'); $data['text_list'] = $this->language->get('text_list'); $data['button_cart'] = $this->language->get('button_cart'); $data['button_wishlist'] = $this->language->get('button_wishlist'); $data['button_compare'] = $this->language->get('button_compare'); $data['button_continue'] = $this->language->get('button_continue'); $data['button_list'] = $this->language->get('button_list'); $data['button_grid'] = $this->language->get('button_grid'); $data['prod_categories'] = array(); $prod_categories = ''; if (is_array($prod_categories) ) { foreach ($prod_categories as $category_id) { $category_info = $this->model_catalog_category->getCategory($category_id); $data['prod_categories'][] = array( 'category_id' => $category_info['category_id'], 'name' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . ($category_info['parent_id'] ? $category_info['parent_id'] . '_' . $category_info['category_id'] : $category_info['category_id'])) ); } } // Set the last category breadcrumb $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path']) ); if ($category_info['image']) { $data['thumb'] = $this->model_tool_image->resize($category_info['image'], $this->config->get($this->config->get('config_theme') . '_image_category_width'), $this->config->get($this->config->get('config_theme') . '_image_category_height')); $this->document->setOgImage($data['thumb']); } else { $data['thumb'] = ''; } $data['shortdescription'] = html_entity_decode($category_info['shortdescription'], ENT_QUOTES, 'UTF-8'); if ($page == 1) { $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); } else { $data['description'] = ""; } $data['compare'] = $this->url->link('product/compare'); $data['home'] = $this->url->link('common/home'); $data['audi'] = '/audi/'; $data['bmw'] = '/bmw/'; $data['vw'] = '/volkswagen/'; $data['parts'] = '/zapchasti/'; $data['og_url'] = (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1')) ? HTTPS_SERVER : HTTP_SERVER) . substr($this->request->server['REQUEST_URI'], 1, (strlen($this->request->server['REQUEST_URI'])-1)); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { // Level 2 $children_data = array(); $children = $this->model_catalog_category->getCategories($category['category_id']); foreach ($children as $child) { // Level 3 $grandchildren_data = array(); $grandchildren = $this->model_catalog_category->getCategories($child['category_id']); foreach ($grandchildren as $grandchild) { $grandchild_filter_data = array( 'filter_category_id' => $grandchild['category_id'], 'filter_sub_category' => true ); $grandchildren_data[] = array( 'name' => $grandchild['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($grandchild_filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $grandchild['category_id']) ); } $filter_data = array( 'filter_category_id' => $child['category_id'], 'filter_sub_category' => true ); $children_data[] = array( 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']), 'children' => $grandchildren_data, ); } // Level 1 $data['categories'][] = array( 'name' => $category['name'], 'children' => $children_data, 'column' => $category['column'] ? $category['column'] : 1, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } $data['childrens'] = array(); $childrens_results = $this->model_catalog_category->getCategories($category_id); foreach ($childrens_results as $children_result) { $filter_data = array( 'filter_category_id' => $children_result['category_id'], 'filter_sub_category' => true ); $data['childrens'][] = array( 'name' => $children_result['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $children_result['category_id'] . $url) ); } $data['products'] = array(); $filter_data = array( 'filter_category_id' => $category_id, 'filter_sub_category'=> true, 'filter_filter' => $filter, 'sort' => $sort, 'order' => $order, 'start' => ($page - 1) * $limit, 'limit' => $limit ); $product_total = $this->model_catalog_product->getTotalProducts($filter_data); $results = $this->model_catalog_product->getProducts($filter_data); $ntcd_ids = array(); foreach ($results as $result) { $ntcd_ids[] = $result['product_id']; } $this->load->model('extension/module/neat_countdown'); $ntcd_specials = $this->model_extension_module_neat_countdown->getSpecials($ntcd_ids); $ntcd_args = array( 'category_id' => $category_id, 'specials' => $ntcd_specials ); $ntcd_results = $this->load->controller('extension/module/neat_countdown/category', $ntcd_args); foreach ($results as $result) { if ($result['image']) { $image = $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } if ($this->customer->isLogged() || !$this->config->get('config_customer_price')) { $price = $this->currency->format($this->tax->calculate($result['price'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $price = false; } if ((float)$result['special']) { $special = $this->currency->format($this->tax->calculate($result['special'], $result['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } if ($this->config->get('config_tax')) { $tax = $this->currency->format((float)$result['special'] ? $result['special'] : $result['price'], $this->session->data['currency']); } else { $tax = false; } if ($this->config->get('config_review_status')) { $rating = (int)$result['rating']; } else { $rating = false; } $cat = $this->model_catalog_product->getMainCategory($result['product_id']); $options = $this->model_catalog_product->getProductOptions($result['product_id']); $data['products'][] = array( 'neat_countdown' => @$ntcd_results[$result['product_id']], 'product_id' => $result['product_id'], 'cat' => $cat['name'], 'cath' => $this->url->link('product/category', 'path=' . $cat['category_id']), 'thumb' => $image, 'name' => $result['name'], 'quantity' => $result['quantity'], 'description' => utf8_substr(strip_tags(html_entity_decode($result['description'], ENT_QUOTES, 'UTF-8')), 0, $this->config->get($this->config->get('config_theme') . '_product_description_length')), 'price' => $price, 'special' => $special, 'tax' => $tax, 'minimum' => ($result['minimum'] > 0) ? $result['minimum'] : 1, 'rating' => $rating, 'stock_id' => $result['stock_status_id'], 'options' => $options, 'href' => $this->url->link('product/product', 'path=' . $this->request->get['path'] . '&product_id=' . $result['product_id'] . $url) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['sorts'] = array(); $data['sorts'][] = array( 'text' => $this->language->get('text_default'), 'value' => 'p.sort_order-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.sort_order&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_asc'), 'value' => 'pd.name-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_name_desc'), 'value' => 'pd.name-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=pd.name&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_asc'), 'value' => 'p.price-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_price_desc'), 'value' => 'p.price-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.price&order=DESC' . $url) ); if ($this->config->get('config_review_status')) { $data['sorts'][] = array( 'text' => $this->language->get('text_rating_desc'), 'value' => 'rating-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=DESC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_rating_asc'), 'value' => 'rating-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=rating&order=ASC' . $url) ); } $data['sorts'][] = array( 'text' => $this->language->get('text_model_asc'), 'value' => 'p.model-ASC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=ASC' . $url) ); $data['sorts'][] = array( 'text' => $this->language->get('text_model_desc'), 'value' => 'p.model-DESC', 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '&sort=p.model&order=DESC' . $url) ); $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } $data['limits'] = array(); $limits = array_unique(array($this->config->get($this->config->get('config_theme') . '_product_limit'), 25, 50, 75, 100)); sort($limits); foreach($limits as $value) { $data['limits'][] = array( 'text' => $value, 'value' => $value, 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&limit=' . $value) ); } $url = ''; if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $pagination = new Pagination(); $pagination->total = $product_total; $pagination->page = $page; $pagination->limit = $limit; $pagination->url = $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url . '&page={page}'); $data['pagination'] = $pagination->render(); $data['results'] = sprintf($this->language->get('text_pagination'), ($product_total) ? (($page - 1) * $limit) + 1 : 0, ((($page - 1) * $limit) > ($product_total - $limit)) ? $product_total : ((($page - 1) * $limit) + $limit), $product_total, ceil($product_total / $limit)); // http://googlewebmastercentral.blogspot.com/2011/09/pagination-with-relnext-and-relprev.html if ($page == 1) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'canonical'); } elseif ($page == 2) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'], true), 'prev'); } else { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page - 1), true), 'prev'); } if ($limit && ceil($product_total / $limit) > $page) { $this->document->addLink($this->url->link('product/category', 'path=' . $category_info['category_id'] . '&page='. ($page + 1), true), 'next'); } $data['sort'] = $sort; $data['order'] = $order; $data['limit'] = $limit; $data['continue'] = $this->url->link('common/home'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_menu'] = $this->load->controller('common/content_menu'); $data['short_top'] = $this->load->controller('common/short_top'); $data['content_category'] = $this->load->controller('common/content_category'); $data['content_tbanner'] = $this->load->controller('common/content_tbanner'); $data['content_rbanner'] = $this->load->controller('common/content_rbanner'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('product/category', $data)); } else { $url = ''; if (isset($this->request->get['path'])) { $url .= '&path=' . $this->request->get['path']; } if (isset($this->request->get['filter'])) { $url .= '&filter=' . $this->request->get['filter']; } if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_error'), 'href' => $this->url->link('product/category', $url) ); $this->document->setTitle($this->language->get('text_error')); $data['heading_title'] = $this->language->get('text_error'); $data['text_error'] = $this->language->get('text_error'); $data['button_continue'] = $this->language->get('button_continue'); $data['continue'] = $this->url->link('common/home'); $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . ' 404 Not Found'); $data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header'); $this->response->setOutput($this->load->view('error/not_found', $data)); } } } Прикрепил пример расположения вывода изображения
  9. Господа, всем привет! Снова обращаюсь за помощью к гуру данного форума. Второй год уже не можем запустить нормально ИМ, не хватает знаний и опыта у предыдущих исполнителей. Постоянно вытекают фатальные проблемы мешающие нормальному продвижению проекта. Постараюсь максимально подробно описать проблему. Есть сайт site.ru, который полностью закрыт от индексации, на нем находится одна страница с ссылками на поддомены (подмагазины) вида a.site.ru, b.site.ru и c.site.ru. Все поддомены подгружают товары из общей базы и имеют почти одинаковую структуру но с разным содержанием (каталог, баннеры на главной, товары) и сейчас столкнулись с проблемой плохой индексации сайта, грешим на склейку аффилиатов, так как товары очень похожи, адреса и информационные страницы о компании одни и те же но находятся на разных поддоменах. Все товары находятся в одной базе и разделяются посредством мультимагазина непосредственно в самой админке. Если убрать адрес поддомена в ЧПУ то ссылка, к примеру категории раздела, будет работать, но она закрыта от индексации чтобы не создавать дубликаты. Всего 5000 товаров во всех магазинах. Задача: 1) Убрать поддомены и создать массовый редирект 2) Проверить и наладить работу текущих модулей, если потребуется ( оформление заказа, Mega Vehicle Filter, Seo CMS, LIVEOPENCART: отзывы) 3) Настроить корректное отображения разделов каталога в шапке сайта исходя из выбранного магазина ( вместо поддонов должно быть site.ru/a/, site.ru/b/, site.ru/c/) Что требуется от исполнителя: 1) Трезвый ум 2) Логическое мышление 3) Опыт работы со схемами. Возможно придется подумать над отображением некоторых фильтров в шапке сайта для каждого раздела магазина 4) Большой опыт работы с ИМ на OC 5) Умение работать с чужим кодом 6) Желание помочь (не за бесплатно) 7) Умение работать с .htaccess 8) Не брать предоплату и сбегать 9) Не говорить о деньгах каждые 5 минут Версия OC 2.3 Ссылка на магазин по запросу в ЛС. По сути сайт работает, но с SEO большие проблемы из-за неправильной архитектуры сайта.
  10. Покажите здесь на форуме покупку индивидуального макета. О чем вы говорите? Читайте внимательно, что я предлагаю. И по поводу вашего сообщения Поменяв картинки не всегда шаблон подойдет под вашу тематику после этого. Вы пытаетесь уличить дизайнеров в том, что неважно какой красивый макет будет, все равно он будет похож на все остальные. Я как дизайнер, которые сделал не один десяток ИМ могу сказать - каждый макет разрабатывается под определенные сферы, со своей структурой и логикой работы + маркетинговые составляющие. Попробуйте шаблон детского магазина переделать под продажу элитных каминов, не думаю, что поменяв картинки у вас это получится. Хотя я не удивлюсь, что с такой логикой здесь не мало людей. Запустите хотяб пару успешных магазинов для таких доводов.
  11. Что значит еще раз продать? Я предлагаю купить дизайн отдельно для тех, кто пока не может купить готовый в сборе для ОС. Не надо из меня афериста делать.
  12. Дизайн шаблона можете у меня купить, если нет времени ждать.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.