a13x Опубликовано 26 ноября, 2017 Жалоба Поделиться Опубликовано 26 ноября, 2017 (изменено) Подскажите пожалуйста, может кто уже реализовывал правильное отображение ссылок в ИМ на SIMPLA?Под правильным я имею ввиду сохранение полной структуры путей, например:http://test.ru/catalog/car/track/volvo/xc-90/вместо того что по умолчанию используется в SIMPLAhttp://test.ru/catalog/car/http://test.ru/catalog/track/http://test.ru/catalog/volvo/http://test.ru/products/xc-90/Может я зря всё это затеял и уже давным давно есть готовое решение, просто я его не нашёл? p.s. конечно для апача всё же будет задействован файл .haccess, но всего с парой строк, где будет указан обработчик урлов. Изменено 26 ноября, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 26 ноября, 2017 Жалоба Поделиться Опубликовано 26 ноября, 2017 http://forum.simplacms.ru/topic/7565-%D1%80%D0%BE%D1%83%D1%82%D0%B8%D0%BD%D0%B3-%D0%BD%D0%B0-%D1%81%D0%B8%D0%BC%D0%BF%D0%BB%D0%B5/ Цитата Ссылка на сообщение Поделиться на другие сайты
shooroop Опубликовано 26 ноября, 2017 Жалоба Поделиться Опубликовано 26 ноября, 2017 http://simpla-tuning.com/adresatsiya-v-svobodnoj-forme Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 26 ноября, 2017 Жалоба Поделиться Опубликовано 26 ноября, 2017 Я недавно делал новый вариант роутинга.Пишите в скайп kosjak1976 - покажу пример. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 27 ноября, 2017 Автор Жалоба Поделиться Опубликовано 27 ноября, 2017 (изменено) http://forum.simplacms.ru/topic/7565-%D1%80%D0%BE%D1%83%D1%82%D0%B8%D0%BD%D0%B3-%D0%BD%D0%B0-%D1%81%D0%B8%D0%BC%D0%BF%D0%BB%D0%B5/Немного не то, надо переписывать сам движок и изменять получение параметров через $this->request->getСам сначала пошёл по этому пути но понял что это не по феншую, в итоге немного переписал класс REQUEST и добавил свой.С генерацией изображений проблем нет, с категориями тоже. Сейчас допиливаю остальное. http://simpla-tuning.com/adresatsiya-v-svobodnoj-formeТут надо просто разрешить спецсимволы в урле, что вобщем то тоже не то да и глупо это в плане SEO оптимизации. Я недавно делал новый вариант роутинга.Пишите в скайп kosjak1976 - покажу пример.Спасибо, написал. p.s. единственная засада только со smarty которая в шаблоне использует $smarty.get Изменено 27 ноября, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 28 ноября, 2017 Автор Жалоба Поделиться Опубликовано 28 ноября, 2017 (изменено) Вобщем решил сам писать. Покупать у Kosjak76 желания нет. Поэтому если кому-то будет актуально - пишите.скайп webtask.pro или на почту lelik.177@yandex.ru+ в дальнейшем хочу дописать модуль страницы, чтобы у страниц была вложенность (как у категорий через parent_id). Изменено 28 ноября, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 28 ноября, 2017 Жалоба Поделиться Опубликовано 28 ноября, 2017 Вобщем решил сам писать. Покупать у Kosjak76 желания нет. Поэтому если кому-то будет актуально - пишите. скайп webtask.pro или на почту lelik.177@yandex.ruВопрос: зачем кому-то писать тебе? Лично у меня к Косте есть доверие в отличии от тебя и если бы пришлось выбирать я бы выбрал Костю, впрочем как и всегда Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 28 ноября, 2017 Автор Жалоба Поделиться Опубликовано 28 ноября, 2017 Вопрос: зачем кому-то писать тебе? Лично у меня к Косте есть доверие в отличии от тебя и если бы пришлось выбирать я бы выбрал Костю, впрочем как и всегда Я не просил мне писать, я лишь хотел узнать может человек поделиться или нет. Из разговора я понял что он его продаёт отдельно. Вот и всё. Цитата Ссылка на сообщение Поделиться на другие сайты
Noxter Опубликовано 28 ноября, 2017 Жалоба Поделиться Опубликовано 28 ноября, 2017 Я не просил мне писать, я лишь хотел узнать может человек поделиться или нет. Из разговора я понял что он его продаёт отдельно. Вот и всё.А вы выходит не продаёте? Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 28 ноября, 2017 Автор Жалоба Поделиться Опубликовано 28 ноября, 2017 А вы выходит не продаёте?я пока не дописал. продавать не собирался, кому надо с тем поделюсь. у меня хватает работы за которую я получаю деньги. Цитата Ссылка на сообщение Поделиться на другие сайты
miltonmors Опубликовано 29 ноября, 2017 Жалоба Поделиться Опубликовано 29 ноября, 2017 я пока не дописал. продавать не собирался, кому надо с тем поделюсь. у меня хватает работы за которую я получаю деньги. А открыто на форуме не поделитесь? Как раз кому надо, те и будут использовать, чтоб каждый желающий индивидуально Вас не дергал. Заодно народ и потестирует... Цитата Ссылка на сообщение Поделиться на другие сайты
Gruzin Опубликовано 29 ноября, 2017 Жалоба Поделиться Опубликовано 29 ноября, 2017 А открыто на форуме не поделитесь? Как раз кому надо, те и будут использовать, чтоб каждый желающий индивидуально Вас не дергал. Заодно народ и потестирует...Отличное предложение. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 29 ноября, 2017 Автор Жалоба Поделиться Опубликовано 29 ноября, 2017 А открыто на форуме не поделитесь? Как раз кому надо, те и будут использовать, чтоб каждый желающий индивидуально Вас не дергал. Заодно народ и потестирует...Да без проблем. Думаю через недельку выложу. Описание будет дано под последнюю версию симплы т.к. у меня шаблон сильно модифицирован поэтому сложно понять где оригинал, а где доработки, поэтому разверну оригинал и там всё сделаю. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 5 декабря, 2017 Автор Жалоба Поделиться Опубликовано 5 декабря, 2017 Сделал основную часть.Ссылка на я.диск https://yadi.sk/d/Me7I94uX3QLnXzТестовая версия http://simpla-url-rewrite.webtask.pro/С главной страницы вход в товары не работает, шаблон не менял, думаю кому надо сами смогут поменять.Итак, что осталось от .htaccess AddDefaultCharset UTF-8 Options -Indexes DirectoryIndex index.php RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*)$ /index.php?rewrite=$1 [L] Какие изменения затронуты:Контролеры:1. Добавить класс URewrite.php (файл в архиве, в папке api)2. В api/Simpla.php в конец списка классов добавить 'rewrite' => 'URewrite'3. Создать 2 страницы для каталога и брендов и прописать их ID в файд api/URewrite.php4. Зайти по адресу сайта и в конце урла дописать "?add_active_features=1", система добавит в каталог активные фильтры. Файл IndexView.phpНайти $module = $this->request->get('module', 'string'); $module = preg_replace("/[^A-Za-z0-9]+/", "", $module); и после дописать //передаем в шаблон объект со ссылками, нужная вещь! $this->design->assign('rewrite', $this->rewrite); Далее надо изменить класс REQUEST (api/Request.php) найти строки: public function get($name, $type = null) { $val = null;и после добавить: /* *************************************** */ //query = "/catalog/cars/truck/" $query = $this->rewrite->query; //arg = "?minprice=12&maxprice=15&status=1" $arg = $this->rewrite->arguments; //ищем get параметр по query string $val = (isset($query[$name]) ? $query[$name] : ""); //если не нашлось то.. if(empty($val)){ //ищем get параметр в массиве arg $val = (isset($arg[$name]) ? $arg[$name] : ""); //если опять нет, то проверяем на модуль if(empty($val)) if($name == "module") $val = $this->rewrite->module; } /* *************************************** */ Файл index.php заменить $_GET['page_url'] = '404'; $_GET['module'] = 'PageView'; на $view->rewrite->module = "PageView"; $view->rewrite->arguments["page_url"] = "404"; Файл resize/resize.php заменить: require_once('../api/Simpla.php'); $filename = $_GET['file']; $token = $_GET['token']; на require_once('api/Simpla.php'); $filename = $this->arguments["file"]; $token = $this->arguments["token"]; Открыть файл view/ProductsView.php и перед function fetch(){ добавить public $breadcrumbs = array(); Далее, добавить 2 новых метода, в конец файла перед последней "}" public function brand_check(){ //запрос не в бренд if($this->rewrite->uri[0] != $this->rewrite->brands->url) return false; $brand_url = $this->rewrite->lasturi; $brand = $this->brands->get_brand((string)$brand_url); if(empty($brand)){ if($brand_url == $this->rewrite->brands->url){ $this->breadcrumbs[] = [$this->rewrite->brands->name, $this->rewrite->brands->url]; $brand = $this->rewrite->brands; $brand->current_url = $this->rewrite->brands->url; } else return false; } else{ $this->breadcrumbs[] = [$this->rewrite->brands->name, $this->rewrite->brands->url]; $this->breadcrumbs[] = [$brand->name, $this->rewrite->brands->url."/".$brand->url]; $brand->current_url = $this->rewrite->brands->url."/".$brand->url; $this->design->assign('category', $brand); } $this->design->assign('brand', $brand); return $brand; } public function category_check(){ $category_url = $this->rewrite->uri; //берем последний аргумент из урла $lastcat = $this->rewrite->lasturi; //делаем запрос в базу $category = $this->categories->get_category((string) $lastcat); //запрос не в каталог if($this->rewrite->uri[0] != $this->rewrite->catalog->url) return false; //поставляем сразу хлебную крошку $this->breadcrumbs[] = [$this->rewrite->catalog->name, $this->rewrite->catalog->url]; if(empty($category) || (!$category->visible && empty($_SESSION['admin']))){ if($lastcat == $this->rewrite->catalog->url){ $category = $this->rewrite->catalog; $category->current_url = $this->rewrite->catalog->url; } else return false; } else{ //проверяем что все предыдущие категории существуют и принадлежат свои родителям unset($category_url[0]); //т.к. не является категорий - catalog foreach($category_url AS $key => $query_url){ $pathid = $key - 1; $url[] = $category->path[$pathid]->url; $this->breadcrumbs[] = [$category->path[$pathid]->name, $this->rewrite->catalog->url."/".implode("/", $url)]; if($query_url != $category->path[$pathid]->url) return false; } $category->current_url = $this->rewrite->catalog->url."/".implode("/", $url); } $this->design->assign('category', $category); return $category; } Далее найти строки $filter = array(); $filter['visible'] = 1; и после добавить $category = $this->brand_check(); if(empty($category)){ //если его нет, то запрашиваем категории $category = $this->category_check(); //если и их нет, то вовзращаем if(empty($category)) return false; else if(isset($category->children)) $filter['category_id'] = $category->children; } else $filter['brand_id'][] = $category->id; Проверки: if (!empty($brand_url)) { ............ } и if (!empty($category_url)) { ............ } можно удалить.В конце метода fetch(), перед $this->body = $this->design->fetch('products.tpl'); добавить: //вывод правильной ссылки на товар (правильного урла) //под вопросом !!!, возможно не нужна уже не помню. $this->design->assign('current_url', $category->current_url); //крошки $this->design->assign('breadcrumbs', $this->breadcrumbs); Далее, в этом же методе fetch() найти переменную $category->children и поставить перед ней @ чтобы получилось @$category->childrenДанная переменная встречается 2 раза, ну или можете сами дописать проверку на её существование. Дальше наодим файл view/productView.php а там находим: if(empty($product) || (!$product->visible && empty($_SESSION['admin']))) return false; и после добавляем /********** хлебные крошки и проверка на категории / бренд ***********/ $uri = $this->rewrite->uri; //передаем в шаблон массив со ссылками (URL строкой разбитой по /) для активации выбранных меню $this->design->assign('rewrite', $this->rewrite); $num = count($uri) - 2; //берем ПРЕДпоследний аргумент из урла - категорию или бренд $br_cat = $uri[$num]; if($uri[0] == $this->rewrite->brands->url){ //для брендов $this->breadcrumbs[] = [$this->rewrite->brands->name, $this->rewrite->brands->url]; $brand = $this->brands->get_brand((string) $br_cat); if(empty($brand)) return false; $this->breadcrumbs[] = [$brand->name, $this->rewrite->brands->url."/".$brand->url]; } else{ //для категорий $category = $this->categories->get_category((string) $br_cat); $this->breadcrumbs[] = [$this->rewrite->catalog->name, $this->rewrite->catalog->url]; if(isset($category->path)){ 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; } } } $this->breadcrumbs[] = [$product->name, ""]; //добавляем хлебную крошку к товару $this->design->assign('breadcrumbs', $this->breadcrumbs); /********** хлебные крошки и проверка на категории / бренд ***********/ и также перед функцией fetch() добавляем public $breadcrumbs = array();На этом с контролером всё.Далее шаблон.файл design/html/products.tpl, этот код: {* Канонический адрес страницы *} {if $category && $brand} {$canonical="/catalog/{$category->url}/{$brand->url}" scope=parent} {elseif $category} {$canonical="/catalog/{$category->url}" scope=parent} {elseif $brand} {$canonical="/brands/{$brand->url}" scope=parent} {elseif $keyword} {$canonical="/products?keyword={$keyword|escape}" scope=parent} {else} {$canonical="/products" scope=parent} {/if} меняем на: {if $brand} {$canonical="/{$rewrite->brands->url}/{$brand->url}" scope=parent} {elseif $keyword} {$canonical="/{$rewrite->catalog->url}?keyword={$keyword|escape}" scope=parent} {else} {$canonical="/{$rewrite->catalog->url}" scope=parent} {/if} Далее это: {* Фильтр по брендам *} {if $category->brands} <div id="brands"> <a href="catalog/{$category->url}" {if !$brand->id}class="selected"{/if}>Все бренды</a> {foreach $brand->brands as $b} <a data-brand="{$b->id}" href="{if $rewrite->uri[1]}{$rewrite->prevurl}{else}{$rewrite->url}{/if}/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a> {/foreach} {foreach $category->brands as $b} {if $b->image} <a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a> {else} <a data-brand="{$b->id}" href="catalog/{$category->url}/{$b->url}" {if $b->id == $brand->id}class="selected"{/if}>{$b->name|escape}</a> {/if} {/foreach} </div> {/if} меняем на {* Фильтр по брендам *} {if $category->brands} <div id="brands"> <a href="{$rewrite->catalog->url}" {if !$brand->id}class="selected"{/if}>Все бренды</a> {foreach $category->brands as $b} <a style="{if $b->url|in_array:$rewrite->uri}font-weight:bold;{/if}" data-brand="{$b->id}" href="{$rewrite->brands->url}/{$b->url}"><img src="{$config->brands_images_dir}{$b->image}" alt="{$b->name|escape}"></a> {/foreach} </div> {/if} Ищем <div id="path"> <a href="/">Главная</a> {if $category} {foreach $category->path as $cat} → <a href="catalog/{$cat->url}">{$cat->name|escape}</a> {/foreach} {if $brand} → <a href="catalog/{$cat->url}/{$brand->url}">{$brand->name|escape}</a> {/if} {elseif $brand} → <a href="brands/{$brand->url}">{$brand->name|escape}</a> {elseif $keyword} → Поиск {/if} </div> и заменяем на <div id="path"> <a href="/">Главная</a> {if $breadcrumbs} {assign "numbrc" $breadcrumbs|count-1} {foreach from=$breadcrumbs key=i item=arr} {if $numbrc == $i} → {$arr[0]|escape}{else} → <a href="/{$arr[1]}">{$arr[0]|escape}</a>{/if} {/foreach} {/if} </div> Ищем <!-- Название товара --> <h3 class="{if $product->featured}featured{/if}"><a data-product="{$product->id}" href="products/{$product->url}">{$product->name|escape}</a></h3> и меняем на <!-- Название товара --> <h3 class="{if $product->featured}featured{/if}"><a data-product="{$product->id}" href="{$rewrite->url}/{$product->url}{$rewrite->prefix}{$product->id}">{$product->name|escape}</a></h3> Тоже самое и для картинки <a href="products/{$product->url}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a> на <a href="{$rewrite->url}/{$product->url}{$rewrite->prefix}{$product->id}"><img src="{$product->image->filename|resize:200:200}" alt="{$product->name|escape}"/></a> Находим файл index.tpl а в нем <div id="catalog_menu"> {* Рекурсивная функция вывода дерева категорий *} {function name=categories_tree} {if $categories} <ul> {foreach $categories as $c} {* Показываем только видимые категории *} {if $c->visible} <li> {if $c->image}<img src="{$config->categories_images_dir}{$c->image}" alt="{$c->name|escape}">{/if} <a {if $category->id == $c->id}class="selected"{/if} href="catalog/{$c->url}" data-category="{$c->id}">{$c->name|escape}</a> {categories_tree categories=$c->subcategories} </li> {/if} {/foreach} </ul> {/if} {/function} {categories_tree categories=$categories} </div> меняем на <div id="catalog_menu"> {include file='categories.tpl' categories=$categories} </div> Дальше создаём собственно этот файл categories.tpl, который мы инклудили {if $categories} {if !isset($url)}{assign url $rewrite->catalog->url}{/if} {if isset($prevurl)}{assign var="url" value="$url/$prevurl"}{/if} {if $categories[0]->level == 1} <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> {else} <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} {/if} И последнее, находим файл product.tpl и меняем {$canonical="/products/{$product->url}" scope=parent} на {$canurl = "{$rewrite->catalog->url}/{$rewrite->lasturi}"} {if $rewrite->url != $canurl} {$canonical="/{$canurl}" scope=parent} {/if} Далее заменяем хлебные крошки по примеру файла products.tpl Вобщем на этом всё. Если будут вопросы - пишите.Да, небольшая инструкция, везде в коде где вы будете получать переменные $_GET, надо будет перепрописать их, например:$menu = $_GET["menu"];по новому будет выглядеть$menu = $this->rewrite->arguments["menu"];Либо получать их через системный клас request->get Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 5 декабря, 2017 Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) пока все не смотрел, но есть проблема. любой товар доступен по любой ссылке вида /catalog/что-то там/товар_какоетоади например можно такcatalog/wegwegwg/pylesos-dyson-dc23-pink-id24catalog/bytovaya-tehnika/pylesos-dyson-dc23-pink-id232322235catalog/bytovaya-tehnika/pylesosy/pylesos-dyson-dc23-pink-id999999catalog/herherher/pylesos-dyson-dc23-pink-id6666666 а можно еще куча вариантов. всеровно выдаст этот товар. айди в конце ничего не играет, как и часть между catalog/ и названием товара. Изменено 5 декабря, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 5 декабря, 2017 Автор Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) В файле view/productView.php сделать так, помечено комментарием /********** хлебные крошки и проверка на категории / бренд ***********/ $uri = $this->rewrite->uri; //передаем в шаблон массив со ссылками (URL строкой разбитой по /) для активации выбранных меню $this->design->assign('rewrite', $this->rewrite); $num = count($uri) - 2; //берем ПРЕДпоследний аргумент из урла - категорию или бренд $br_cat = $uri[$num]; if($uri[0] == $this->rewrite->brands->url){ //для брендов $this->breadcrumbs[] = [$this->rewrite->brands->name, $this->rewrite->brands->url]; $brand = $this->brands->get_brand((string) $br_cat); if(empty($brand)) return false; $this->breadcrumbs[] = [$brand->name, $this->rewrite->brands->url."/".$brand->url]; } else{ //для категорий $category = $this->categories->get_category((string) $br_cat); /****************************/ if(empty($category)) return false; /****************************/ $this->breadcrumbs[] = [$this->rewrite->catalog->name, $this->rewrite->catalog->url]; if(isset($category->path)){ 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; } } } } $this->breadcrumbs[] = [$product->name, ""]; //добавляем хлебную крошку к товару $this->design->assign('breadcrumbs', $this->breadcrumbs); /********** хлебные крошки и проверка на категории / бренд ***********/ Изменено 5 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 5 декабря, 2017 Автор Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) пока все не смотрел, но есть проблема. любой товар доступен по любой ссылке вида /catalog/что-то там/товар_какоетоади например можно такcatalog/wegwegwg/pylesos-dyson-dc23-pink-id24catalog/bytovaya-tehnika/pylesos-dyson-dc23-pink-id232322235catalog/bytovaya-tehnika/pylesosy/pylesos-dyson-dc23-pink-id999999catalog/herherher/pylesos-dyson-dc23-pink-id6666666 а можно еще куча вариантов. всеровно выдаст этот товар. айди в конце ничего не играет, как и часть между catalog/ и названием товара.Этот id идентификатор того что ты заходишь в товар, а не в категорию. Впринципе можно сделать чтобы товар искался по этому ID, а не по ссылке как сейчас. Я оставил именно ссылку т.к. она изначально была в системе.Нет, можно конечно сделать и без ID, тогда надо на несуществующей категории проверять товар. Может в дальнейшем так и сделаю, а пока оставлю так Изменено 5 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
Kosjak76 Опубликовано 5 декабря, 2017 Жалоба Поделиться Опубликовано 5 декабря, 2017 Зачем вот это все? не понимаю...Наплодить кучу дублей, а потом бороться с ними через каноникал? Какой-то бред.Не проще сразу при сохранении товара сформировать полный урл видаhttp://routing.simpla.pp.ua/mobilnye-telefony/samsung-s5570-galaxy-mini-2И потом прямо по нему проверять?А генерить РАЗНЫЕ ссылки и крошки для ОДНОГО товара - это глупость и не имеет смысла. Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 5 декабря, 2017 Автор Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) Все эти дубли отдаются через rel canonical, а надо это для визуализации и наглядности.Все дубли проверяются и в canonical отдаётся ссылка вида: /catalog/item-name-id5 Не проще сразу при сохранении товара сформировать полный урл видаНет, не проще, потому что товар может принадлежать к разным категориям и должен вызываться одинаково из разных категорий, а по вашей ссылке, товар будет привязан только к одной. А генерить РАЗНЫЕ ссылки и крошки для ОДНОГО товара - это глупость и не имеет смысла. видимо вы не очень хорошо знакомы с сео раскруткой Изменено 5 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
mishanya Опубликовано 5 декабря, 2017 Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) Этот id идентификатор того что ты заходишь в товар, а не в категорию. Впринципе можно сделать чтобы товар искался по этому ID, а не по ссылке как сейчас. Я оставил именно ссылку т.к. она изначально была в системе. да, только он не проверяется никак. там можно ставить любой айди и будет норм выдавать ссылку.можно проверять сначала является конечная ссылка товаром или нет без айди. а потом уже остальное. Изменено 5 декабря, 2017 пользователем mishanya Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 5 декабря, 2017 Автор Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) да, только он не проверяется никак. там можно ставить любой айди и будет норм выдавать ссылку.можно проверять сначала является конечная ссылка товаром или нет без айди. а потом уже остальное.Согласен, надо будет переписать эту часть и отказаться от ID вобще, либо проверять по этому ID Изменено 5 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 5 декабря, 2017 Жалоба Поделиться Опубликовано 5 декабря, 2017 как то вроде многовато правок по движку... А почему не сделать разбор реврайта прямо в классе request? Или же в его конструкторе вызвать иницализацию api rewrite с дальнейшей подменой глобальных _POST и _GET. Тогда, я думаю, не придется столько править файлов. что касается ссылки catalog.Можно сделать ссылку вида /catalog/категория1/категория2/product_продукт3далее при разборе если в последней части урл начинается с "product_" - значит это товар и просто проверяем цепочку url категорий Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 5 декабря, 2017 Автор Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) далее при разборе если в последней части урл начинается с "product_" - значит это товарВсё правильно, я этот вариант тоже начал рассматривать, не знаю зачем я с ID заморочился. А почему не сделать разбор реврайта прямо в классе request? Или же в егоконструкторе вызвать иницализацию api rewrite с дальнейшей подменойглобальных _POST и _GET. Тогда, я думаю, не придется столько правитьфайлов.Везде где есть запросы не через класс request - придётся править. Я пока нашёл это в двух местах - index.php и resize.php. Во всех остальных местах всё через класс request обрабатывается.Слишком объёмный конструктор получится + много данных надо передавать в смарти, поэтому мне было проще сделать новый класс.По поводу объёмных модификаций, то иначе не получается. Хотел как можно меньше затрагивать файлы, но это минимум который получился. На моём шаблоне правок гораздо больше.Если получится оптимизировать - напишите своё решение, буду рад взглянуть. Изменено 5 декабря, 2017 пользователем a13x Цитата Ссылка на сообщение Поделиться на другие сайты
yr4ik Опубликовано 5 декабря, 2017 Жалоба Поделиться Опубликовано 5 декабря, 2017 (изменено) ну делайте разбор в своем api. Что мешает ? 1) делаете в __construct класса Request первой строкой $this->rewrite->init(); 2) в методе rewrite->init делаете весь разбор с записью данных в _GET.К примеру товар, по результату, что бы массив получался вида:$_GET['module'] = 'ProductView';$_GET['product_url'] = 'url_product/'; и тд. Тогда в дальнейшем зачем вся эта куча правок? PS: только блок на админку нужно сделать Изменено 5 декабря, 2017 пользователем yr4ik Цитата Ссылка на сообщение Поделиться на другие сайты
a13x Опубликовано 6 декабря, 2017 Автор Жалоба Поделиться Опубликовано 6 декабря, 2017 ну делайте разбор в своем api. Что мешает ? 1) делаете в __construct класса Request первой строкой $this->rewrite->init(); 2) в методе rewrite->init делаете весь разбор с записью данных в _GET.К примеру товар, по результату, что бы массив получался вида:$_GET['module'] = 'ProductView';$_GET['product_url'] = 'url_product/'; и тд. Тогда в дальнейшем зачем вся эта куча правок? PS: только блок на админку нужно сделатьКуча правок не относится к получению гет запросов, всё что связано с гет правится в классе request и в дальнейшем убираются из файлов переменные, которые определяются через этот GET (всего в 2-ух файлах). 50% остального кода это шаблонный вывод и ещё процентов 45 связан с проверками категорий, товаров и прочего. Поэтому что-то ещё лучше оптимизировать врядли получится, но если вы сможете, то напишите Цитата Ссылка на сообщение Поделиться на другие сайты
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.