Timber Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Например есть контроллер mycatalog/mycontroller, который вызывается как: mysite.my/index.php?route=mycatalog/mycontroller&mypath_id=3&my_id=5 В таблице url_alias прописаны красивые ссылки для mypath_id и my_id SEO-модуль ничего про mycatalog/mycontroller не знает и ссылки этого вида не обрабатывает. Существует ли универсальный способ добавить собственный обработчик для преобразования ссылок, или единственный вариант это вручную вносить изменения в SEO-модуль? Т.е. один раз написать обработчик, который можно было бы подключать к разным SEO-модулям. Вопрос про opencart 2 Змінено 11 листопада 2015 користувачем Timber Надіслати Поділитися на інших сайтах More sharing options...
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Если у вас нет динамических параметров - то реализуется очень просто через seopro, с помощью добавления нужной записи в БД. Если есть - то конечно необходимо дописывать правила для роутов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я неделю мучался с написанием своего контроллера для модуля фотогалерей, это был для меня тот еще путь страданий (неделю свободного времени убил). Так же знаю, что пользователь @markimax делал то же самое для своих мега модулей и помог мне в некоторых моментах. За что ему отдельное Спасибо. Вот Вам мой сео контроллер из модуля фотогалерей на базе кэшируемого seo_pro от @freelancer: У меня там все проще, иерархии и категорий нет. В модуле есть всего 2 раздела gallery/gallery - список галерей gallery/photos&album_id=1 - галерея Но думаю, в контроллер добавить функцию getPathByMyId($id) не составит труда (по аналогии смотрите как сделаны запросы ЧПУ категорий, там есть такая же иерархия). Хранятся ключи и значения SEO в своей таблице, которую нужно создать, чтобы не было конфликтов с другими seo контроллерами. Для 1.5.x <?php /** * @author Shashakhmetov Talgat <[email protected]> */ class ControllerCommonSeoGallery extends Controller { private $cache_data = null; private $current_store_id = 0; public function __construct($registry) { parent::__construct($registry); $this->current_store_id = $this->config->get('config_store_id'); $cache_name = 'seo_pro_gallery.' . $this->current_store_id; $this->cache_data = $this->cache->get($cache_name); if (!$this->cache_data) { $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE store_id = " . $this->current_store_id); $this->cache_data = array(); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE query LIKE '%album_id=%'"); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $this->cache->set($cache_name, $this->cache_data); } } public function index() { if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); }else{ return; } if (isset($_GET['_route_'])) $this->request->get['_route_'] = $_GET['_route_']; if (isset($_GET['route'])) $this->request->get['route'] = $_GET['route']; if (isset($this->request->get['album_id'])) { $this->request->get['route'] = 'gallery/photos'; if (isset($this->request->get['_route_'])) { $_route_ = $this->request->get['_route_']; unset($this->request->get['_route_']); } $this->validate(); if (isset($this->request->get['_route_'])) { $this->request->get['_route_'] = $_route_; } $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); return $this->gallery_flag = 'photos'; } if (isset($this->request->get['_route_'])) { $route = $this->request->get['_route_']; $parts = explode('/', trim(utf8_strtolower($route), '/')); list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); // var_dump($parts); foreach ($parts as $part) { $rows = array(); foreach ($parts as $keyword) { if (isset($this->cache_data['keywords'][$keyword])) { $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]); } } if (count($rows) == sizeof($parts)) { $queries = array(); foreach ($rows as $row) { $queries[utf8_strtolower($row['keyword'])] = $row['query']; } reset($parts); foreach ($parts as $part) { $url = explode('=', $queries[$part], 2); if (isset($url[0]) && $url[0] == 'album_id') { $this->request->get['album_id'] = $url[1]; $this->gallery_flag = 'photos'; } elseif (isset($url[0]) && $url[0] == 'gallery/gallery') { $this->gallery_flag = 'gallery'; if (!isset($this->request->get['gallery/gallery'])) { $this->request->get['route'] = 'gallery/gallery'; } else { $this->request->get['route'] = 'gallery/gallery'; } } elseif (isset($url[0]) && $url[0] == 'route') { $this->request->get['route'] = $url[1]; } elseif (count($url) > 1) { $this->request->get[$url[0]] = $url[1]; } } } } if (isset($this->request->get['album_id'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/photos'; } elseif (isset($this->request->get['gallery/gallery'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/gallery'; }else{ if (isset($queries[$parts[0]])) { $this->request->get['route'] = $queries[$parts[0]]; } } // var_dump($this->request); $_route_ =$this->request->get['_route_']; unset($this->request->get['_route_']); $this->validate(); $this->request->get['_route_'] = $_route_; if (isset($this->request->get['route'])) { $this->request->get['_route_'] = $this->request->get['route']; } return $this->gallery_flag; } } public function rewrite($link) { if (!$this->config->get('config_seo_url')) return $link; $seo_url = ''; $component = parse_url(str_replace('&', '&', $link)); $data = array(); if (isset($component['query'])) { parse_str($component['query'], $data); if (!isset($data['route'])) { return $link; } $route = $data['route']; unset($data['route']); $postfix = false; if ($route == 'gallery/photos') { if (isset($data['album_id'])) { $tmp = $data; $data = array(); $data['album_id'] = $tmp['album_id']; if (isset($tmp['limit'])) { $data['limit'] = $tmp['limit']; } if (isset($tmp['page'])) { $data['page'] = $tmp['page']; } $postfix = true; } } elseif ($route == 'gallery/gallery') { } else { return $link; } if ($component['scheme'] == 'https') { $link = $this->config->get('config_ssl'); } else { $link = $this->config->get('config_url'); } $link .= 'index.php?route=' . $route; if (count($data)) { $link .= '&' . urldecode(http_build_query($data, '', '&')); } $queries = array(); foreach ($data as $key => $value) { switch ($key) { case 'album_id': $config_gallery_galleries_include_seo_path = $this->config->get('config_gallery_galleries_include_seo_path'); if ($config_gallery_galleries_include_seo_path[$this->current_store_id]) { $queries[] = 'gallery/gallery'; } $queries[] = $key . '=' . $value; unset($data[$key]); $postfix = true; break; default: break; } } if (empty($queries)) { $queries[] = $route; } $rows = array(); foreach ($queries as $query) { if (isset($this->cache_data['queries'][$query])) { $rows[] = array( 'query' => $query, 'keyword' => $this->cache_data['queries'][$query] ); } } reset($data); if (count($rows) == count($queries)) { $aliases = array(); foreach ($rows as $row) { $aliases[$row['query']] = $row['keyword']; } foreach ($queries as $query) { $seo_url .= '/' . rawurlencode($aliases[$query]); } } if ($seo_url == '') return $link; if ($seo_url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . $key . '=' . $value; } if ($query) { $query = '?' . trim($query, '&'); } } $devider = $this->config->get('config_seo_url_postfix'); if (empty($devider) || !$postfix) { $devider = "/"; } $link = $component['scheme'] . '://' . $component['host'] . (isset($component['port']) ? ':' . $component['port'] : '') . str_replace('/index.php', '', $component['path']) . $seo_url . $devider . $query; return $link; } else { return $link; } } else { return $link; } } private function validate() { if (empty($this->request->get['route']) || $this->request->get['route'] == 'error/not_found') { return; } if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { return; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $url = str_replace('&', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'SSL')); } else { $url = str_replace('&', '&', $this->config->get('config_url') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'NONSSL')); } if (rawurldecode($url) != rawurldecode($seo)) { header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo); } } private function getQueryString($exclude = array()) { if (!is_array($exclude)) { $exclude = array(); } return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude)))); } } ?> Для 2.x <?php /** * @author Shashakhmetov Talgat <[email protected]> */ class ControllerCommonSeoGallery extends Controller { private $cache_data = null; private $current_store_id = 0; public function __construct($registry) { parent::__construct($registry); $this->current_store_id = $this->config->get('config_store_id'); $cache_name = 'seo_pro_gallery.' . $this->current_store_id; $this->cache_data = $this->cache->get($cache_name); if (!$this->cache_data) { $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE store_id = " . $this->current_store_id); $this->cache_data = array(); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE query LIKE '%album_id=%'"); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $this->cache->set($cache_name, $this->cache_data); } } public function index() { if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); }else{ return; } if (isset($_GET['_route_'])) $this->request->get['_route_'] = $_GET['_route_']; if (isset($_GET['route'])) $this->request->get['route'] = $_GET['route']; if (isset($this->request->get['album_id'])) { $this->request->get['route'] = 'gallery/photos'; if (isset($this->request->get['_route_'])) { $_route_ = $this->request->get['_route_']; unset($this->request->get['_route_']); } $this->validate(); if (isset($this->request->get['_route_'])) { $this->request->get['_route_'] = $_route_; } $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); return $this->gallery_flag = 'photos'; } if (isset($this->request->get['_route_'])) { $route = $this->request->get['_route_']; $parts = explode('/', trim(utf8_strtolower($route), '/')); list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); // var_dump($parts); foreach ($parts as $part) { $rows = array(); foreach ($parts as $keyword) { if (isset($this->cache_data['keywords'][$keyword])) { $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]); } } if (count($rows) == sizeof($parts)) { $queries = array(); foreach ($rows as $row) { $queries[utf8_strtolower($row['keyword'])] = $row['query']; } reset($parts); foreach ($parts as $part) { $url = explode('=', $queries[$part], 2); if (isset($url[0]) && $url[0] == 'album_id') { $this->request->get['album_id'] = $url[1]; $this->gallery_flag = 'photos'; } elseif (isset($url[0]) && $url[0] == 'gallery/gallery') { $this->gallery_flag = 'gallery'; if (!isset($this->request->get['gallery/gallery'])) { $this->request->get['route'] = 'gallery/gallery'; } else { $this->request->get['route'] = 'gallery/gallery'; } } elseif (isset($url[0]) && $url[0] == 'route') { $this->request->get['route'] = $url[1]; } elseif (count($url) > 1) { $this->request->get[$url[0]] = $url[1]; } } } } if (isset($this->request->get['album_id'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/photos'; } elseif (isset($this->request->get['gallery/gallery'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/gallery'; }else{ if (isset($queries[$parts[0]])) { $this->request->get['route'] = $queries[$parts[0]]; } } // var_dump($this->request); $_route_ =$this->request->get['_route_']; unset($this->request->get['_route_']); $this->validate(); $this->request->get['_route_'] = $_route_; if (isset($this->request->get['route'])) { $this->request->get['_route_'] = $this->request->get['route']; } return $this->gallery_flag; } } public function rewrite($link) { if (!$this->config->get('config_seo_url')) return $link; $seo_url = ''; $component = parse_url(str_replace('&', '&', $link)); $data = array(); if (isset($component['query'])) { parse_str($component['query'], $data); if (!isset($data['route'])) { return $link; } $route = $data['route']; unset($data['route']); $postfix = false; if ($route == 'gallery/photos') { if (isset($data['album_id'])) { $tmp = $data; $data = array(); $data['album_id'] = $tmp['album_id']; if (isset($tmp['limit'])) { $data['limit'] = $tmp['limit']; } if (isset($tmp['page'])) { $data['page'] = $tmp['page']; } $postfix = true; } } elseif ($route == 'gallery/gallery') { } else { return $link; } if ($component['scheme'] == 'https') { $link = $this->config->get('config_ssl'); } else { $link = $this->config->get('config_url'); } $link .= 'index.php?route=' . $route; if (count($data)) { $link .= '&' . urldecode(http_build_query($data, '', '&')); } $queries = array(); foreach ($data as $key => $value) { switch ($key) { case 'album_id': $config_gallery_galleries_include_seo_path = $this->config->get('config_gallery_galleries_include_seo_path'); if ($config_gallery_galleries_include_seo_path[$this->current_store_id]) { $queries[] = 'gallery/gallery'; } $queries[] = $key . '=' . $value; unset($data[$key]); $postfix = true; break; default: break; } } if (empty($queries)) { $queries[] = $route; } $rows = array(); foreach ($queries as $query) { if (isset($this->cache_data['queries'][$query])) { $rows[] = array( 'query' => $query, 'keyword' => $this->cache_data['queries'][$query] ); } } reset($data); if (count($rows) == count($queries)) { $aliases = array(); foreach ($rows as $row) { $aliases[$row['query']] = $row['keyword']; } foreach ($queries as $query) { $seo_url .= '/' . rawurlencode($aliases[$query]); } } if ($seo_url == '') return $link; if ($seo_url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . $key . '=' . $value; } if ($query) { $query = '?' . trim($query, '&'); } } $devider = $this->config->get('config_seo_url_postfix'); if (empty($devider) || !$postfix) { $devider = "/"; } $link = $component['scheme'] . '://' . $component['host'] . (isset($component['port']) ? ':' . $component['port'] : '') . str_replace('/index.php', '', $component['path']) . $seo_url . $devider . $query; return $link; } else { return $link; } } else { return $link; } } private function validate() { if (empty($this->request->get['route']) || $this->request->get['route'] == 'error/not_found') { return; } if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { return; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $url = str_replace('&', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'SSL')); } else { $url = str_replace('&', '&', $this->config->get('config_url') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'NONSSL')); } if (rawurldecode($url) != rawurldecode($seo)) { header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo); } } private function getQueryString($exclude = array()) { if (!is_array($exclude)) { $exclude = array(); } return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude)))); } } ?> Таблица: $sql[] = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "url_alias_gallery` ( `url_alias_id` int(11) NOT NULL AUTO_INCREMENT, `query` varchar(255) NOT NULL, `keyword` varchar(255) NOT NULL, `store_id` int(11) NOT NULL, PRIMARY KEY (`url_alias_id`), KEY `query` (`query`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"; Змінено 11 листопада 2015 користувачем halfhope Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни, только вот не задумываетесь о том, что создание дополнительных отдельных seo-контроллеров, вынесеных из общего контекста базового seo-класса в случае с исползованием сео про создают совершенно непонятно зачем дополнительную нагрузку на работу системы в виде запроса на чтение всей (еще одной) таблицы с с новыми seo-урлами, потом укладывание ее в кеш с сериализацией. Не совсем легкие процедуры, которые вы дублируете. Почему нельзя путем модификаторов внедрить логику формирования нужны роутов в тот же базовый класс SeoPro - для меня большая загадка. Кроме как "а посмотрите как мы умеем" другого объяснения я не вижу. А то что при этом + 50-500 миллисекунд отбирается у сервера. Так это ж никого не волнует. 2 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } А еще в роутере index() вашего ЧПУ формирователя Можно вставлять расширение для "виджетов" ваших путей контроллера Что то типа такого: foreach ($this->data['agoo_widgets'] as $nm => $agoo_widget) { if (!empty($module_data) && $type == $agoo_widget) { if (file_exists(DIR_APPLICATION . "controller/agoo/".$agoo_widget."/".$agoo_widget.".php")) { $this->cont('agoo/'.$agoo_widget.'/'.$agoo_widget); $controller_agoo = 'controller_agoo_'.$agoo_widget.'_'.$agoo_widget; if (method_exists($this->registry->get($controller_agoo), 'seourl')) $this->data = $this->$controller_agoo->seourl($this->data); } } } И описывать их отдельно в контроллерах Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни.... Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) Seo_pro отработал - не нашел ссылки у себя и передал управление другому ЧПУ формирователю Так что архитектурно - все правильно и логично Какая разница кто обработает ЧПУ - никакой "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями, привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Модификаторы - путь к не стабильности. Спасибо её нам не надо Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я неделю мучался с написанием своего контроллера для модуля фотогалерей, это был для меня тот еще путь страданий (неделю свободного времени убил). Так же знаю, что пользователь @markimax делал то же самое для своих мега модулей и помог мне в некоторых моментах. За что ему отдельное Спасибо. Вот Вам мой сео контроллер из модуля фотогалерей на базе кэшируемого seo_pro от @freelancer: У меня там все проще, иерархии и категорий нет. В модуле есть всего 2 раздела gallery/gallery - список галерей gallery/photos&album_id=1 - галерея Но думаю, в контроллер добавить функцию getPathByMyId($id) не составит труда (по аналогии смотрите как сделаны запросы ЧПУ категорий, там есть такая же иерархия). Хранятся ключи и значения SEO в своей таблице, которую нужно создать, чтобы не было конфликтов с другими seo контроллерами. Для 1.5.x <?php /** * @author Shashakhmetov Talgat <[email protected]> */ class ControllerCommonSeoGallery extends Controller { private $cache_data = null; private $current_store_id = 0; public function __construct($registry) { parent::__construct($registry); $this->current_store_id = $this->config->get('config_store_id'); $cache_name = 'seo_pro_gallery.' . $this->current_store_id; $this->cache_data = $this->cache->get($cache_name); if (!$this->cache_data) { $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE store_id = " . $this->current_store_id); $this->cache_data = array(); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE query LIKE '%album_id=%'"); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $this->cache->set($cache_name, $this->cache_data); } } public function index() { if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); }else{ return; } if (isset($_GET['_route_'])) $this->request->get['_route_'] = $_GET['_route_']; if (isset($_GET['route'])) $this->request->get['route'] = $_GET['route']; if (isset($this->request->get['album_id'])) { $this->request->get['route'] = 'gallery/photos'; if (isset($this->request->get['_route_'])) { $_route_ = $this->request->get['_route_']; unset($this->request->get['_route_']); } $this->validate(); if (isset($this->request->get['_route_'])) { $this->request->get['_route_'] = $_route_; } $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); return $this->gallery_flag = 'photos'; } if (isset($this->request->get['_route_'])) { $route = $this->request->get['_route_']; $parts = explode('/', trim(utf8_strtolower($route), '/')); list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); // var_dump($parts); foreach ($parts as $part) { $rows = array(); foreach ($parts as $keyword) { if (isset($this->cache_data['keywords'][$keyword])) { $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]); } } if (count($rows) == sizeof($parts)) { $queries = array(); foreach ($rows as $row) { $queries[utf8_strtolower($row['keyword'])] = $row['query']; } reset($parts); foreach ($parts as $part) { $url = explode('=', $queries[$part], 2); if (isset($url[0]) && $url[0] == 'album_id') { $this->request->get['album_id'] = $url[1]; $this->gallery_flag = 'photos'; } elseif (isset($url[0]) && $url[0] == 'gallery/gallery') { $this->gallery_flag = 'gallery'; if (!isset($this->request->get['gallery/gallery'])) { $this->request->get['route'] = 'gallery/gallery'; } else { $this->request->get['route'] = 'gallery/gallery'; } } elseif (isset($url[0]) && $url[0] == 'route') { $this->request->get['route'] = $url[1]; } elseif (count($url) > 1) { $this->request->get[$url[0]] = $url[1]; } } } } if (isset($this->request->get['album_id'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/photos'; } elseif (isset($this->request->get['gallery/gallery'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/gallery'; }else{ if (isset($queries[$parts[0]])) { $this->request->get['route'] = $queries[$parts[0]]; } } // var_dump($this->request); $_route_ =$this->request->get['_route_']; unset($this->request->get['_route_']); $this->validate(); $this->request->get['_route_'] = $_route_; if (isset($this->request->get['route'])) { $this->request->get['_route_'] = $this->request->get['route']; } return $this->gallery_flag; } } public function rewrite($link) { if (!$this->config->get('config_seo_url')) return $link; $seo_url = ''; $component = parse_url(str_replace('&', '&', $link)); $data = array(); if (isset($component['query'])) { parse_str($component['query'], $data); if (!isset($data['route'])) { return $link; } $route = $data['route']; unset($data['route']); $postfix = false; if ($route == 'gallery/photos') { if (isset($data['album_id'])) { $tmp = $data; $data = array(); $data['album_id'] = $tmp['album_id']; if (isset($tmp['limit'])) { $data['limit'] = $tmp['limit']; } if (isset($tmp['page'])) { $data['page'] = $tmp['page']; } $postfix = true; } } elseif ($route == 'gallery/gallery') { } else { return $link; } if ($component['scheme'] == 'https') { $link = $this->config->get('config_ssl'); } else { $link = $this->config->get('config_url'); } $link .= 'index.php?route=' . $route; if (count($data)) { $link .= '&' . urldecode(http_build_query($data, '', '&')); } $queries = array(); foreach ($data as $key => $value) { switch ($key) { case 'album_id': $config_gallery_galleries_include_seo_path = $this->config->get('config_gallery_galleries_include_seo_path'); if ($config_gallery_galleries_include_seo_path[$this->current_store_id]) { $queries[] = 'gallery/gallery'; } $queries[] = $key . '=' . $value; unset($data[$key]); $postfix = true; break; default: break; } } if (empty($queries)) { $queries[] = $route; } $rows = array(); foreach ($queries as $query) { if (isset($this->cache_data['queries'][$query])) { $rows[] = array( 'query' => $query, 'keyword' => $this->cache_data['queries'][$query] ); } } reset($data); if (count($rows) == count($queries)) { $aliases = array(); foreach ($rows as $row) { $aliases[$row['query']] = $row['keyword']; } foreach ($queries as $query) { $seo_url .= '/' . rawurlencode($aliases[$query]); } } if ($seo_url == '') return $link; if ($seo_url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . $key . '=' . $value; } if ($query) { $query = '?' . trim($query, '&'); } } $devider = $this->config->get('config_seo_url_postfix'); if (empty($devider) || !$postfix) { $devider = "/"; } $link = $component['scheme'] . '://' . $component['host'] . (isset($component['port']) ? ':' . $component['port'] : '') . str_replace('/index.php', '', $component['path']) . $seo_url . $devider . $query; return $link; } else { return $link; } } else { return $link; } } private function validate() { if (empty($this->request->get['route']) || $this->request->get['route'] == 'error/not_found') { return; } if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { return; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $url = str_replace('&', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'SSL')); } else { $url = str_replace('&', '&', $this->config->get('config_url') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'NONSSL')); } if (rawurldecode($url) != rawurldecode($seo)) { header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo); } } private function getQueryString($exclude = array()) { if (!is_array($exclude)) { $exclude = array(); } return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude)))); } } ?> Для 2.x <?php /** * @author Shashakhmetov Talgat <[email protected]> */ class ControllerCommonSeoGallery extends Controller { private $cache_data = null; private $current_store_id = 0; public function __construct($registry) { parent::__construct($registry); $this->current_store_id = $this->config->get('config_store_id'); $cache_name = 'seo_pro_gallery.' . $this->current_store_id; $this->cache_data = $this->cache->get($cache_name); if (!$this->cache_data) { $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE store_id = " . $this->current_store_id); $this->cache_data = array(); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $query = $this->db->query("SELECT LOWER(`keyword`) as 'keyword', `query` FROM " . DB_PREFIX . "url_alias_gallery WHERE query LIKE '%album_id=%'"); foreach ($query->rows as $row) { $this->cache_data['keywords'][$row['keyword']] = $row['query']; $this->cache_data['queries'][$row['query']] = $row['keyword']; } $this->cache->set($cache_name, $this->cache_data); } } public function index() { if ($this->config->get('config_seo_url')) { $this->url->addRewrite($this); }else{ return; } if (isset($_GET['_route_'])) $this->request->get['_route_'] = $_GET['_route_']; if (isset($_GET['route'])) $this->request->get['route'] = $_GET['route']; if (isset($this->request->get['album_id'])) { $this->request->get['route'] = 'gallery/photos'; if (isset($this->request->get['_route_'])) { $_route_ = $this->request->get['_route_']; unset($this->request->get['_route_']); } $this->validate(); if (isset($this->request->get['_route_'])) { $this->request->get['_route_'] = $_route_; } $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); return $this->gallery_flag = 'photos'; } if (isset($this->request->get['_route_'])) { $route = $this->request->get['_route_']; $parts = explode('/', trim(utf8_strtolower($route), '/')); list($last_part) = explode('.', array_pop($parts)); array_push($parts, $last_part); // var_dump($parts); foreach ($parts as $part) { $rows = array(); foreach ($parts as $keyword) { if (isset($this->cache_data['keywords'][$keyword])) { $rows[] = array('keyword' => $keyword, 'query' => $this->cache_data['keywords'][$keyword]); } } if (count($rows) == sizeof($parts)) { $queries = array(); foreach ($rows as $row) { $queries[utf8_strtolower($row['keyword'])] = $row['query']; } reset($parts); foreach ($parts as $part) { $url = explode('=', $queries[$part], 2); if (isset($url[0]) && $url[0] == 'album_id') { $this->request->get['album_id'] = $url[1]; $this->gallery_flag = 'photos'; } elseif (isset($url[0]) && $url[0] == 'gallery/gallery') { $this->gallery_flag = 'gallery'; if (!isset($this->request->get['gallery/gallery'])) { $this->request->get['route'] = 'gallery/gallery'; } else { $this->request->get['route'] = 'gallery/gallery'; } } elseif (isset($url[0]) && $url[0] == 'route') { $this->request->get['route'] = $url[1]; } elseif (count($url) > 1) { $this->request->get[$url[0]] = $url[1]; } } } } if (isset($this->request->get['album_id'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/photos'; } elseif (isset($this->request->get['gallery/gallery'])) { $this->response->addHeader($this->request->server['SERVER_PROTOCOL'] . '/1.1 200 OK'); $this->request->get['route'] = 'gallery/gallery'; }else{ if (isset($queries[$parts[0]])) { $this->request->get['route'] = $queries[$parts[0]]; } } // var_dump($this->request); $_route_ =$this->request->get['_route_']; unset($this->request->get['_route_']); $this->validate(); $this->request->get['_route_'] = $_route_; if (isset($this->request->get['route'])) { $this->request->get['_route_'] = $this->request->get['route']; } return $this->gallery_flag; } } public function rewrite($link) { if (!$this->config->get('config_seo_url')) return $link; $seo_url = ''; $component = parse_url(str_replace('&', '&', $link)); $data = array(); if (isset($component['query'])) { parse_str($component['query'], $data); if (!isset($data['route'])) { return $link; } $route = $data['route']; unset($data['route']); $postfix = false; if ($route == 'gallery/photos') { if (isset($data['album_id'])) { $tmp = $data; $data = array(); $data['album_id'] = $tmp['album_id']; if (isset($tmp['limit'])) { $data['limit'] = $tmp['limit']; } if (isset($tmp['page'])) { $data['page'] = $tmp['page']; } $postfix = true; } } elseif ($route == 'gallery/gallery') { } else { return $link; } if ($component['scheme'] == 'https') { $link = $this->config->get('config_ssl'); } else { $link = $this->config->get('config_url'); } $link .= 'index.php?route=' . $route; if (count($data)) { $link .= '&' . urldecode(http_build_query($data, '', '&')); } $queries = array(); foreach ($data as $key => $value) { switch ($key) { case 'album_id': $config_gallery_galleries_include_seo_path = $this->config->get('config_gallery_galleries_include_seo_path'); if ($config_gallery_galleries_include_seo_path[$this->current_store_id]) { $queries[] = 'gallery/gallery'; } $queries[] = $key . '=' . $value; unset($data[$key]); $postfix = true; break; default: break; } } if (empty($queries)) { $queries[] = $route; } $rows = array(); foreach ($queries as $query) { if (isset($this->cache_data['queries'][$query])) { $rows[] = array( 'query' => $query, 'keyword' => $this->cache_data['queries'][$query] ); } } reset($data); if (count($rows) == count($queries)) { $aliases = array(); foreach ($rows as $row) { $aliases[$row['query']] = $row['keyword']; } foreach ($queries as $query) { $seo_url .= '/' . rawurlencode($aliases[$query]); } } if ($seo_url == '') return $link; if ($seo_url) { unset($data['route']); $query = ''; if ($data) { foreach ($data as $key => $value) { $query .= '&' . $key . '=' . $value; } if ($query) { $query = '?' . trim($query, '&'); } } $devider = $this->config->get('config_seo_url_postfix'); if (empty($devider) || !$postfix) { $devider = "/"; } $link = $component['scheme'] . '://' . $component['host'] . (isset($component['port']) ? ':' . $component['port'] : '') . str_replace('/index.php', '', $component['path']) . $seo_url . $devider . $query; return $link; } else { return $link; } } else { return $link; } } private function validate() { if (empty($this->request->get['route']) || $this->request->get['route'] == 'error/not_found') { return; } if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { return; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $url = str_replace('&', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'SSL')); } else { $url = str_replace('&', '&', $this->config->get('config_url') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array( 'route' )), 'NONSSL')); } if (rawurldecode($url) != rawurldecode($seo)) { header($this->request->server['SERVER_PROTOCOL'] . ' 301 Moved Permanently'); $this->response->redirect($seo); } } private function getQueryString($exclude = array()) { if (!is_array($exclude)) { $exclude = array(); } return urldecode(http_build_query(array_diff_key($this->request->get, array_flip($exclude)))); } } ?> Таблица: $sql[] = "CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "url_alias_gallery` ( `url_alias_id` int(11) NOT NULL AUTO_INCREMENT, `query` varchar(255) NOT NULL, `keyword` varchar(255) NOT NULL, `store_id` int(11) NOT NULL, PRIMARY KEY (`url_alias_id`), KEY `query` (`query`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"; Змінено 11 листопада 2015 користувачем halfhope Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни, только вот не задумываетесь о том, что создание дополнительных отдельных seo-контроллеров, вынесеных из общего контекста базового seo-класса в случае с исползованием сео про создают совершенно непонятно зачем дополнительную нагрузку на работу системы в виде запроса на чтение всей (еще одной) таблицы с с новыми seo-урлами, потом укладывание ее в кеш с сериализацией. Не совсем легкие процедуры, которые вы дублируете. Почему нельзя путем модификаторов внедрить логику формирования нужны роутов в тот же базовый класс SeoPro - для меня большая загадка. Кроме как "а посмотрите как мы умеем" другого объяснения я не вижу. А то что при этом + 50-500 миллисекунд отбирается у сервера. Так это ж никого не волнует. 2 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } А еще в роутере index() вашего ЧПУ формирователя Можно вставлять расширение для "виджетов" ваших путей контроллера Что то типа такого: foreach ($this->data['agoo_widgets'] as $nm => $agoo_widget) { if (!empty($module_data) && $type == $agoo_widget) { if (file_exists(DIR_APPLICATION . "controller/agoo/".$agoo_widget."/".$agoo_widget.".php")) { $this->cont('agoo/'.$agoo_widget.'/'.$agoo_widget); $controller_agoo = 'controller_agoo_'.$agoo_widget.'_'.$agoo_widget; if (method_exists($this->registry->get($controller_agoo), 'seourl')) $this->data = $this->$controller_agoo->seourl($this->data); } } } И описывать их отдельно в контроллерах Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни.... Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) Seo_pro отработал - не нашел ссылки у себя и передал управление другому ЧПУ формирователю Так что архитектурно - все правильно и логично Какая разница кто обработает ЧПУ - никакой "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями, привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Модификаторы - путь к не стабильности. Спасибо её нам не надо Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни, только вот не задумываетесь о том, что создание дополнительных отдельных seo-контроллеров, вынесеных из общего контекста базового seo-класса в случае с исползованием сео про создают совершенно непонятно зачем дополнительную нагрузку на работу системы в виде запроса на чтение всей (еще одной) таблицы с с новыми seo-урлами, потом укладывание ее в кеш с сериализацией. Не совсем легкие процедуры, которые вы дублируете. Почему нельзя путем модификаторов внедрить логику формирования нужны роутов в тот же базовый класс SeoPro - для меня большая загадка. Кроме как "а посмотрите как мы умеем" другого объяснения я не вижу. А то что при этом + 50-500 миллисекунд отбирается у сервера. Так это ж никого не волнует. 2 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } А еще в роутере index() вашего ЧПУ формирователя Можно вставлять расширение для "виджетов" ваших путей контроллера Что то типа такого: foreach ($this->data['agoo_widgets'] as $nm => $agoo_widget) { if (!empty($module_data) && $type == $agoo_widget) { if (file_exists(DIR_APPLICATION . "controller/agoo/".$agoo_widget."/".$agoo_widget.".php")) { $this->cont('agoo/'.$agoo_widget.'/'.$agoo_widget); $controller_agoo = 'controller_agoo_'.$agoo_widget.'_'.$agoo_widget; if (method_exists($this->registry->get($controller_agoo), 'seourl')) $this->data = $this->$controller_agoo->seourl($this->data); } } } И описывать их отдельно в контроллерах Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни.... Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) Seo_pro отработал - не нашел ссылки у себя и передал управление другому ЧПУ формирователю Так что архитектурно - все правильно и логично Какая разница кто обработает ЧПУ - никакой "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями, привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Модификаторы - путь к не стабильности. Спасибо её нам не надо Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни, только вот не задумываетесь о том, что создание дополнительных отдельных seo-контроллеров, вынесеных из общего контекста базового seo-класса в случае с исползованием сео про создают совершенно непонятно зачем дополнительную нагрузку на работу системы в виде запроса на чтение всей (еще одной) таблицы с с новыми seo-урлами, потом укладывание ее в кеш с сериализацией. Не совсем легкие процедуры, которые вы дублируете. Почему нельзя путем модификаторов внедрить логику формирования нужны роутов в тот же базовый класс SeoPro - для меня большая загадка. Кроме как "а посмотрите как мы умеем" другого объяснения я не вижу. А то что при этом + 50-500 миллисекунд отбирается у сервера. Так это ж никого не волнует. 2 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } А еще в роутере index() вашего ЧПУ формирователя Можно вставлять расширение для "виджетов" ваших путей контроллера Что то типа такого: foreach ($this->data['agoo_widgets'] as $nm => $agoo_widget) { if (!empty($module_data) && $type == $agoo_widget) { if (file_exists(DIR_APPLICATION . "controller/agoo/".$agoo_widget."/".$agoo_widget.".php")) { $this->cont('agoo/'.$agoo_widget.'/'.$agoo_widget); $controller_agoo = 'controller_agoo_'.$agoo_widget.'_'.$agoo_widget; if (method_exists($this->registry->get($controller_agoo), 'seourl')) $this->data = $this->$controller_agoo->seourl($this->data); } } } И описывать их отдельно в контроллерах Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни.... Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) Seo_pro отработал - не нашел ссылки у себя и передал управление другому ЧПУ формирователю Так что архитектурно - все правильно и логично Какая разница кто обработает ЧПУ - никакой "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями, привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Модификаторы - путь к не стабильности. Спасибо её нам не надо Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Еще забыл упомянуть, что должен быть модуль, размещенный на странице ошибки (схема error/not_found). Он должен получить флаг о том, что seo_контроллер отработал свое, обработал УРЛ выдал правильную ссылку, затем слелал на нее редирект, запустился снова и поставил флаг. Грубо говоря сайт отправляет посетителя на страницу ошибки, но с нее не поступает 404, а поступает 301 на правильный УРЛ. Затем он проверяет УРЛ и ставит флаг о том, что пользователь находится в разделе списка галерей или в разделе галареи. Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } А еще в роутере index() вашего ЧПУ формирователя Можно вставлять расширение для "виджетов" ваших путей контроллера Что то типа такого: foreach ($this->data['agoo_widgets'] as $nm => $agoo_widget) { if (!empty($module_data) && $type == $agoo_widget) { if (file_exists(DIR_APPLICATION . "controller/agoo/".$agoo_widget."/".$agoo_widget.".php")) { $this->cont('agoo/'.$agoo_widget.'/'.$agoo_widget); $controller_agoo = 'controller_agoo_'.$agoo_widget.'_'.$agoo_widget; if (method_exists($this->registry->get($controller_agoo), 'seourl')) $this->data = $this->$controller_agoo->seourl($this->data); } } } И описывать их отдельно в контроллерах Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни.... Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) Seo_pro отработал - не нашел ссылки у себя и передал управление другому ЧПУ формирователю Так что архитектурно - все правильно и логично Какая разница кто обработает ЧПУ - никакой "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями, привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Модификаторы - путь к не стабильности. Спасибо её нам не надо Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Отличные вы оба два с Марком парни.... Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) Seo_pro отработал - не нашел ссылки у себя и передал управление другому ЧПУ формирователю Так что архитектурно - все правильно и логично Какая разница кто обработает ЧПУ - никакой "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями, привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Модификаторы - путь к не стабильности. Спасибо её нам не надо Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Нет - ты не прав. Не создает никакой нагрузки, просто ты еще не разбирался с этим вопросом ;) "Отбирается" всего ничего 0.00... это вообще не критично. К тому же вся таблица "новых" URL кешируется Т е запросов НЕТ вообще А вот модификаторы - это проблема. Постоянные проблемы слета. Код модификаторами меняется иногда до не узнаваемости ЧУЖИМИ модулями и привязка может быть изменена и ЧПУ слетают все из-за кривых рук других. Вы хотите зависеть в ЧПУ от других - флаг в руки и постоянные траблы Т.е. если у нас 35 000 товаров к примеру. При старте системы - даже если мы из кеша берем готовый файл со всем урлами, потом unserialize его в массив.... И считаем скорость поиска файла + скорость чтения файла (а он будет около 10-12мб) + unserialize массива и потом еще одна подобная операция, но уже на меньшем количестве данных... К чему нужна еще одна абсолютно однотипная операция? Хоть прав я, хоть не прав, я никогда не пойму write less, do more. Это же однотипные операции, зачем им создавать паралельный класс? Потому что так круто ? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Я не хотел еб*ть себе мозг ни себе ни клиентам, чтобы патчить у каждого клиента его seo контроллер, который еще и из под pav вообще шаблонов не работает. Да еще и с введением модификаций в 2.0 это вообще геморрой. Так проще, быстрей и более правильно, раз архитектура OpenCart сама позволяет это делать. Марк прав, он не грузит систему, попробуйте сами. 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Т.е. если у нас 35 000 товаров к примеру. :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 :) Да в opencart сколько классов за раз отрабатывает ? Вот то то же. На один класс больше из более сотен Закроем этот вопрос - ты в нем не разбирался до конца. В отличии от костылей vqmod и модификаторов - работает стабильно, никогда не вылетает, не зависит от ДРУГИХ ЧПУ (не имеет значения seo_url, seo_pro, seo_gallery, ....) формирователей и работает так же быстро. Ты наверно знаешь сколько за раз кеширует opencart файлов и то что на один больше - роли не играет совершено. Просто все ленятся по правильному делать - и сандалят костыли. А потом во всех темах пользователи задают вопросы... у меня не работает ЧПУ, у меня слетели ЧПУ, у меня ЧПУ ... Это все из-за ленивых костылей. Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред = OpenCart Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого Даниэль и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно 1 Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Да хоть сто миллионов раз оно будет беспроблемно работать. Но выносить типизированную логику за рамки контекста основного класса - я считаю полным бредом. Бред - это патчить ЧПУ формирователь стандартный, когда для этого есть инструментарий opencart! https://opencartforum.com/topic/53294-собственный-контроллер-и-seo-модули/?do=findComment&comment=469231 Постом выше так что "не надо" Не разобрался - лучше ... Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Кстати для этого в этого и сделал в url.php public function addRewrite($hook) { $this->hook[] = $hook; } public function rewrite($url) { foreach ($this->hook as $hook) { $url = $hook->rewrite($url); } return $url; } Можно где хочешь вызвать обработчик require_once(DIR_CATALOG . 'controller/common/seo.....php'); $seo... = new ControllerCommonSeo.... ($this->registry); $this->url->addRewrite($seo...); Так что всё согласно культуры архитектуры opencart А вот костыли модификаторов и vqmod - это 3.14ц как грубо и не правильно Можно из Opencart сделать WorPress - вопросов нет. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Можно из Opencart сделать WorPress - вопросов нет. Причем здесь эта демагогия... Так задумал разработчик opencart Он специально сделал url = $hook->rewrite($url); для этого (обработки ЧПУ), он специально сделал контроллер not_found (правда роутер там забыл поставить, но и так всё отлично). Специально сделал addHeader($header) $this->headers[] = $header; А то что разработчики балбесы и ленятся сделать согласно культуре opencart, просто говорит об их низкой квалификации или лени. Из-за чего потом opencart ругают про не стабильность и т.п. Необоснованно кстати, из-за лени разработчиков модулей Бред = OpenCart Не правда ваша - opencart на сегодня имеет самую лучшую архитектуру Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 url = $hook->rewrite($url); - это все равно повторная цепочка однотипных операций. Модификаторы же позволяют делать все на уровне базового кода. Сколько угодно можем спорить. Но если есть возможность не переписывать целиком каждый раз весь класс, я его переписывать не буду. Хуки - это может кому то и хорошо, но это спагетти, в которых отсутсвует возможность контроля выполнения модификаций и в случае их наслоения на выходе мы можем получить еще большие сюрпризы, чем необходимость поправить привязки модификаторов. Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 .... Сколько угодно можем спорить. ... Да никто и спорить не будет. То что написал это полный бред. Извини, но из песни слов не выкинешь Какие к моНАХам однотипные операции... Вызов класса - это однотипная операция ? :-D :ugeek: Давай вообще ООП отменим, будем только костылями все делать. "Напишем" cms без ООП Патчить модификаторами это бред и 3.14ц как не правильно согласно культуре opencart Что сказать. Заблуждайся дальше. Постоянные сюрпризы только от vqmod патчей и модификаторов, которые до неузнаваемости пропатчивают ЧПУ формирователь, что потом некуда "привязаться" или что еще хуже начинается каша и каждый тянет одеяло в свою сторону От грамотной архитектуры - сюрпризов нет вообще Это в других темах только - "у меня не работают чпу модуля, хотя vqmod стоит" и т п 90% вот таких запросов на простых модулях. У меня и halfhope (можешь посмотреть в темах поддержки) нет таких запросов априори. Потому что ЧПУ формирователь модуля не зависимый Надіслати Поділитися на інших сайтах More sharing options... snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
snastik Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. У нас есть класс seo_pro - зачем еще один диспетчер роутов внедрять совершенно однотипный ?В том коде, который вы привели, добавок в три строки. ВЫ же написали целые простыни. И кто говорит про пишем меньше и проще ? Надіслати Поділитися на інших сайтах More sharing options... markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000 × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
markimax Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 У halfhope не могу спрашивать, религия не позволяет, в личку напишу если что, почему. Но где я говорил про отмену ООП. Почти намекаешь ;) А теперь задача такая - для каждого языка свой URL ;) Ну и где уже однотипный уже ЧПУ формирователь Лишний вызов класса из СОТНИ вызов никак не отражается ни на чем. Наоборот - только стабильнее система. Это культура opencart snastik - извини, но из песни слов не выкинешь :-D Просто нас читают начинающие разработчики, а ты им советуешь наплевать на культуру кода архитектуры opencart Если делать как задумывал Даниэль - то все будет отлично и стабильно работать 99% модулей можно вообще без vqmod и патчей сделать Просто все ленятся и сандалят костыли Отсюда и не стабильность opencart, не из-за него самого, а из-за разработчиков модулей Надіслати Поділитися на інших сайтах More sharing options... ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення PRICE MASTER - Модуль імпорту/експорту товарів, парсинг, переклад, генерація текстів, редактор каталогу та багато іншого Автор: ScriptBrains 1.0 Синхронізація Замовлень Rozetka.ua та Opencart Автор: sinco Product Manipulator Автор: Hiperlynx007 Видалення дублікатів товарів для OpenCart Автор: Hatshypsut Вибір категорій і виробників для "Знайшли дешевше" шаблону Upstore Автор: Flint2000
ocdev_pro Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 Люди добрые помогите))) Написал свой функционал "Линии товаров" контроллер product/product_lineКоторые у своей таблице в БД привязаны к определенному manufacturer_idКак на seo_pro сделать формирование ссылки у product_line относительно производителя Аналогично производителю я дописал product_line в seo_pro и сами по себе линии товаров работают Ссылка на производителя https://deadseainbaku.az/ahava Ссылка на линию товаров https://deadseainbaku.az/dead-sea-osmotertm-concentrate А нужно получить ссылку https://deadseainbaku.az/ahava/dead-sea-osmotertm-concentrateHow to? Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Собственный контроллер и SEO-модули
halfhope Опубліковано: 11 листопада 2015 Share Опубліковано: 11 листопада 2015 (змінено) Я как-то делал похожее, только Вам нужно вместо zzzz поставить производителя, а его, в свою очередь, взять из БД. И вместо категорий у вас будет использоваться линия товаров. Нет там ничего сложного. просто прочтите и поймете что да как. Вот еще похожая тема, но там решения пока что нет. Змінено 17 листопада 2015 користувачем afwollis Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options... halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Схожі публікації [Підтримка] RBK Money для OpenCart 2.x Автор: waterfall, 27 грудня 2014 rbk money opencart 2.x 10 відповідей 2 857 переглядів KirillS 1 червня 2017 шаблон opencart Fiji - многомодульный, адаптивный шаблон 5в1. [Поддержка] 1 2 3 Автор: Yurta, 22 листопада 2018 адаптивный шаблон шаблон (і ще %d) Теги: адаптивный шаблон шаблон opencart 2.x 60 відповідей 8 680 переглядів Artem1976 22 січня 2021 Шаблон магазина автозапчастей ExlusiveTuning 2.X [Поддержка] 1 2 3 4 Автор: mister12, 24 листопада 2017 черный запчасти (і ще %d) Теги: черный запчасти автозапчасти темный автомагазин адаптивный ocstore 2.x opencart 2.x стильный инструменты светлый белый голубой многоцветный 86 відповідей 15 960 переглядів mister12 12 листопада 2020 Адаптивный шаблон - SimpleMarket [Поддержка] Автор: AMstudio, 5 липня 2017 ocstore 2.x opencart 2.x (і ще %d) Теги: ocstore 2.x opencart 2.x шаблоны адаптивный шаблон 6 відповідей 2 259 переглядів inpromotion 11 грудня 2018 Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 Вот так выглядит код модуля, который нужно размещать на странице ошибки: if ($this->config->get("seogallery") != 1) { $this->load->controller('common/seo_gallery'); $this->config->set("seogallery", 1); if ($this->gallery_flag == 'photos') { $this->load->controller('gallery/photos'); $this->response->output(); exit(); } if ($this->gallery_flag == 'gallery') { $this->load->controller('gallery/gallery'); $this->response->output(); exit(); } } Спасибо всем за подсказку. Правильно я понимаю, что этот код надо размещать в контроллере error/not_found.php? То есть преобразуем mysite.ext/path/entity => mysite.ext/index.php?route=mycatalog/mycontroller&mypath=3&myitem=5 Соответственно получается, что в том случае, если mypath=3 myitem=5 не существует, то уже mycatalog/mycontroller отправит пользователя на error/not_found Может тогда имеет смысл скопировать оригинальный error/not_found.php и, в случае ошибки, вызывает из своего контроллера уже его? Соответственно можно избавиться от флагов. Надіслати Поділитися на інших сайтах More sharing options...
halfhope Опубліковано: 12 листопада 2015 Share Опубліковано: 12 листопада 2015 Это код контроллера hook модуля, который будет размещен в шапке сайта страницы ошибки, а не код контроллера страницы ошибки. Короче пользователь переходит по ссылке mysite.ext/path/entity, стандартный SEO контроллер видит, что ее не существует и выводит содержимое страницы ошибки, но если в шапке страницы ошибки поставить подгрузку своего SEO контроллера (через модуль и тот код, что я прислал) он проверит ссылку, выставит флаг о том что страница есть и она принадлежит модулю и в соответствии с тем какой флаг выставили - загрузит тот или иной раздел. А если ссылка не прошла проверку, то выводится стандартная страница ошибки. Надіслати Поділитися на інших сайтах More sharing options... Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options... Назад 1 2 Вперед Сторінка 1 з 2 Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Timber Опубліковано: 12 листопада 2015 Автор Share Опубліковано: 12 листопада 2015 А где тогда этот код размещать? Просто не пойму, что значит "шапка страницы ошибки" Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts