Чудилла Posted May 31, 2014 Report Share Posted May 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] Проверял все работает. Quote Link to post Share on other sites
Чудилла Posted May 31, 2014 Author Report Share Posted May 31, 2014 Объясните, пожалуйста, в чем смысл этого и чем это лучше того, что есть сейчас в стандарте? Ну вообще если итак все ссылается на index, после уже подключает необходимый модуль, роутинг уже должен был быть.А вообще поднимал сайт на джинсе, чтоб не переводить все, написал роутер Quote Link to post Share on other sites
Чудилла Posted May 31, 2014 Author Report Share Posted May 31, 2014 Или это предназначено для тех систем, где не работает .htaccess? Да все верно, но это должно быть еще внедрено автором магазина.Просто получается логику приложения на администрирование взваливать.Сейчас вроде все пользуются роутингом, тем более скрипт коммерческий, роутинг должен быть. Quote Link to post Share on other sites
Kosjak76 Posted May 31, 2014 Report Share Posted May 31, 2014 Если в .htaccess остаются записи, то смысла я вообще в этом не вижу. Quote Link to post Share on other sites
Чудилла Posted May 31, 2014 Author Report Share Posted May 31, 2014 Если в .htaccess остаются записи, то смысла я вообще в этом не вижу.Ну там осталось элементарная логика, нужно - исправьте полностью Quote Link to post Share on other sites
Kosjak76 Posted May 31, 2014 Report Share Posted May 31, 2014 Зачем? Обьясните смысл?Если на хосте не работает .htaccess - ваше решение не работает.Если на хосте работает .htaccess - ваше решение не имеет смысла. Quote Link to post Share on other sites
Чудилла Posted May 31, 2014 Author Report Share Posted May 31, 2014 Если на хосте не работает .htaccess - ваше решение не работает.Уверены?) location / { if (!-e $request_filename){ rewrite ^(.*)$ /index.php; } } P.S я же писал что джинса разрабатывал Quote Link to post Share on other sites
Kosjak76 Posted May 31, 2014 Report Share Posted May 31, 2014 А ресайз и все остальное? Quote Link to post Share on other sites
Чудилла Posted May 31, 2014 Author Report Share Posted May 31, 2014 А ресайз и все остальное?А его там вообще не должно быть, первый раз вижу что ресайз в htaccessЕсли кому то нравится - можете дальше выносить логику приложения в настройки веб сервера. Quote Link to post Share on other sites
Ogybil Posted June 1, 2014 Report Share Posted June 1, 2014 Не, столько работать нельзя...( Должно быть, не должно быть - это философияЕсли то что предлагается востребовано, тогда да, но внятного ответа зачем это нет) Quote Link to post Share on other sites
Чудилла Posted June 2, 2014 Author Report Share Posted June 2, 2014 Должно быть, не должно быть - это философияА философия тут причем? Quote Link to post Share on other sites
Ogybil Posted June 2, 2014 Report Share Posted June 2, 2014 При том что для кого-то должно, а для кого-то нет, а кто-то скажет Наверное должно, но небуду, а другой Это не надо, но поставлю и т.д. необходимости НЕТ! Роутинг на симпле абсолютно бесполезен. Вы его сделали - отлично, но на прямой вопрос: в чем смысл этого и чем это лучше того, что есть сейчас в стандарте?Ответ: роутинг уже должен был быть. Должен был, не должен был, или должен был, а может не болжен был.... Обоснованного ответа в его необходимости нет. Quote Link to post Share on other sites
infinity178 Posted November 20, 2014 Report Share Posted November 20, 2014 Ну если будет тишина.. ни страшно.. так сказать не своевременно.. Прямое обращение к автору: Иными словами ваше решение не столько оптимизирует или глобально улучшает, а более придает движек к гибкости и манипуляцией над глобальными переходами.. Аля битрикс создает неограченное кол-во каталогов - так и здесь, если развить маршрутизация предложенную вами. Все верно? или я так понял ваше предложение в этих изменениях Quote Link to post Share on other sites
Kors Posted November 20, 2014 Report Share Posted November 20, 2014 Иными словами ваше решение не столько оптимизирует или глобально улучшает, а более придает движек к гибкости и манипуляцией над глобальными переходами..В том и дело, что просто наводит некоторую красоту и единообразие, но практически не улучшает и не придает гибкости. Вот, например, часто SEO-спецы говорят - не нравится в адресах /products/ или /catalog/. Если бы разработка позволяла управлять этим и ОДНИМ изменением в настройках, заменять, скажем /products/ на /goods/, это была бы и гибкость, и польза немалая. Или вообще адреса формировало бы по шаблонам типа /product/%id%/%url%/ ... Quote Link to post Share on other sites
question Posted January 13, 2019 Report Share Posted January 13, 2019 Покажите демо, как оно всё работает. Quote Link to post Share on other sites
yr4ik Posted January 13, 2019 Report Share Posted January 13, 2019 Покажите демо, как оно всё работает. вам решение бесплатно дают, так еще и демо нужно показать? Quote Link to post Share on other sites
question Posted January 13, 2019 Report Share Posted January 13, 2019 вам решение бесплатно дают, так еще и демо нужно показать?Желательно Quote Link to post Share on other sites
Noxter Posted January 13, 2019 Report Share Posted January 13, 2019 ЖелательноНу и какой толк от того демо если будет работать в точности как стандартная симпла? Вы вообще понимаете о чём здесь идёт речь, что такое роутер? Quote Link to post Share on other sites
phukortsin Posted January 14, 2019 Report Share Posted January 14, 2019 Желательно На днях в okay опубликован план развития на год, там, в частности, стоит "9. Гибкий роутинг, возможность пользователю самому решать, как будут строится URL для категорий и для товаров". Надо полагать, со временем будет... Quote Link to post Share on other sites
question Posted January 14, 2019 Report Share Posted January 14, 2019 Ну и какой толк от того демо если будет работать в точности как стандартная симпла?Вы вообще понимаете о чём здесь идёт речь, что такое роутер?Когда писал первое сообщение, думал, автор все пути и всю логику поменял. Сейчас глянул код, понял, что шило на мыло. Quote Link to post Share on other sites
Noxter Posted January 14, 2019 Report Share Posted January 14, 2019 Когда писал первое сообщение, думал, автор все пути и всю логику поменял. Сейчас глянул код, понял, что шило на мыло.Обоснуйте. Quote Link to post Share on other sites
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.