ЧПУ для ShopCMS
#41
Отправлено 15 October 2011 - 05:38 PM
#42
Отправлено 15 October 2011 - 06:15 PM
ShopCMS 3.1Alex57 во вложении чпу для какой версии скрипта?
#43
Отправлено 17 October 2011 - 01:46 PM
Модуль ЧПУ действительно очень хороший, за исключением одной неприятной ситуации-не работает рейтинг не подробном описании.
Описание проблемы: При попытке поставить товару рейтинг т.е. указать на определенную звездочку кликнув по ней - ничего не происходит.
Возможные методы решения:
Я как дилетант в Smarty и PHP вряд ли могу что-либо посоветовать, но имеются некие соображения.
В скрипте без ЧПУ
ссылка на товар выглядит так:
http://site.ru/product_1.html
ссылка на товар после указания рейтинга:
http://site.ru/index.php?productID=1&vote=yes&mark=3в данном случае указывали три звезды
В скрипте с ЧПУ:
ссылка на товар выглядит так:
http://site.ru/catalog/muzhskie-aromaty/armand-basi-leau-pour-homme.html
ссылка на товар после указания рейтинга:
http://site.ru/catalog/muzhskie-aromaty/armand-basi-leau-pour-homme.html
т.е. совершенно идентичны
таким образом может быть нужно по аналогии С
rewrite ^/cart\.html$ /index.php?shopping_cart=yes last;
сделать какой-нибудь редирект. Или все же нужно править код модуля?
Господа программисты прошу совета. Рейтинг оч нужная весчь.
#44
Отправлено 17 October 2011 - 02:56 PM
---------- Сообщение объединено ----------
Отладка правильной работы рейтинга для тех, кто установил модуль ЧПУ
Сначала открываем шаблон: product_detailed.tpl.html
Находим строчку в шаблоне:
<form name="VotingForm" action='index.php' method="GET" id="VotingForm" class="print">
Меняем на:
<form name="VotingForm" action="{$smarty.server.REQUEST_URI}" method="POST" id="VotingForm" class="print">
Дальше открываем файл product_detailed.php из директории core/includes/
Находим код:
if (isset($_GET["vote"]) && isset($productID)) //vote for a product
{
if (!isset($_SESSION["vote_completed"][ $productID ]) && isset($_GET["mark"]) && strlen($_GET["mark"])>0)
{
$mark = (int) $_GET["mark"];
if ($mark>0 && $mark<=5)
{
db_query("UPDATE ".PRODUCTS_TABLE." SET customers_rating=(customers_rating*customer_votes+'".$mark."')/(customer_votes+1), customer_votes=customer_votes+1 WHERE productID=".$productID);
}
}
$_SESSION["vote_completed"][ $productID ] = 1;
}
Меняем на этот:
if (isset($_POST["vote"]) && isset($productID)) //vote for a product
{
if (!isset($_SESSION["vote_completed"][ $productID ]) && isset($_POST["mark"]) && strlen($_POST["mark"])>0)
{
$mark = (int) $_POST["mark"];
if ($mark>0 && $mark<=5)
{
db_query("UPDATE ".PRODUCTS_TABLE." SET customers_rating=(customers_rating*customer_votes+'".$mark."')/(customer_votes+1), customer_votes=customer_votes+1 WHERE productID=".$productID);
}
}
$_SESSION["vote_completed"][ $productID ] = 1;
}
Обновляем файлы на сервере, сбрасываем кеш и открываем подробное описание продукта и проверяем.
На одной сессии можно менять на одном товаре рейтинг один раз.
Для проверки стараемся, чтобы увидеть выбирать звездочку например 1-2 при рейтинге 5, тогда сразу заметно будет изменение рейтинга при тестировании.
Проверено и работает нормально, как надо.
#45
Отправлено 17 October 2011 - 04:59 PM
Модуль работает без ошибок, но:
вместо путей типа: http://ваш_сайт/catalog/ваша_категория/
вижу такое: http://ваш_сайт/catalog/ваша_категория - то есть без последнего "/"
- соответственно по аналогии и подкатегории
а также есть еще один момент:
пути типа: http://ваш_сайт/ваша_категория/ваша_подкатегория/ - исходя из древовидной структуры каталога (можно и глубже)
теперь отображаются так: http://ваш_сайт/catalog/ваша_подкатегория - то есть "ваша_категория" уже отсутсвует в пути
соответсвенно ссылка на товар внутри дерева категорий отображается так:
http://ваш_сайт/ваша_подподкатегория/ваш_товар.html - то есть все верхние категории пропускаются
Вопрос 1: можно ли приставить "/" в конец путей на подкаталоги?
Вопрос 2: можно ли модифицировать скрипт чтобы ссылки отражали всю глубину дерева каталога?
#46
Отправлено 18 October 2011 - 03:50 PM
- В файле url_rewriter.php (корень каталога ShopCMS) внести исправления:
найти строчку:
$url = FU_CATALOG_ROOT.'/'.$obj['uri'];
и поменять ее на:
$url = FU_CATALOG_ROOT.'/'.$obj['uri'].'/';
также найти строчку:
$newUrl .= FU_CATALOG_ROOT;
$newUrl .= '/'.urlencode($itemURI);
и поменять на:
$newUrl .= FU_CATALOG_ROOT;
$newUrl .= '/'.urlencode($itemURI).'/'; - В файле .htaccess внести изменения:
найти строчку:
RewriteRule ^catalog/([^/]*)$ index.php?uri=$1&uriFor=category [L]
поменять ее на:
RewriteRule ^catalog/([^/]*)/$ index.php?uri=$1&uriFor=category [L]
- Почистить кэш (прямо в настройках браузера + очистка кэша в Администрировании)
В результате пути будут выглядеть так: http://ваш_сайт/catalog/ваш_каталог/
Вместо старого: http://ваш_сайт/catalog/ваш_каталог
#47
Отправлено 02 November 2011 - 05:15 PM
#48
Отправлено 02 November 2011 - 08:03 PM
На локальном(см пост#22). На хостинге сие чудо пока не решаюсь ставить, пока не обкатаю.
Я поставил на сервер, все работает. Правда я этот модуль правил, вносил функциональные изменения по формированию нужного вида мне ссылок. А так тут нет ничего такого что может вызывать опасения. На локальнике если будет работать - то на сервере тоже.
#49
Отправлено 08 November 2011 - 03:57 PM
у меня shop cms 3.0 RC2, ставить как понимаю ее?
просто в мануале второго архива описанная установка на версию 3.1.1 и выше....
#50
Отправлено 20 November 2011 - 12:30 PM
После установки модуля для версии 3.1 наблюдаются ссылки вида /catalog/название-категории/название-товара.html
В описании я так понимаю вместо "catalog" можно название категории чтобы было, где надо править подскажите плиз!
Спасибо!
#51
Отправлено 23 November 2011 - 09:52 PM
#52
Отправлено 24 November 2011 - 09:03 AM
И ещё один момент, в файле экспорта для яндекс-маркета ссылки на товары остаются прежними, то есть вида product_*** . Как сделать чтобы для маркета экспорт был с Чпу адресами? Знаю, что надо копать модуль в includes/admin/sub/modules_yandex.php там по моему формируются ссылки для маркета.Только не знаю что и где править. Может подскажите люди добрые...?
#53
Отправлено 24 November 2011 - 09:40 PM
- попробуйте убрать галку Псевдостатические ссылки в Админке...когда в какой-либо категории пытаюсь отобразить все товары категории(show_all.html) или просто перейти на другую страничку товаров этой же категории, то выскакивает ошибка 404 Not Found ... Где надо править???
#54
Отправлено 25 November 2011 - 08:58 AM
И ещё такой момент возможно это из -за того что я ставил на под домен основного сайта.То есть под домен это копия основного сайта.... ??
Ещё очень важный момент при переходе ссылка имеет вид domen.ru/catalog/название-категории_offset_12 Откуда вылез каталог не пойму...
Попробую перезалить файлы заново.......
Перезалил файлы , но не помогло (((((
#55
Отправлено 26 November 2011 - 03:21 PM
Например:
http://www.123.com/index.php?categoryID=3&sort=name&direction=ASC_offset_6- переключаюсь на вторую страницу но остаюсь на той же, т.е. переход не осуществляется
http://www.123.com/index.php?categoryID=3&sort=name&direction=ASC_offset_6_offset_12- нажал на страницу 3 - переход не осущестляется и добавил _offset_12, т.е. где-то переменная не очищается как мне сказали.
Кто поправил эту ошибку помогите мне ее поправить пожалуйста.
#56
Отправлено 26 November 2011 - 04:44 PM
Пишу и прошу помощи если возможно вам по поводу модуля ЧПУ, а именно:
1. Обновление ваше чтобы убрать /catalog/ - работает не корректно, т.е. не переключается навигация ошибка 404. А при наведении на ссылку допустим второй страницы отображается адрес с /catalog/. Поэтому и возникает ошибка. Подскажите что и где править если возможно.
2. Еще ошибку заметил (это в дефолтном ЧПУ с /catalog/). При сортировке "Сортировать по: наименованию (возр/убыв), цене (возр/убыв), рейтингу (возр/убыв)" тоже не переключается навигация.
Например:
http://www.test.arom....&direction=ASC - нормально все
http://www.test.arom....n=ASC_offset_6 - переключаюсь на вторую страницу но остаюсь на той же, т.е. переход не осуществляется
http://www.test.arom...set_6_offset_12 - нажал на страницу 3 - переход не осущестляется и добавил _offset_12, т.е. где-то переменная не очищается как мне сказали.
Вы поправили эту ошибку, если да помогите мне ее поправить пожалуйста.
Вот очередные проблемы этого модуля вылазят, что именно и подтверждает, что разработчики модуля только жаждут денег и забыли, что непродуманные вещи в программе вылазят бочком и сказываются на их репутации.
1. В данном первом случае автрором модуля не была решена проблема с функцией навигации. Я с этой проблемой столкнулся еще в мае и решил её. В следующем посте. Я напишу как её исправить.
2. Автором модуля также не решалась проблема переделки функций отвечающих за вывод навигации с ЧПУ при сортировке. Эта проблема не решена мною, в виду нехватки времени. Я советую пока, кто пользуется выводом сортировки в категории и поиске, просто выключить пока в Общих настройках, поскольку в ближайшее время я не смогу заняться решением этой проблемы.
Если кто появится и решит помочь, буду помогать советом, но не так часто как хотелось бы, и все из-за времени. Поскольку мне надо запустить бонусный модуль, который мы купили у разработчиков, но он не работает нормально и приходится срочно его полностью переделывать, чтобы запустить в проект.
#57
Отправлено 26 November 2011 - 05:09 PM
Смотрите тут: Глюки с пагинацией (этот пост и следующий)Кто поправил эту ошибку помогите мне ее поправить пожалуйста
- это исправляет переход по страницам после сортировки (ссылка в вашем примере явно после сортировки &sort=name).
#58
Отправлено 26 November 2011 - 06:44 PM
Мои изменения ниже поправляют ситуацию с ответом на первый вопрос и если у людей не переписаны все старые ссылки, а присутствуют оба вида category_...html и /категория/ то навигация корректно работает.Спасибо за информацию по навигации с сортировкой
И при старых ссылках show_all.html и новых /категория/show_all все также работает нормально.
Возьмите из папки cpu_category_off.rar поста micehide
в url_rewriter.php
case 'category':
// Offset
if(preg_match('|(.+)offset=(\d+)$|', $uri, $matches)) {
$uri = $matches[1];
$offset = $matches[2];
} elseif(preg_match('|(.+)show_all=yes$|', $uri, $matches)) {
$uri = $matches[1];
$offset = 1;
$showAll = 'yes';
} else
$offset = 1;
Замените на:
case 'category':
// Offset
if(preg_match('|(.+)/offset_(\d+)$|', $uri, $matches)) {
$uri = $matches[1];
$offset = $matches[2];
//echo $offset;
} elseif(preg_match('|(.+)/show_all$|', $uri, $matches)) {
$uri = $matches[1];
$offset = 1;
$showAll = 'yes';
} else
$offset = 1;
и этот код:
} elseif (isset($_GET['categoryID'])) { // Category
//$newUrl .= FU_CATALOG_ROOT;
$newUrl .= urlencode($itemURI);
Заменить на:
} elseif (isset($_GET['categoryID'])) { // Category
//$newUrl .= FU_CATALOG_ROOT;
$newUrl .= urlencode($itemURI).'/';
в файле .htaccess из этого же архива cpu_category_off.rar
участок кода
# BEGIN Human friendly URL's
RewriteRule ^news/([^/]*)$ index.php?uri=$1&uriFor=news [L]
RewriteRule ^pages/([^/]*)$ index.php?uri=$1&uriFor=pages [L]
RewriteRule ^([^/]*)/$ index.php?uri=$1&uriFor=category [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !([^/]*)/$
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?uri=$3&uriFor=product [L]
RewriteRule ^([^/]*)/([^/]*)$ index.php?uri=$2&uriFor=product [L]
# END Human friendly URL's
замените на код, но помните все записи которые были до установки модуля ЧПУ в файле .htaccess должны быть, а эти изменения дополнение для ЧПУ:
# BEGIN Human friendly URL's
RewriteRule ^news/([^/]*)$ index.php?uri=$1&uriFor=news [L]
RewriteRule ^pages/([^/]*)$ index.php?uri=$1&uriFor=pages [L]
RewriteRule ^([^/]*)/$ index.php?uri=$1&uriFor=category [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !([^/]*)/$
RewriteRule ^([^/]*)$ $1/ [L,R=301]
RewriteRule ^(([^/]*)/offset_([0-9]+))$ index.php?uri=$1&uriFor=category&offset=$2 [L]
RewriteRule ^([^/]*)/show_all$ index.php?uri=$1&uriFor=category&show_all=yes [L]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)$ index.php?uri=$3&uriFor=product [L]
RewriteRule ^([^/]*)/([^/]*)$ index.php?uri=$2&uriFor=product [L]
# END Human friendly URL's
Далее
в папке includes находим файл category.php с измениями модуля ЧПУ
Находим код
if (CONF_MOD_REWRITE && $url == "index.php?categoryID=".$categoryID) {
// BEGIN User Friendly URLs
global $uri;
$url = $uri ? FU_CATALOG_ROOT.'/'.$uri : "category_".$categoryID;
// END User Friendly URLs
}
return $url;
}
И меняем его на
if (CONF_MOD_REWRITE && $url == "index.php?categoryID=".$categoryID) {
// BEGIN User Friendly URLs
global $uri;
$url = $uri ? '/'.$uri : "category_".$categoryID;
// END User Friendly URLs
}
return $url;
}
В этом же файле находим код
// BEGIN User Friendly URLs
//if($urlfarse == "category_".$categoryID) $urlflag = 1; else $urlflag = 0;
$urlflag = isset($_GET['advanced_search_in_category']) && $_GET['advanced_search_in_category'] ? 0 : 1;
// END User Friendly URLs
меняем на:
// BEGIN User Friendly URLs
$urlflag = isset($_GET['uri']) ? 0 : 1;
// END User Friendly URLs
затем из папки functions открываем файл functions.php (измененного модулем ЧПУ)
находим код:
// BEGIN Friendly URLs
function ShowNavigatormd($a, $offset, $q, $path, &$out)
{
//shows navigator [prev] 1 2 3 4 … [next]
//$a - count of elements in the array, which is being navigated
//$offset - current offset in array (showing elements [$offset ... $offset+$q])
//$q - quantity of items per page
//$path - link to the page (f.e: "index.php?categoryID=1&")
if ($a > $q) //if all elements couldn't be placed on the page
{
//[prev]
if ($offset > 0) $out .= "<a href=\"".$path."offset_".($offset - $q)."\"><< ".STRING_PREVIOUS.
"</a> ";
//digital links
$k = $offset / $q;
//not more than 4 links to the left
$min = $k - 5;
if ($min < 0)
{
$min = 0;
}
else
{
if ($min >= 1)
{ //link on the 1st page
$out .= "<a href=\"".$path."offset_0\">1</a> ";
if ($min != 1)
{
$out .= "... ";
}
;
}
}
for ($i = $min; $i < $k; $i++)
{
$m = $i * $q + $q;
if ($m > $a) $m = $a;
$out .= "<a href=\"".$path."offset_".($i * $q)."\">".($i + 1)."</a> ";
}
//# of current page
if (strcmp($offset, "show_all"))
{
$min = $offset + $q;
if ($min > $a) $min = $a;
$out .= "<b>".($k + 1)."</b> ";
}
else
{
$min = $q;
if ($min > $a) $min = $a;
$out .= "<a href=\"".$path."offset_0\">1</a> ";
}
//not more than 5 links to the right
$min = $k + 6;
if ($min > $a / $q)
{
$min = $a / $q;
}
;
for ($i = $k + 1; $i < $min; $i++)
{
$m = $i * $q + $q;
if ($m > $a) $m = $a;
$out .= "<a href=\"".$path."offset_".($i * $q)."\">".($i + 1)."</a> ";
}
if (ceil($min * $q) < $a)
{ //the last link
if ($min * $q < $a - $q) $out .= "... ";
$out .= "<a href=\"".$path."offset_".($a - $a % $q)."\">".(floor($a / $q) + 1)."</a> ";
}
//[next]
if (strcmp($offset, "show_all"))
if ($offset < $a - $q) $out .= "<a href=\"".$path."offset_".($offset + $q)."\">".
STRING_NEXT." >></a> ";
//[show all]
if (strcmp($offset, "show_all")) $out .= "| <noindex><a href=\"".$path."show_all.html\" rel=\"nofollow\">".
STRING_SHOWALL."</a></noindex>";
else $out .= "| <b>".STRING_SHOWALL."</b>";
}
}
// END Friendly URLs
function GetNavigatorHtmlmd($url, $countRowOnPage = CONF_PRODUCTS_PER_PAGE, $callBackFunction, $callBackParam,
&$tableContent, &$offset, &$count, $urlflag)
{
if (isset($_GET["offset"])) $offset = (int)$_GET["offset"];
else $offset = 0;
$offset -= $offset % $countRowOnPage; //CONF_PRODUCTS_PER_PAGE;
if ($offset < 0) $offset = 0;
$count = 0;
if (!isset($_GET["show_all"])) //show 'CONF_PRODUCTS_PER_PAGE' products on this page
{
$tableContent = $callBackFunction($callBackParam, $count, array("offset" => $offset, "CountRowOnPage" =>
$countRowOnPage));
}
else //show all products
{
$tableContent = $callBackFunction($callBackParam, $count, null);
$offset = "show_all";
}
if ($urlflag) ShowNavigatormd($count, $offset, $countRowOnPage, html_spchars($url."_"), $out);
else ShowNavigator($count, $offset, $countRowOnPage, html_spchars($url."&"), $out);
return $out;
}
меняем его на:
// BEGIN Friendly URLs
function ShowNavigatormd($a, $offset, $q, $path, &$out)
{
//shows navigator [prev] 1 2 3 4 … [next]
//$a - count of elements in the array, which is being navigated
//$offset - current offset in array (showing elements [$offset ... $offset+$q])
//$q - quantity of items per page
//$path - link to the page (f.e: "index.php?categoryID=1&")
if ($a > $q) //if all elements couldn't be placed on the page
{
//[prev]
if ($offset > 0) $out .= "<a href=\"".$path."offset_".($offset - $q)."\"><< ".STRING_PREVIOUS.
"</a> ";
//digital links
$k = $offset / $q;
//not more than 4 links to the left
$min = $k - 5;
if ($min < 0)
{
$min = 0;
}
else
{
if ($min >= 1)
{ //link on the 1st page
$out .= "<a href=\"".$path."offset_0\">1</a> ";
if ($min != 1)
{
$out .= "... ";
}
;
}
}
for ($i = $min; $i < $k; $i++)
{
$m = $i * $q + $q;
if ($m > $a) $m = $a;
$out .= "<a href=\"".$path."offset_".($i * $q)."\">".($i + 1)."</a> ";
}
//# of current page
if (strcmp($offset, "show_all"))
{
$min = $offset + $q;
if ($min > $a) $min = $a;
$out .= "<b>".($k + 1)."</b> ";
}
else
{
$min = $q;
if ($min > $a) $min = $a;
$out .= "<a href=\"".$path."offset_0\">1</a> ";
}
//not more than 5 links to the right
$min = $k + 6;
if ($min > $a / $q)
{
$min = $a / $q;
}
;
for ($i = $k + 1; $i < $min; $i++)
{
$m = $i * $q + $q;
if ($m > $a) $m = $a;
$out .= "<a href=\"".$path."offset_".($i * $q)."\">".($i + 1)."</a> ";
}
if (ceil($min * $q) < $a)
{ //the last link
if ($min * $q < $a - $q) $out .= "... ";
$out .= "<a href=\"".$path."offset_".($a - $a % $q)."\">".(floor($a / $q) + 1)."</a> ";
}
//[next]
if (strcmp($offset, "show_all"))
if ($offset < $a - $q) $out .= "<a href=\"".$path."offset_".($offset + $q)."\">".
STRING_NEXT." >></a> ";
//[show all]
if (strcmp($offset, "show_all")) $out .= "| <noindex><a href=\"".$path."show_all\" rel=\"nofollow\">".
STRING_SHOWALL."</a></noindex>";
else $out .= "| <font class='active'>".STRING_SHOWALL2."</font>";
}
if ($a > $q)
$out .=" ".$a;
else false;
}
// END Friendly URLs
function ShowNavigatormdOld($a, $offset, $q, $path, &$out)
{
//shows navigator [prev] 1 2 3 4 … [next]
//$a - count of elements in the array, which is being navigated
//$offset - current offset in array (showing elements [$offset ... $offset+$q])
//$q - quantity of items per page
//$path - link to the page (f.e: "index.php?categoryID=1&")
if ($a > $q) //if all elements couldn't be placed on the page
{
//[prev]
if ($offset > 0) $out .= "<a href=\"".$path."offset_".($offset - $q).".html\"><< ".STRING_PREVIOUS.
"</a> ";
//digital links
$k = $offset / $q;
//not more than 4 links to the left
$min = $k - 5;
if ($min < 0)
{
$min = 0;
}
else
{
if ($min >= 1)
{ //link on the 1st page
$out .= "<a href=\"".$path."offset_0.html\">1</a> ";
if ($min != 1)
{
$out .= "... ";
}
;
}
}
for ($i = $min; $i < $k; $i++)
{
$m = $i * $q + $q;
if ($m > $a) $m = $a;
$out .= "<a href=\"".$path."offset_".($i * $q).".html\">".($i + 1)."</a> ";
}
//# of current page
if (strcmp($offset, "show_all"))
{
$min = $offset + $q;
if ($min > $a) $min = $a;
$out .= "<b>".($k + 1)."</b> ";
}
else
{
$min = $q;
if ($min > $a) $min = $a;
$out .= "<a href=\"".$path."offset_0.html\">1</a> ";
}
//not more than 5 links to the right
$min = $k + 6;
if ($min > $a / $q)
{
$min = $a / $q;
}
;
for ($i = $k + 1; $i < $min; $i++)
{
$m = $i * $q + $q;
if ($m > $a) $m = $a;
$out .= "<a href=\"".$path."offset_".($i * $q).".html\">".($i + 1)."</a> ";
}
if (ceil($min * $q) < $a)
{ //the last link
if ($min * $q < $a - $q) $out .= "... ";
$out .= "<a href=\"".$path."offset_".($a - $a % $q).".html\">".(floor($a / $q) + 1)."</a> ";
}
//[next]
if (strcmp($offset, "show_all"))
if ($offset < $a - $q) $out .= "<a href=\"".$path."offset_".($offset + $q).".html\">".
STRING_NEXT." >></a> ";
//[show all]
if (strcmp($offset, "show_all")) $out .= "| <noindex><a href=\"".$path."show_all.html\" rel=\"nofollow\">".
STRING_SHOWALL."</a></noindex>";
else $out .= "| <font class='active'>".STRING_SHOWALL2."</font>";
}
if ($a > $q)
$out .=" ".$a;
else false;
}
function GetNavigatorHtmlmd($url, $countRowOnPage = CONF_PRODUCTS_PER_PAGE, $callBackFunction, $callBackParam,
&$tableContent, &$offset, &$count, $urlflag)
{
if (isset($_GET["offset"])) $offset = (int)$_GET["offset"];
else $offset = 0;
$offset -= $offset % $countRowOnPage; //CONF_PRODUCTS_PER_PAGE;
if ($offset < 0) $offset = 0;
$count = 0;
if (!isset($_GET["show_all"])) //show 'CONF_PRODUCTS_PER_PAGE' products on this page
{
$tableContent = $callBackFunction($callBackParam, $count, array("offset" => $offset, "CountRowOnPage" =>
$countRowOnPage));
}
else //show all products
{
$tableContent = $callBackFunction($callBackParam, $count, null);
$offset = "show_all";
}
if ($urlflag == 0) { ShowNavigatormd($count, $offset, $countRowOnPage, html_spchars($url."/"), $out);}
elseif ($urlflag == 1) {ShowNavigatormdOld($count, $offset, $countRowOnPage, html_spchars($url."_"), $out);}
else { ShowNavigator($count, $offset, $countRowOnPage, html_spchars($url."&"), $out);}
return $out;
}
Здесь была сделана функция со старым навигатором у кого параллельно работают ссылки и старого типа и нового.
Теперь они будут корректно работать в обоих случаях.
URL Категории теперь будет с offset http://site.ru/категория/offset_Цифра - на постраничной навигации
и http://site.ru/категория/show_all на показе всех продуктов категории.
В .htaccess
Добавлена конструкция 301 переадресации:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !([^/]*)/$
RewriteRule ^([^/]*)$ $1/ [L,R=301]
чтобы
категории при наборе в адресной строке без слэша на конце переключались на адрес со слешем - это свойство очень
ценно для поисковых систем. Если этого не делать, то будут показываться категории со слешем и без, а это плохо,
это двойной контент, что очень отрицательно для seo.
Не забываем перед изменениями сохранять в другом месте копии файлов. После изменения загружаем на сервер и сбрасываем кеш. И затем проверям работу.
Да еще можно добавить в russian.php
define('STRING_SHOWALL2', 'показаны все');
#59
Отправлено 26 November 2011 - 07:52 PM
Вот очередные проблемы этого модуля вылазят, что именно и подтверждает, что разработчики модуля только жаждут денег и забыли, что непродуманные вещи в программе вылазят бочком и сказываются на их репутации.
Вцелом, конечно, ситуация с изначальным модулем ЧПУ плачевна, но я считаю что жалеть нужно прежде всего о том, что о ЧПУ не подумали сами разработчики ShopCMS, что было бы логичнее...
#60
Отправлено 26 November 2011 - 08:17 PM
Вцелом, конечно, ситуация с изначальным модулем ЧПУ плачевна, но я считаю что жалеть нужно прежде всего о том, что о ЧПУ не подумали сами разработчики ShopCMS, что было бы логичнее...
Думаю разработчики магазина об этом подумали (о ЧПУ и др. не совсем же дауны о ЧПУ не думать) и для своих клиентов и за деньги у них есть отдельная модификация и с ЧПУ и во всеми наворотами. А эта сделана для всех. Совковый подход и тут существует и я это наблюдаю повсеместно.
Ситуация с версиями для всех и своих много где существует.