a13x Posted December 6, 2017 Author Report Share Posted December 6, 2017 (edited) 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) Edited December 6, 2017 by a13x Quote Link to post Share on other sites
yr4ik Posted December 6, 2017 Report Share Posted December 6, 2017 Вообщем вы не поняли к чему я вел... Ладно. Уберите хотя бы фатал ерор с ресайза. Там явно нет переменной $this Quote Link to post Share on other sites
a13x Posted December 6, 2017 Author Report Share Posted December 6, 2017 (edited) Вообщем вы не поняли к чему я вел... Ладно. Уберите хотя бы фатал ерор с ресайза. Там явно нет переменной $this Убрал. 1. В файле URewrite.php найти case "files": и внизу убрать слово exit();2. В файле resize/resize.php сделать так $filename = $simpla->rewrite->arguments["file"]; $token = $simpla->rewrite->arguments["token"]; Edited December 6, 2017 by a13x Quote Link to post Share on other sites
Пастухов Posted December 7, 2017 Report Share Posted December 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, то это куда проще можно было бы сделать... А в демо можете дать доступ к админке, чтоб проверить возможности некоторых ошибок? Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 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 файл всё обрабатывает и обработчик урлов не работает. Quote Link to post Share on other sites
Kosjak76 Posted December 7, 2017 Report Share Posted December 7, 2017 Ну нечего делать человеку - пусть фигней страдает... Не мешайте))Вбил себе в голову, что так будет лучше - это проблемы его и его врача.catalog/bytovaya-tehnika/pylesosy/pylesosy/pylesosy/pylesos-dyson-dc32-animalproОфигительная ссылка! Я просто ору...Очень удобно для пользователей сайта. Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 (edited) Ну нечего делать человеку - пусть фигней страдает... Не мешайте))Вбил себе в голову, что так будет лучше - это проблемы его и его врача.Дружище, если я тебя чем то обидел, то извини, не хотел. Если я забрал часть твоего дохода от продаж твоего модуля, то я тоже не хотел, будь проще. p.s. Только ты почему то сам сделал этот же модуль и продаёшь его, а мне вдруг врач нужен Попахивает двойными стандартами Edited December 7, 2017 by a13x Quote Link to post Share on other sites
Kosjak76 Posted December 7, 2017 Report Share Posted December 7, 2017 Да мне пофиг))И если ты ВНИМАТЕЛЬНО прочитаешь первое сообщение той темы - ты поймешь, почему твое решение НЕ ПОДОЙДЕТ. Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 Да мне пофиг))И если ты ВНИМАТЕЛЬНО прочитаешь первое сообщение той темы - ты поймешь, почему твое решение НЕ ПОДОЙДЕТ.Я аргументировал все свои ответы, а если вы чего-то не знаете, то это уже ваши проблемы. В СИМПЛА изначально идёт проверка на дубли, я лишь её переделал поскольку бренды и категории теперь не смешаны как это было раньше. А теперь вопрос, ПОЧЕМУ МОЁ РЕШЕНИЕ НЕ ПОДОЙДЁТ? получится аргументированно ответить или нет?Систему битрикс по вашему наверно тоже дураки разрабатывали Quote Link to post Share on other sites
Kosjak76 Posted December 7, 2017 Report Share Posted December 7, 2017 P.S: до сих пор использую древнюю версию 1.4, так как в своё время кучу всего переписал в движке, а в новых версиях этих вещей до сих пор нет, и мне лень заново писать. Поэтому прошу не предлагать переходить на новую версию.Достаточно аргументировано? Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 Достаточно аргументировано? вполне. надеюсь у него не Windows XP. я почему то думал что речь идёт про сам модуль. Quote Link to post Share on other sites
Kosjak76 Posted December 7, 2017 Report Share Posted December 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Я так делал в одном проекте. Это намного удобнее и не будет такого. Quote Link to post Share on other sites
Kosjak76 Posted December 7, 2017 Report Share Posted December 7, 2017 Или даже без поля в базе.Собирать этот урл у категории в том месте, где собирается pathНо мне с хранением в базе было удобнее.Просто попробуй - и удивишься, насколько все станет проще и удобней. и уйдет половина дублей. Quote Link to post Share on other sites
Пастухов Posted December 7, 2017 Report Share Posted December 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 - он подходит как для товара, так и для категории.Подозреваю, тут в любом случае будет ошибка - одна из страниц - товара или категории - будет недоступна в принципе. Вот спеца по СЕО обрадуете... Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 (edited) Помоему никто не будет создавать товар с таким же названием как у категории. Вы слишком категоричны + всегда для этого можно будет ввести префикс идентификации товара.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 с кучей правил обработки, я лишь привык к тому, чтобы оптимизировать работу себе и заказчику. Edited December 7, 2017 by a13x Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 (edited) 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(); } Edited December 7, 2017 by a13x Quote Link to post Share on other sites
Пастухов Posted December 7, 2017 Report Share Posted December 7, 2017 (edited) 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 - у Вас вообще не планировался... Edited December 7, 2017 by Пастухов Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 (edited) 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 со всеми вложениями, а этого по умолчанию нет Edited December 7, 2017 by a13x Quote Link to post Share on other sites
Пастухов Posted December 7, 2017 Report Share Posted December 7, 2017 О чём сейчас речь? Какие одинаковые урлы?Я не хочу спорить, я лишь основываюсь на более чем 10-ти летнем опыте работы в этой сфере. Мне в принципе всё равно кто что должен и нет, я привык делать так, как будет удобно в дальнейшем мне и заказчику, так и делаю. По работе мне приходится продумывать ВСЕ мелочи, включая и такие, и в 99% случаев ни один нормальный человек не будет называть товар ПЫЛЕСОСЫ.Если уж такое случится и мне человек пожалуется на это, я допилю в админке проверку, либо объясню ему как правильно называть товары. "объясню ему как правильно называть товары" - Вот это и есть халтура программистская. А то он и так не знает, как называть - несколько символов на клавиатуре набрать.Будете объяснять, что надо новую категорию называть так, чтоб не совпало ни с одним из тысяч товаров?Ему эти тысячи помнить надо? Или на бумаге список написать и сверять каждый раз, потому что программист не может простенький функционал по проверке написать? 1. Так что в итоге? Вам не нравится в хлебных крошках бренд. Вы не догадались, что это убирается элементарно в шаблоне, в вместо простенького действия проводите сложную доработку, которая для хлебных крошек ничего нового не добавляет - там и раньше был путь. Выходит, никакого добавочного удобства для посетителя доработка не несет. Quote Link to post Share on other sites
a13x Posted December 7, 2017 Author Report Share Posted December 7, 2017 (edited) Я уже писал что делает этот модуль и для чего он. Не вижу смысла повторяться. Если вас всё устраивает, значит он вам не нужен. 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} на род. категорию вобще не надо проверять, в шаблоне по умолчанию по крайней мере. Edited December 7, 2017 by a13x Quote Link to post Share on other sites
Kosjak76 Posted December 7, 2017 Report Share Posted December 7, 2017 По поводу скрина, то не ко всему применима постоянная ссылка. в данном варианте вы привязали её к 1 категории, а у товара их может быть много.Это не про товар, а про категорию.У категории же путь всегда одинаковый, правильно? Quote Link to post Share on other sites
a13x Posted December 8, 2017 Author Report Share Posted December 8, 2017 Это не про товар, а про категорию.У категории же путь всегда одинаковый, правильно?Да, правильно, можно и так реализовать, но тогда надо будет писать костыли для смарти на проверку активных категорий (когда добавляется класс active). В моём случае я проверяю по функции in_array(категория, массив категорий урла) class="{if $c->url|in_array:$rewrite->uri}selected{/if}" а вот как в вашем случае будет, это надо подумать, но в целом можно и так задачу решить, тут уж кто как хочет. Quote Link to post Share on other sites
ased79 Posted March 17, 2018 Report Share Posted March 17, 2018 Интересно и чем же все закончилось? Quote Link to post Share on other sites
n1c Posted July 23, 2020 Report Share Posted July 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 Quote Link to post Share on other sites
Noxter Posted July 23, 2020 Report Share Posted July 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Могу предложить платное решение потому как тут простой маленькой инструкцией не обойтись, нужно вносить огромное количество изменений в движке и БД. 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.