a13x Опубликовано 6 декабря, 2017 Автор Жалоба Поделиться Опубликовано 6 декабря, 2017 (изменено) Fixed.http://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/pylesos-dyson-dc32-animalpro Чтобы сделать урл без префикса, достаточно в файле Urewrite.php заменить метод на product_check() на этот public function product_check(){ $prod_url = $this->lasturi; $product = $this->products->get_product((string)$prod_url); if(isset($product)){ $this->module = "ProductView"; $this->arguments["product_url"] = $prod_url; } } и в файле-шаблоне design/html/products.tpl сделать ссылку на товар вида: <a data-product="{$product->id}" href="{$rewrite->url}/{$product->url}">{$product->name|escape}</a> везде где это необходимо.Также надо изменить 1 проверку, чтобы товары могли отображаться из каталога, без категорий.В файле view/ProductView.php найти условие if(empty($category)) и зменить на: if(empty($category) && $br_cat != $this->rewrite->catalog->url) Изменено 6 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 6 декабря, 2017 Жалоба Поделиться Опубликовано 6 декабря, 2017 Вообщем вы не поняли к чему я вел... Ладно. Уберите хотя бы фатал ерор с ресайза. Там явно нет переменной $this Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 6 декабря, 2017 Автор Жалоба Поделиться Опубликовано 6 декабря, 2017 (изменено) Вообщем вы не поняли к чему я вел... Ладно. Уберите хотя бы фатал ерор с ресайза. Там явно нет переменной $this Убрал. 1. В файле URewrite.php найти case "files": и внизу убрать слово exit();2. В файле resize/resize.php сделать так $filename = $simpla->rewrite->arguments["file"]; $token = $simpla->rewrite->arguments["token"]; Изменено 6 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Пастухов Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 Fixed.http://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/pylesos-dyson-dc32-animalpro Имеем дубли типаhttp://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/pylesos-dyson-dc32-animalprohttp://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/pylesosy/pylesos-dyson-dc32-animalprohttp://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/pylesosy/pylesosy/pylesos-dyson-dc32-animalpro А все же, поясните глупому, зачем вся эта возня? Если хочется .htaccess совсем не использовать, это еще понятно. Но пока вижу, что .htaccess сократили на 20-30 строк, но вместо этого написали горы нового кода, в котором еще ошибки править и править? Если это для адресов типа site.ru/catalog/cat_name1/cat_name2/prod_name, то это куда проще можно было бы сделать... А в демо можете дать доступ к админке, чтоб проверить возможности некоторых ошибок? Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 Имеем дубли типа http://simpla-url-re...-dc32-animalpro http://simpla-url-re...-dc32-animalpro http://simpla-url-re...-dc32-animalproПочитайте про тег LINK атрибут REL=CANONICAL и вы поймёте что это не дубли. А все же, поясните глупому, зачем вся эта возня?Я уже писал выше. Во первых, это делается для удобства пользователей сайта, во вторых это правильнее в плане сео раскрутки, в третьих избавление от кучи ненужных строк в htaccess и простой установкой на nginx. Если хочется .htaccess совсем не использовать, это еще понятно. Нопока вижу, что .htaccess сократили на 20-30 строкСовсем не использовать нельзя, 1 строка будет полюбому, где вы будете указывать обработчик урлов, поэтому я сократил не НА столько, а ДО стольких то. Если его почистить то можно оставить всего 4 строки, при условии что у вас правильно настроен апач. RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*)$ /index.php?rewrite=$1 [L] но вместо этого написали горы нового кода, в котором еще ошибки править и править?А вас не смущает что сама система написана с кучей кода? Или там не может быть ошибок? Ошибок не будет тогда, когда ничего не делать. Можете пользоваться и дальше тем что есть, я предпочитаю делать так как надо конечным покупателям инет магаза. Если это для адресов типа site.ru/catalog/cat_name1/cat_name2/prod_name, то это куда проще можно было бы сделать.. Например? Через htaccess? Спасибо, я уже видел этот кривой подход некоторых умельцев где идут строки длинной во весь экран с перечислением $1, $2, $3, $4 и так далее для разных урлов. Проблему можно решить по разному, кто-то решает так, флаг в руки. А в демо можете дать доступ к админке, чтоб проверить возможности некоторых ошибок? Я к админке не прикасался, она не тронута ни на грамм и должна работать как обычно. Насколько знаю там index.php файл всё обрабатывает и обработчик урлов не работает. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 Ну нечего делать человеку - пусть фигней страдает... Не мешайте))Вбил себе в голову, что так будет лучше - это проблемы его и его врача.catalog/bytovaya-tehnika/pylesosy/pylesosy/pylesosy/pylesos-dyson-dc32-animalproОфигительная ссылка! Я просто ору...Очень удобно для пользователей сайта. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 (изменено) Ну нечего делать человеку - пусть фигней страдает... Не мешайте))Вбил себе в голову, что так будет лучше - это проблемы его и его врача.Дружище, если я тебя чем то обидел, то извини, не хотел. Если я забрал часть твоего дохода от продаж твоего модуля, то я тоже не хотел, будь проще. p.s. Только ты почему то сам сделал этот же модуль и продаёшь его, а мне вдруг врач нужен Попахивает двойными стандартами Изменено 7 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 Да мне пофиг))И если ты ВНИМАТЕЛЬНО прочитаешь первое сообщение той темы - ты поймешь, почему твое решение НЕ ПОДОЙДЕТ. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 Да мне пофиг))И если ты ВНИМАТЕЛЬНО прочитаешь первое сообщение той темы - ты поймешь, почему твое решение НЕ ПОДОЙДЕТ.Я аргументировал все свои ответы, а если вы чего-то не знаете, то это уже ваши проблемы. В СИМПЛА изначально идёт проверка на дубли, я лишь её переделал поскольку бренды и категории теперь не смешаны как это было раньше. А теперь вопрос, ПОЧЕМУ МОЁ РЕШЕНИЕ НЕ ПОДОЙДЁТ? получится аргументированно ответить или нет?Систему битрикс по вашему наверно тоже дураки разрабатывали Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 P.S: до сих пор использую древнюю версию 1.4, так как в своё время кучу всего переписал в движке, а в новых версиях этих вещей до сих пор нет, и мне лень заново писать. Поэтому прошу не предлагать переходить на новую версию.Достаточно аргументировано? Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 Достаточно аргументировано? вполне. надеюсь у него не Windows XP. я почему то думал что речь идёт про сам модуль. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 http://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/bytovaya-tehnika/pylesosy/bytovaya-tehnika/pylesos-dyson-dc23-pink И даже такая ссылка - это нормально?Если разделены Бренды и Категории - сделай в Категории поле full_url, например.И пиши в него полный урл категории вида bytovaya-tehnika/pylesosyА по нему уже и проверяй.http://prntscr.com/hk83t4Я так делал в одном проекте. Это намного удобнее и не будет такого. Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 Или даже без поля в базе.Собирать этот урл у категории в том месте, где собирается pathНо мне с хранением в базе было удобнее.Просто попробуй - и удивишься, насколько все станет проще и удобней. и уйдет половина дублей. Цитата Ссылка на сообщение Поделиться на другие сайты
Пастухов Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 Я уже писал выше. Во первых, это делается для удобства пользователей сайта, во вторых это правильнее в плане сео раскрутки, в третьих избавление от кучи ненужных строк в htaccess и простой установкой на nginx. 1. для удобства пользователей сайта,2. правильнее в плане сео раскрутки,3. избавление от кучи ненужных строк в htaccess,4. простой установкой на nginx. 1. А в чем состоит удобство для пользователей? По-моему, они в большинстве случаев на URL внимания не обращают вообще. 2. правильнее в плане сео раскрутки, думаю, было бы разрешить URL совсем произвольные, чтобы конкретный раскрутчик имел полную свободу, в частности, мог назначать товару адреса типа2.1 site.ru/products/product_url2.2 site.ru/catalog/cat1/cat2/product_url2.2 site.ru/product_url - вообще без меток для разбора2.4 site.ru/goods/product_url - со своей меткиА у Вас получается специфичная адресация. А надо бы более гибко. 3. И чем Вам эти строки помешали? 4. Тут еще есть некоторый смысл. Но и при существующей системе давно известно решение на порядок проще:http://forum.simplacms.ru/topic/3243-simpla-cms-i-nginx/ А в демо можете дать доступ к админке, чтоб проверить возможности некоторых ошибок? Я к админке не прикасался, она не тронута ни на грамм и должна работать как обычно. Насколько знаю там index.php файл всё обрабатывает и обработчик урлов не работает. Даже если она работает как обычно, то результат зависит от данных, которые в ней введены.Было интересно, в частности, создать товар с URL pylesosy и посмотреть, как будет при Вашей разработке определяться адрес bytovaya-tehnika/pylesosy - он подходит как для товара, так и для категории.Подозреваю, тут в любом случае будет ошибка - одна из страниц - товара или категории - будет недоступна в принципе. Вот спеца по СЕО обрадуете... Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 (изменено) Помоему никто не будет создавать товар с таким же названием как у категории. Вы слишком категоричны + всегда для этого можно будет ввести префикс идентификации товара.1. удобство в том что заходя в товар он по хлебным крошкам видит весь путь тоавра, включая подкатегории. В симпле же если я зайду в товар, то по крошкам я увижу каталог и бренд, но не полную иерархию категорий товара2. а у меня почти так и есть, зная как работает контролер вы можете сами всё задать лишь дописав нужный метод.3. тем что при переносе на nginx их надо переписывать4. решение есть и будет всегда, мой метод лишь объединяет всё это в одном, и конфиг нгинкса что вы скинули у меня выглядит так: location ~ (api|config|design/html|payment|smarty|view) { deny all; } location / { try_files $uri @urewrite; } location @urewrite { index index.php; rewrite ^/(.+)$ /index.php?rewrite=$1 last; } Я никого не заставляю использовать этот модуль, поэтому все скептики могут использовать htaccess с кучей правил обработки, я лишь привык к тому, чтобы оптимизировать работу себе и заказчику. Изменено 7 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 (изменено) http://simpla-url-rewrite.webtask.pro/catalog/bytovaya-tehnika/pylesosy/bytovaya-tehnika/pylesosy/bytovaya-tehnika/pylesos-dyson-dc23-pink И даже такая ссылка - это нормально?Если разделены Бренды и Категории - сделай в Категории поле full_url, например.И пиши в него полный урл категории вида bytovaya-tehnika/pylesosyА по нему уже и проверяй.http://prntscr.com/hk83t4Я так делал в одном проекте. Это намного удобнее и не будет такого.По ссылке согласен, где то упустил проверку....допилил.По поводу скрина, то не ко всему применима постоянная ссылка. в данном варианте вы привязали её к 1 категории, а у товара их может быть много. Чтобы исправить множественное вложение категорий, которое кроме как руками не вызвать, достаточно прописать в файле view/ProductView.php доп.проверку:Найти код: foreach($category->path AS $key => $cat){ $urikey = $key + 1; //0 - /catalog/, поэтому +1 $url[] = $uri[$urikey]; $this->breadcrumbs[] = [$cat->name, $this->rewrite->catalog->url."/".implode("/", $url)]; if($cat->url != $uri[$urikey]) return false; } и зменить на: foreach($category->path AS $key => $cat){ $urikey = $key + 1; //0 - /catalog/, поэтому +1 $url[] = $uri[$urikey]; $full_url = $this->rewrite->catalog->url."/".implode("/", $url); $this->breadcrumbs[] = [$cat->name, $full_url]; if($cat->url != $uri[$urikey]) return false; } $url_to_prod = $full_url."/".$this->rewrite->lasturi; if($this->rewrite->url != $url_to_prod){ header("Location: /".$url_to_prod, true, 301); exit(); } Изменено 7 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Пастухов Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 (изменено) 1. В симпле же если я зайду в товар, то по крошкам я увижу каталог и бренд, но не полную иерархию категорий товара Как это? Вот, например, в товаре http://demo.simplacms.ru/products/pylesos-dyson-dc23-pink видна полная иерархия и еще бренд. Если вдруг последний не нравится, легко убрать пару строк в шаблоне.Давным-давно сделано и чудесно работает... 2. а у меня почти так и есть, зная как работает контролер вы можете сами всё задать лишь дописав нужный метод. Хорошо, сколько Вам времени надо, чтоб дописать в стиле2.2 site.ru/product_url - вообще без меток для разборадля товаров, категорий, блога и страниц?Если можно, допишите на демо.Идеально, если будет переключатель для разных стилей URL - обычный Ваш и стиль 2.2.Подозреваю, что быстро без ошибок не сделаете. 3. тем что при переносе на nginx их надо переписывать4. мой метод лишь объединяет всё это в одном 3,4. Так сравните Ваше решение и способ, при котором надо переписать стандартно парочку конфигурационнных файлов. То есть Вы придумали решение на порядок более сложное, чем было известно ранее...Помоему никто не будет создавать товар с таким же названием как у категории. Вы слишком категоричны + всегда для этого можно будет ввести префикс идентификации товара. Программист не должен заниматься такими глупостями, как фантазировать, кто и как будет называть. Он должен стремиться к тому, чтоб его продукт работал корректно ВО ВСЕХ случаях, или хотя бы в большинстве. 5. А сейчас, как я понимаю, имеем очевидный недостаток: этот азбучный момент - защита от одинаковых URL - у Вас вообще не планировался... Изменено 7 декабря, 2017 пользователем Пастухов Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 (изменено) 5. А сейчас, как я понимаю, имеем очевидный недостаток: этот азбучный момент - защита от одинаковых URL - у Вас вообще не планировался...О чём сейчас речь? Какие одинаковые урлы? Программист не должен заниматься такими глупостями, как фантазировать,кто и как будет называть. Он должен стремиться к тому, чтоб его продуктработал корректно ВО ВСЕХ случаях, или хотя бы в большинстве.Я не хочу спорить, я лишь основываюсь на более чем 10-ти летнем опыте работы в этой сфере. Мне в принципе всё равно кто что должен и нет, я привык делать так, как будет удобно в дальнейшем мне и заказчику, так и делаю. По работе мне приходится продумывать ВСЕ мелочи, включая и такие, и в 99% случаев ни один нормальный человек не будет называть товар ПЫЛЕСОСЫ.Если уж такое случится и мне человек пожалуется на это, я допилю в админке проверку, либо объясню ему как правильно называть товары. 3,4. Так сравните Ваше решение и способ, при котором надо переписать стандартно парочку конфигурационнных файлов. То есть Вы придумали решение на порядок более сложное, чем было известно ранее...Пусть будет так, но я придумал решение которое не зависит от вебсервера (апач или нгинкс), решение которое ПРАВИЛЬНО отображает иерархию категорий. Да, может оно местами где-то сложно написано, но уж как есть. Хорошо, сколько Вам времени надо, чтоб дописать в стиле2.2 site.ru/product_url - вообще без меток для разборадля товаров, категорий, блога и страниц?Если можно, допишите на демо.Идеально, если будет переключатель для разных стилей URL - обычный Ваш и стиль 2.2.Подозреваю, что быстро без ошибок не сделаете.Вся суть заключается лишь в проверке нет ли такой страницы, если нет то проверка по товару, если нет то проверка по блогу и так далее, но этот подход УЖЕ неправильный. У каждой страницы, у которой есть вложения должен быть свой адрес /catalog/, /blog/, /page/ и тп. Если для page сделали дефолтно (без префикса), то зачем это менять и что-то добавлять?Суть этого модуля совсем не в этом. По поводу ссылки на демо, то я уже писал, что туда подставляется бренд в хлебные крошки, а я его не выбирал и он мне не нужен.Всё что мне надо это ссылка такого вида: http://demo.simplacms.ru/catalog/pylesosy/pylesos-dyson-dc23-pink со всеми вложениями, а этого по умолчанию нет Изменено 7 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Пастухов Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 О чём сейчас речь? Какие одинаковые урлы?Я не хочу спорить, я лишь основываюсь на более чем 10-ти летнем опыте работы в этой сфере. Мне в принципе всё равно кто что должен и нет, я привык делать так, как будет удобно в дальнейшем мне и заказчику, так и делаю. По работе мне приходится продумывать ВСЕ мелочи, включая и такие, и в 99% случаев ни один нормальный человек не будет называть товар ПЫЛЕСОСЫ.Если уж такое случится и мне человек пожалуется на это, я допилю в админке проверку, либо объясню ему как правильно называть товары. "объясню ему как правильно называть товары" - Вот это и есть халтура программистская. А то он и так не знает, как называть - несколько символов на клавиатуре набрать.Будете объяснять, что надо новую категорию называть так, чтоб не совпало ни с одним из тысяч товаров?Ему эти тысячи помнить надо? Или на бумаге список написать и сверять каждый раз, потому что программист не может простенький функционал по проверке написать? 1. Так что в итоге? Вам не нравится в хлебных крошках бренд. Вы не догадались, что это убирается элементарно в шаблоне, в вместо простенького действия проводите сложную доработку, которая для хлебных крошек ничего нового не добавляет - там и раньше был путь. Выходит, никакого добавочного удобства для посетителя доработка не несет. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 7 декабря, 2017 Автор Жалоба Поделиться Опубликовано 7 декабря, 2017 (изменено) Я уже писал что делает этот модуль и для чего он. Не вижу смысла повторяться. Если вас всё устраивает, значит он вам не нужен. p.s. файл categories.tpl конечно же должен быть без одинакового вывода при проверке род. категории, а именно: {if $categories} {if !isset($url)}{assign url $rewrite->catalog->url}{/if} {if isset($prevurl)}{assign var="url" value="$url/$prevurl"}{/if} <ul> {foreach item=c from=$categories} {if $c->visible} <li> <a class="{if $c->url|in_array:$rewrite->uri}selected{/if}" href="{$url}/{$c->url}">{$c->name}</a> {include file='categories.tpl' prevurl=$c->url categories=$c->subcategories} </li> {/if} {/foreach} </ul> {/if} на род. категорию вобще не надо проверять, в шаблоне по умолчанию по крайней мере. Изменено 7 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 7 декабря, 2017 Жалоба Поделиться Опубликовано 7 декабря, 2017 По поводу скрина, то не ко всему применима постоянная ссылка. в данном варианте вы привязали её к 1 категории, а у товара их может быть много.Это не про товар, а про категорию.У категории же путь всегда одинаковый, правильно? Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 8 декабря, 2017 Автор Жалоба Поделиться Опубликовано 8 декабря, 2017 Это не про товар, а про категорию.У категории же путь всегда одинаковый, правильно?Да, правильно, можно и так реализовать, но тогда надо будет писать костыли для смарти на проверку активных категорий (когда добавляется класс active). В моём случае я проверяю по функции in_array(категория, массив категорий урла) class="{if $c->url|in_array:$rewrite->uri}selected{/if}" а вот как в вашем случае будет, это надо подумать, но в целом можно и так задачу решить, тут уж кто как хочет. Цитата Ссылка на сообщение Поделиться на другие сайты
ased79 Опубликовано 17 марта, 2018 Жалоба Поделиться Опубликовано 17 марта, 2018 Интересно и чем же все закончилось? Цитата Ссылка на сообщение Поделиться на другие сайты
n1c Опубликовано 23 июля, 2020 Жалоба Поделиться Опубликовано 23 июля, 2020 Отличное решениенужно еще сделать в фильтрации и сортировке с:http://simpla-url-rewrite.webtask.pro/catalog/mobilnye-telefony?4=Android+2.3на:http://simpla-url-rewrite.webtask.pro/catalog/mobilnye-telefony/Android_2.3 Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 23 июля, 2020 Жалоба Поделиться Опубликовано 23 июля, 2020 Отличное решение нужно еще сделать в фильтрации и сортировке с: http://simpla-url-rewrite.webtask.pro/catalog/mobilnye-telefony?4=Android+2.3 на: http://simpla-url-rewrite.webtask.pro/catalog/mobilnye-telefony/Android_2.3Могу предложить платное решение потому как тут простой маленькой инструкцией не обойтись, нужно вносить огромное количество изменений в движке и БД. Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.