Чудилла Опубликовано 31 мая, 2014 Жалоба Поделиться Опубликовано 31 мая, 2014 Сам роутинг <?php $this->routes = array( # Каталог товаров array( 'pattern' => '~^/catalog/([^/]+)/?$~', 'class' => 'ProductsView', 'aliases' => array('category'), ), array( 'pattern' => '~^/catalog/([^/]+)/([^/]+)/?$~', 'class' => 'ProductsView', 'aliases' => array('category', 'brand'), ), array( 'pattern' => '~^/products/([^/]+)/?$~', 'class' => 'ProductView', 'aliases' => array('product_url'), ), array( 'pattern' => '~^/products/?$~', 'class' => 'ProductsView', ), array( 'pattern' => '~^/brands/([^/]+)/?$~', 'class' => 'ProductsView', 'aliases' => array('brand'), ), array( 'pattern' => '~^/brands/([^/]+)/page_([^/]+)/?$~', 'class' => 'ProductsView', 'aliases' => array('brand', 'page'), ), # Поиск товаров array( 'pattern' => '~^/search/([^/]+)/?$~', 'class' => 'ProductsView', 'aliases' => array('keyword'), ), array( 'pattern' => '~^/search/?$~', 'class' => 'ProductsView', ), # Блог array( 'pattern' => '~^/blog/([^/]+)/?$~', 'class' => 'BlogView', 'aliases' => array('url'), ), array( 'pattern' => '~^/blog/?$~', 'class' => 'BlogView', ), # Корзина и заказы array( 'pattern' => '~^/cart/?$~', 'class' => 'CartView', 'method' => 'cart', ), array( 'pattern' => '~^/cart/([^/]+)/?$~', 'class' => 'CartView', 'aliases' => array('add_variant'), ), array( 'pattern' => '~^/cart/remove/([^/]+)/?$~', 'class' => 'CartView', 'aliases' => array('delete_variant'), ), array( 'pattern' => '~^/order/([^/]+)/?$~', 'class' => 'OrderView', ), array( 'pattern' => '~^/order/?$~', 'class' => 'OrderView', ), # Для пользователей array( 'pattern' => '~^/user/login/?$~', 'class' => 'LoginView', ), array( 'pattern' => '~^/user/register/?$~', 'class' => 'RegisterView', ), array( 'pattern' => '~^/user/logout/?$~', 'class' => 'LoginView', 'aliases' => array('action'), ), array( 'pattern' => '~^/user/password_remind/?$~', 'class' => 'LoginView', 'aliases' => array('action'), ), array( 'pattern' => '~^/user/password_remind/([0-9a-z]+)/?$~', 'class' => 'LoginView', 'aliases' => array('action', 'code'), ), array( 'pattern' => '~^/user/?$~', 'class' => 'UserView', ), # Feedback array( 'pattern' => '~^/contact/?$~', 'class' => 'FeedbackView', ), # Download array( 'pattern' => '~^/order/([^/]+)/([^/]+)/?$~', 'class' => 'OrderView', 'aliases' => array('url', 'file'), ), array( 'pattern' => '~^/?$~', ), array( 'pattern' => '~^/([^/]*)/?$~', 'class' => 'PageView', 'aliases' => array('page_url'), ), ); ?> Сам роутинг сохраним в корне site.ru/router.phpЗаменяем в файле indexView // Текущий модуль (для отображения центрального блока) $module = $this->request->get('module', 'string'); $module = preg_replace("/[^A-Za-z0-9]+/", "", $module); // Если не задан - берем из настроек if(empty($module)) return false; //$module = $this->settings->main_module; на $params = array(); $module = ''; require_once($_SERVER["DOCUMENT_ROOT"]. '/router.php'); foreach($this->routes as $map){ $url_path = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); if(preg_match($map['pattern'], $url_path, $matches)){ array_shift($matches); foreach ($matches as $index => $value){ $params[$map['aliases'][$index]] = $value; } $module = $map['class']; break; } } $this->params = $params; Теперь добавим переменные в файл View.php public $params; и $this->params = &self::$view_instance->params; И нужно будет заменить все GET-Параметры в файлах view/Пример замены: // GET-Параметры $category_url = $this->request->get('category', 'string'); $brand_url = $this->request->get('brand', 'string'); на // GET-Параметры $category_url = isset($this->params['category']) ? $this->params['category'] : ''; $brand_url = isset($this->params['brand']) ? $this->params['brand'] : ''; и останутся у нас такие записи в .htaccess AddDefaultCharset UTF-8 ErrorDocument 404 /404 ErrorDocument 401 /password.php RewriteEngine on # Админка теперь по адресу /simpla RewriteRule ^admin/?$ simpla [L] # Google sitemap RewriteRule ^sitemap.xml?$ sitemap.php [L,QSA] # XML RewriteRule ^yandex.xml?$ yandex.php [L,QSA] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php # Ресайз картинок на лету RewriteRule ^files/products/(.+) resize/resize.php?file=$1&token=%{QUERY_STRING} #RewriteCond %{THE_REQUEST} ^GET\ (.*)files/products/(.*)\?([A-z0-9]*) #RewriteRule ^files/products/(.+) resize/resize.php?file=%2&token=%3 [L,NE] Проверял все работает. Цитата Ссылка на сообщение Поделиться на другие сайты
Чудилла Опубликовано 31 мая, 2014 Автор Жалоба Поделиться Опубликовано 31 мая, 2014 Объясните, пожалуйста, в чем смысл этого и чем это лучше того, что есть сейчас в стандарте? Ну вообще если итак все ссылается на index, после уже подключает необходимый модуль, роутинг уже должен был быть.А вообще поднимал сайт на джинсе, чтоб не переводить все, написал роутер Цитата Ссылка на сообщение Поделиться на другие сайты
Чудилла Опубликовано 31 мая, 2014 Автор Жалоба Поделиться Опубликовано 31 мая, 2014 Или это предназначено для тех систем, где не работает .htaccess? Да все верно, но это должно быть еще внедрено автором магазина.Просто получается логику приложения на администрирование взваливать.Сейчас вроде все пользуются роутингом, тем более скрипт коммерческий, роутинг должен быть. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 31 мая, 2014 Жалоба Поделиться Опубликовано 31 мая, 2014 Если в .htaccess остаются записи, то смысла я вообще в этом не вижу. Цитата Ссылка на сообщение Поделиться на другие сайты
Чудилла Опубликовано 31 мая, 2014 Автор Жалоба Поделиться Опубликовано 31 мая, 2014 Если в .htaccess остаются записи, то смысла я вообще в этом не вижу.Ну там осталось элементарная логика, нужно - исправьте полностью Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 31 мая, 2014 Жалоба Поделиться Опубликовано 31 мая, 2014 Зачем? Обьясните смысл?Если на хосте не работает .htaccess - ваше решение не работает.Если на хосте работает .htaccess - ваше решение не имеет смысла. Цитата Ссылка на сообщение Поделиться на другие сайты
Чудилла Опубликовано 31 мая, 2014 Автор Жалоба Поделиться Опубликовано 31 мая, 2014 Если на хосте не работает .htaccess - ваше решение не работает.Уверены?) location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php; } } P.S я же писал что джинса разрабатывал Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 31 мая, 2014 Жалоба Поделиться Опубликовано 31 мая, 2014 А ресайз и все остальное? Цитата Ссылка на сообщение Поделиться на другие сайты
Чудилла Опубликовано 31 мая, 2014 Автор Жалоба Поделиться Опубликовано 31 мая, 2014 А ресайз и все остальное?А его там вообще не должно быть, первый раз вижу что ресайз в htaccessЕсли кому то нравится - можете дальше выносить логику приложения в настройки веб сервера. Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 1 июня, 2014 Жалоба Поделиться Опубликовано 1 июня, 2014 Не, столько работать нельзя...( Должно быть, не должно быть - это философияЕсли то что предлагается востребовано, тогда да, но внятного ответа зачем это нет) Цитата Ссылка на сообщение Поделиться на другие сайты
Чудилла Опубликовано 2 июня, 2014 Автор Жалоба Поделиться Опубликовано 2 июня, 2014 Должно быть, не должно быть - это философияА философия тут причем? Цитата Ссылка на сообщение Поделиться на другие сайты
Ogybil Опубликовано 2 июня, 2014 Жалоба Поделиться Опубликовано 2 июня, 2014 При том что для кого-то должно, а для кого-то нет, а кто-то скажет Наверное должно, но небуду, а другой Это не надо, но поставлю и т.д. необходимости НЕТ! Роутинг на симпле абсолютно бесполезен. Вы его сделали - отлично, но на прямой вопрос: в чем смысл этого и чем это лучше того, что есть сейчас в стандарте?Ответ: роутинг уже должен был быть. Должен был, не должен был, или должен был, а может не болжен был.... Обоснованного ответа в его необходимости нет. Цитата Ссылка на сообщение Поделиться на другие сайты
infinity178 Опубликовано 20 ноября, 2014 Жалоба Поделиться Опубликовано 20 ноября, 2014 Ну если будет тишина.. ни страшно.. так сказать не своевременно.. Прямое обращение к автору: Иными словами ваше решение не столько оптимизирует или глобально улучшает, а более придает движек к гибкости и манипуляцией над глобальными переходами.. Аля битрикс создает неограченное кол-во каталогов - так и здесь, если развить маршрутизация предложенную вами. Все верно? или я так понял ваше предложение в этих изменениях Цитата Ссылка на сообщение Поделиться на другие сайты
Kors Опубликовано 20 ноября, 2014 Жалоба Поделиться Опубликовано 20 ноября, 2014 Иными словами ваше решение не столько оптимизирует или глобально улучшает, а более придает движек к гибкости и манипуляцией над глобальными переходами..В том и дело, что просто наводит некоторую красоту и единообразие, но практически не улучшает и не придает гибкости. Вот, например, часто SEO-спецы говорят - не нравится в адресах /products/ или /catalog/. Если бы разработка позволяла управлять этим и ОДНИМ изменением в настройках, заменять, скажем /products/ на /goods/, это была бы и гибкость, и польза немалая. Или вообще адреса формировало бы по шаблонам типа /product/%id%/%url%/ ... Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 13 января, 2019 Жалоба Поделиться Опубликовано 13 января, 2019 Покажите демо, как оно всё работает. Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 13 января, 2019 Жалоба Поделиться Опубликовано 13 января, 2019 Покажите демо, как оно всё работает. вам решение бесплатно дают, так еще и демо нужно показать? Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 13 января, 2019 Жалоба Поделиться Опубликовано 13 января, 2019 вам решение бесплатно дают, так еще и демо нужно показать?Желательно Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 13 января, 2019 Жалоба Поделиться Опубликовано 13 января, 2019 ЖелательноНу и какой толк от того демо если будет работать в точности как стандартная симпла? Вы вообще понимаете о чём здесь идёт речь, что такое роутер? Цитата Ссылка на сообщение Поделиться на другие сайты
phukortsin Опубликовано 14 января, 2019 Жалоба Поделиться Опубликовано 14 января, 2019 Желательно На днях в okay опубликован план развития на год, там, в частности, стоит "9. Гибкий роутинг, возможность пользователю самому решать, как будут строится URL для категорий и для товаров". Надо полагать, со временем будет... Цитата Ссылка на сообщение Поделиться на другие сайты
question Опубликовано 14 января, 2019 Жалоба Поделиться Опубликовано 14 января, 2019 Ну и какой толк от того демо если будет работать в точности как стандартная симпла?Вы вообще понимаете о чём здесь идёт речь, что такое роутер?Когда писал первое сообщение, думал, автор все пути и всю логику поменял. Сейчас глянул код, понял, что шило на мыло. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 14 января, 2019 Жалоба Поделиться Опубликовано 14 января, 2019 Когда писал первое сообщение, думал, автор все пути и всю логику поменял. Сейчас глянул код, понял, что шило на мыло.Обоснуйте. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.