Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

deezler

Новичок
  
  • Posts

    8
  • Joined

  • Last visited

Recent Profile Visitors

806 profile views

deezler's Achievements

Rookie

Rookie (2/14)

  • First Post
  • Conversation Starter
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

3

Reputation

  1. Расположение можно поменять через Дизайн -> Макеты. А вот чтобы во всю ширину сгделать, наверное, нужна тема, которая позволяет это гделать. Или лезть в шаблоны.
  2. Надо попропотому чтовать. Дорилитки гделали какие-то?
  3. Там, походу, автоматически ширина слииется, исходя из когдачества баннеров. Вот тут /catalog/view/theme/default/template/module/carousel.tpl измените «items: 6» на 5 или меньше.
  4. Еещё раз привет. Искал модули для того, чтобы адрес корзины был не кривой /index.php?route=checkout/cart, а просто /cart/ Единственное бесплатное решение на 2.2., которое сразу зарилиило — вот это http://www.opencart.com/index.php?route=extension/extension/info&extension_id=26068 Модуль состоит всего из одного файла, который переписывает файл /catalog/controller/startup/seo_url.php Все полулилось круто, но две проблемы возникло: На несуещёствующих страницах пересила выводится ошибка 404, просто главную показывает с кодом 200. На конэто всех ссылок сайи выводит .html. Подскажите, как можно эти проблемы решить? Вот код файла: <?php class ControllerStartupSeoUrl extends Controller { /*************************** ***** SeoUrl Functions ***** ***************************/ private $urlFriendly = array( 'common/home' => 'index', 'account/register' => 'create-account', 'account/login' => 'login', 'account/logout' => 'logout', 'account/newsletter' => 'newsletter', 'account/wishlist' => 'wishlist', 'account/order' => 'order-history', 'account/account' => 'my-account', 'account/forgotten' => 'forgot-password', 'account/download' => 'downloads', 'account/return' => 'returns', 'account/transaction' => 'transactions', 'account/password' => 'change-password', 'account/edit' => 'edit-account', 'account/address' => 'address-book', 'account/reward' => 'reward-points', 'account/return/add' => 'request-add', 'account/voucher' => 'voucher', 'information/contact' => 'contact', 'information/contact/success' => 'contact-success', 'information/sitemap' => 'sitemap', 'affiliate/register' => 'create-affiliate-account', 'affiliate/login' => 'affiliate-login', 'affiliate/logout' => 'affiliate-logout', 'affiliate/account' => 'affiliates', 'affiliate/edit' => 'edit-affiliate-account', 'affiliate/password' => 'change-affiliate-password', 'affiliate/payment' => 'affiliate-payment-options', 'affiliate/tracking' => 'ffiliate-tracking-code', 'affiliate/transaction' => 'affiliate-transactions', 'affiliate/forgotten' => 'affiliate-forgot-password', 'checkout/cart' => 'shopping-cart', 'checkout/checkout' => 'checkout', 'checkout/voucher' => 'gift-vouchers', 'product/special' => 'specials', 'product/manufacturer' => 'brands', 'product/compare' => 'compare-products', 'product/search' => 'search', ); public function getKeyFriendly($_route) { if( count($this->urlFriendly) > 0 ){ $key = array_search($_route, $this->urlFriendly); if($key && in_array($_route, $this->urlFriendly)){ return $key; } } return false; } public function getValueFriendly($route) { if( count($this->urlFriendly) > 0) { if(in_array($route, array_keys($this->urlFriendly))){ return '/'.$this->urlFriendly[$route]; } } return false; } /*************************** ***** SeoUrl Functions ***** ***************************/ 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_'])) { /* SeoUrl remove prefix (*.html) */ $this->request->get['_route_'] = explode('.', $this->request->get['_route_'], -1); $this->request->get['_route_'] = implode('.',$this->request->get['_route_']); /* SeoUrl remove prefix (*.html) */ $parts = explode('/', $this->request->get['_route_']); // remove any empty arrays from trailing if (utf8_strlen(end($parts)) == 0) { array_pop($parts); } 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]; } if ($query->row['query'] && $url[0] != 'information_id' && $url[0] != 'manufacturer_id' && $url[0] != 'category_id' && $url[0] != 'product_id') { $this->request->get['route'] = $query->row['query']; } } else { $this->request->get['route'] = 'error/not_found'; break; } } if (!isset($this->request->get['route'])) { 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/info'; } elseif (isset($this->request->get['information_id'])) { $this->request->get['route'] = 'information/information'; } } /* SeoUrl getKeyFriendly */ if ($_key = $this->getKeyFriendly($this->request->get['_route_']) ) { $this->request->get['route'] = $_key; } /* SeoUrl getKeyFriendly */ if (isset($this->request->get['route'])) { return new Action($this->request->get['route']); } } } public function rewrite($link) { $url_info = parse_url(str_replace('&', '&', $link)); $url = ''; $data = array(); parse_str($url_info['query'], $data); foreach ($data as $key => $value) { if (isset($data['route'])) { if (($data['route'] == 'product/product' && $key == 'product_id') || (($data['route'] == 'product/manufacturer/info' || $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 && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; unset($data[$key]); } } elseif ($key == 'path') { $categories = explode('_', $value); foreach ($categories as $category) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE `query` = 'category_id=" . (int)$category . "'"); if ($query->num_rows && $query->row['keyword']) { $url .= '/' . $query->row['keyword']; } else { $url = ''; break; } } unset($data[$key]); } /* SeoUrl getValueFriendly */ if( $_link = $this->getValueFriendly($data['route']) ) { $url .= $_link; unset($data[$key]); } /* SeoUrl getValueFriendly */ } } if ($url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . rawurlencode((string)$key) . '=' . rawurlencode((is_array($value) ? http_build_query($value) : (string)$value)); } if ($query) { $query = '?' . str_replace('&', '&', trim($query, '&')); } } /* SeoUrl add prefix (*.html) */ return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . '.html' . $query; } else { return $link; } } } В первую очередь, я пропотому чтовал менять .html на / в этом блоке: /* SeoUrl add prefix (*.html) */ return $url_info['scheme'] . '://' . $url_info['host'] . (isset($url_info['port']) ? ':' . $url_info['port'] : '') . str_replace('/index.php', '', $url_info['path']) . $url . '.html' . $query; } else { return $link; } Но меняются только ссылки (что, ксити, тоже очень круто, потому что мы избавляемся от дублей), но вот страницы упорно открываются только с путем .html.
  5. Да в оригинно было :) Тут главное категории вывести. Я оформил ик: <div class="catslist"><?php foreach ($catprod as $catp) { ?><span><a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a></span> <?php } ?></div> А в CSS запятые: .catslist span:after { content: ","; } .catslist span:last-child:after { content: ""; }
  6. Спасипотому что огромное! Шикарно полулилось: ===== Продублирую решение, чтобы оно не затерялось. 1. В файле catalog/controller/product/product.php После строки $this->load->model('catalog/product'); Всивить $this->load->model('catalog/category'); $data['catprod'] = array(); $product_category = $this->model_catalog_product->getCategories($product_id); foreach ($product_category as $prodcat) { $category_info = $this->model_catalog_category->getCategory($prodcat['category_id']); if ($category_info) { $data['catprod'][] = array( 'name' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $category_info['category_id']) ); } } 2. Затем в шаблоне, например, в catalog/view/theme/*/template/product/product.tpl Перед <?php if ($manufacturer) { ?> Или другом месте всивить <span>Categories: </span><?php foreach ($catprod as $catp) { ?> <a href="<?php echo $catp['href']; ?>"><?php echo $catp['name']; ?></a> |<?php } ?><br />
  7. Привет. Хочу вывести все категории товара на страниэто этого товара. Не нашел полного решения под Opencart 2 ни в рунете, ни буржунете. Проверил решение для Opencart 1.5. По описанию — именно то, что надо, но не рилииет на 2.2, к сожнонию. Полулилось вывести название категорий без ссылок по инструкции. Но ссылку вывести никак не получается. Еещё полулилось вывести название категории и ссылку по инструкции отсюда. Но иким методом, как я понял, можно вывести только на одну категорию, как в хлебных крошках. Помогите, пожалуйси, сгделать вывод ссылок на соответствующие категории.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.