Всё заработало, спасибо за помощь.
Ага, вижу. Ну и славно, трам-пам-пам.
Вам теперь надо бы доработать ЧПУ для
http://ваш-сайт/gall...php?album_id=12например
Спасибо, гляну. Мысль "обрабатывать и старые ссылки тоже" по любому интересная, правильная и не сложно реализуемая.
---------- Сообщение объединено ----------
jasiuk - (строго ИМХО) выкиньте нахрен модуль "облако тэгов". Он, несомненно, красив, но совершенно бессмысленен и жрет ресурс. Никто не пользуется этим модулем кроме Вас
.
---------- Сообщение объединено ----------
Еще чуть позже. Пытался по сайту понять, в каком городе Вы находитесь. У меня дети увлекаются аквариумом. Понять не смог.
Очевидно, что если Вы в Киеве или Вашингтоне, то не интересны как продавец, а вот если в СПб (как я подозреваю), то вполне себе интересны
.
Но на сайте только ICQ-контакт.
---------- Сообщение объединено ----------
Похоже, простой способ с запуском install_cpu.php работает весьма не на всех хостингах.
Поэтому вот пошаговая "ручная" инструкция по установке модуля. Дана для дефолтовой инсталляции ShopCMS.
собственно, сам cpu.php:
# ver.1.03
require_once "core/config/connect.inc.php";
define('CATEGORY_PATTERN','/\\/?category_(?[0-9]+)((_offset_(?[0-9]+))|(?_show_all))?\\.html/');
define('PRODUCT_PATTERN' ,'/\\/?product_(?[0-9]+)\\.html/');
define('PAGE_PATTERN' ,'/\\/?page_(?[0-9]+)\\.html/');
define('NEWS_PATTERN' ,'/\\/?show_news_(?[0-9]+)\\.html/');
mysql_connect(DB_HOST,DB_USER,DB_PASS);
mysql_select_db(DB_NAME);
replace_from_cpu();
ob_start();
require_once 'index_old.php';
while (ob_get_level() > 1)
ob_end_flush();
$content = ob_get_contents();
ob_end_clean();
echo replace_to_cpu($content);
function replace_from_cpu()
{
if($row = mysql_fetch_assoc(mysql_query("SELECT cpu_from from ".DB_PRFX."cpu_table where cpu_to='".$_GET['cpu']."'")))
switch(substr($row['cpu_from'],0,strpos($row['cpu_from'],"_")))
{
case "category":
preg_match(CATEGORY_PATTERN,$row['cpu_from'],$matches);
$_GET['categoryID'] = $matches['category'];
if (intval($matches['offset'])>0)
$_GET['offset'] = $matches['offset'];
elseif ($matches['showall'])
$_GET['show_all']=true;
break;
case "product":
preg_match(PRODUCT_PATTERN,$row['cpu_from'],$matches);
$_GET['productID'] = $matches['product'];
break;
case "page":
preg_match(PAGE_PATTERN,$row['cpu_from'],$matches);
$_GET['show_aux_page'] = $matches['page'];
break;
case "show":
preg_match(NEWS_PATTERN,$row['cpu_from'],$matches);
$_GET['fullnews'] = $matches['news'];
break;
}
}
function replace_to_cpu($content)
{
function category_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT name from ".DB_PRFX."categories where categoryID=".$matches['category']."")))
{
$to="/".translit($row['name']);
if (intval($matches['offset'])>0)
$to.="/skip".$matches['offset'];
elseif ($matches['showall'])
$to.="/all";
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}
function products_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT name from ".DB_PRFX."products where productID=".$matches['product']."")))
{
$to="/".translit($row['name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}
function page_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT aux_page_name from ".DB_PRFX."aux_pages where aux_page_ID=".$matches['page']."")))
{
$to="/".translit($row['aux_page_name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}
function news_replacer($matches)
{
if ($row = mysql_fetch_assoc(mysql_query("SELECT title from ".DB_PRFX."news_table where NID=".$matches['news']."")))
{
$to="/".translit($row['title']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$matches[0]', cpu_to='$to'");
return $to;
}
else return $matches[0];
}
$content = preg_replace_callback(CATEGORY_PATTERN,"category_replacer",$content);
$content = preg_replace_callback(PRODUCT_PATTERN,"products_replacer",$content);
$content = preg_replace_callback(PAGE_PATTERN,"page_replacer",$content);
$content = preg_replace_callback(NEWS_PATTERN,"news_replacer",$content);
$replace = array(
"'data/" => "'/data/",
'"data/' => '"/data/',
"='index.php" => "='/index.php",
'="index.php' => '="/index.php',
'="admin.php?' => '="/admin.php?',
'"price.html' => '"/price.html',
'"cart.html' => '"/cart.html',
'"feedback.html' => '"/feedback.html'
);
return strtr($content,$replace);
}
function translit($str)
{
$tr = array(
"А"=>"a","Б"=>"b","В"=>"v","Г"=>"g","Д"=>"d","Е"=>"e","Ж"=>"j","З"=>"z","И"=>"i","Й"=>"y","К"=>"k","Л"=>"l","М"=>"m","Н"=>"n",
"О"=>"o","П"=>"p","Р"=>"r","С"=>"s","Т"=>"t","У"=>"u","Ф"=>"f","Х"=>"h","Ц"=>"ts","Ч"=>"ch","Ш"=>"sh","Щ"=>"sch","Ъ"=>"","Ы"=>"yi","Ь"=>"",
"Э"=>"e","Ю"=>"yu","Я"=>"ya","а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ж"=>"j","з"=>"z","и"=>"i","й"=>"y","к"=>"k","л"=>"l",
"м"=>"m","н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"u","ф"=>"f","х"=>"h","ц"=>"ts","ч"=>"ch","ш"=>"sh","щ"=>"sch","ъ"=>"y",
"ы"=>"yi","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"," "=> "_","."=> "",","=> "","/"=> "_","’"=> "","°"=> "","+"=> "_");
return strtr($str,$tr);
}
?>
1. Cделайте так, чтобы в корне сайта ваш старый файл index.php стал называться index_old.php.
Обычно достаточно его просто переименовать, но вовсе не всегда это просто.
2. Переименуйте cpu.php в index.php и залейте в корень сайта.
3. Задайте новому index.php те же права/владельца/группу что у index_old.php и остальных файлов в корне.
Это не всегда надо, но всегда полезно.
4. Замените содержимое .htaccess следующим:
Options +FollowSymlinks -Indexes -MultiViews
DirectoryIndex index.php
ErrorDocument 404 /404.html
php_value session.use_trans_sid 0
php_value session.use_cookies 1
php_value session.use_only_cookies 1
php_value session.auto_start 0
php_value magic_quotes_gpc 0
php_value register_globals 0
php_value display_errors 1
php_value magic_quotes_runtime 0
php_value allow_url_fopen 1
php_value output_buffering 0
php_value error_reporting E_ALL
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^news\.html$ index.php?news=yes [L]
RewriteRule ^feedback\.html$ index.php?feedback=yes [L]
RewriteRule ^price\.html$ index.php?show_price=yes [L]
RewriteRule ^cart\.html$ index.php?shopping_cart=yes [L]
RewriteRule ^wide_search\.html$ index.php?search_with_change_category_ability=yes [L]
RewriteRule ^compare\.html$ index.php?comparison_products=yes [L]
RewriteRule ^(.*)$ index.php?cpu=/$1 [L,QSA]
5. зайдите в mysql, подключитесь к Вашей базе (use youbase) и выполните команду
CREATE TABLE xxxx_cpu_table (cpu_from VARCHAR(255), cpu_to VARCHAR(255), UNIQUE KEY cpu_from (cpu_from),UNIQUE KEY cpu_to (cpu_to)) ENGINE=MYISAM;
MYISAM - на вкус и цвет.
хххх_ надо заменить Вашим префиксом.
Найти его можно в core/config/connect.inc.php:
define('DB_PRFX', 'abcd_'); // database prefix
Вот abcd_ и есть Ваш префикс.
6. в админке отключить "Потоковое сжатие (gzip)"
7. вроде, все. Но я мог ошибиться или чего-то не дописать. Исправления приветствуются. Пока в шапку выкладывать это не буду.