Перейти к содержимому


Простейший модуль ЧПУ


  • Вы не можете ответить в тему
Сообщений в теме: 415

#41 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 February 2012 - 10:59 AM

доступ к ftp выслал в личку, если Вам так не трудно посмотрите, пожалуйста, а может что и получится

Посмотрел. Извините, а что там надо исправить, если у Вас сайт не работает вообще?
Даже с родным index.php и родным .htaccess.
Даже файлик info.php с содержимым

Если Вы у себя в строке браузера пишете ваш-сайт/info.php - что Вы видите?
Я вижу 500-ю ошибку, а должен видеть примерно как тут
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#42 invent

    Пользователь

  • Пользователи
  • PipPip
  • 26 сообщений
Репутация: 0
Начинающий

Отправлено 11 February 2012 - 11:29 AM

Было бы здорово, если бы Вы подтверждали свои слова исходником. Или хотя бы примером каким. Я не говорю ни да, ни нет, но не помню такого в liteseotools. Хотя восстанавливал его до нормального текста и, естественно, довольно глубоко изучал логику работы. Но не всю, да, только требуемое для получения обычного нешифрованного PHP без ioncube.


Например:
[HIDE="1"]Заказ товаров для дома и дачи в интернет магазине SVRmart.ru Зеленоград. это новая ссылка с чпу
Заказ товаров для дома и дачи в интернет магазине SVRmart.ru Зеленоград. это старая ссылка[/HIDE]

[MOD="micehide"]Внешние ссылки под хайд, читайте правила[/MOD]
  • 0

#43 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 11 February 2012 - 06:56 PM

Всё заработало, спасибо за помощь.

Ага, вижу. Ну и славно, трам-пам-пам.
Вам теперь надо бы доработать ЧПУ для 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. вроде, все. Но я мог ошибиться или чего-то не дописать. Исправления приветствуются. Пока в шапку выкладывать это не буду.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#44 jasiuk

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

Отправлено 12 February 2012 - 02:38 AM

Подскажите, пожалуйста, у меня на сайте есть модуль XML Sitemap ShopCMS, как его заставить записывать в .xml ссылки ЧПУ?
  • 0

#45 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 12 February 2012 - 10:03 PM

Подскажите, пожалуйста, у меня на сайте есть модуль XML Sitemap ShopCMS, как его заставить записывать в .xml ссылки ЧПУ?

Никак. Ждать, когда я напишу довесок к этому модулю ЧПУ для создания sitemap.xml. Это не сложно, но!

Вопрос к знатокам SEO. Нужен совет, как правильнее.

На текущий момент база ЧПУ (SQL-табличка) пополняется по мере обращения. Изначально она пустая. Но как только происходит обращение к странице, где (для простоты) присутствуют слова category_ххх или product_yyy, так для этих category и product "на лету" создаются в базе записи соответствий в виде тех самых ЧПУ, которые и выдаются на монитор клиенту.

При таком раскладе sitemap.xml можно создавать трех видов.

1. Исходя из уже обработанных category и product, имеющихся в табличке. Т.е. если никто на сайт не заходил дальше стартовой страницы, то sitemap.xml будет выглядеть как буквально несколько строчек из ЧПУ, соответствующих названиям категорий верхнего уровня. Дальше-то никто не ходил и в базе ничего нет. sitemap.xml при этом будет расти по мере интереса к сайту.

2. Единоразово сгенерировать соответствующий полному каталогу товаров и категорий. Зная алгоритм преобразования товаров и категорий в ЧПУ это не сложно. Но получится интересная фишка - табличка ЧПУ растет по мере обращения к товарам, а не появляется сразу вся, а sitemap.xml генерится сразу по всем товарам. Т.е. будут товары, которые по прямым ссылкам из sitemap.xml недоступны, пока к ним не было обращения штатным образом через браузер от корня сайта и не создалась запись в SQL-табличке.

3. Создаем одноразово внешней утилитой полную табличку ЧПУ, а из нее полный sitemap.xml. Минус в том, что при добавлении одной единицы нового товара (или десятка новых товаров и новой категории, что ближе к жизни) надо как-то заново добавлять записи в в ЧПУ-базу. Либо перезапускать "внешнюю утилиту", либо как-то изворачиваться хитрее.

Ве три варианта не сложно реализуемы. Интересен именно момент "а правильно-то как?" :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#46 micehide

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 359 сообщений
Репутация: 124
Мастер

Отправлено 12 February 2012 - 10:46 PM

При таком раскладе sitemap.xml можно создавать трех видов.

1. Однозначно, не катит, т.к. sitemap должен содержать наиболее полную информацию о страницах на момент генерации, его основная цель - наискорейшая индексация этих страниц в поиске...

2. Тоже не катит, т.к. такой sitemap будет бесполезен: робот по нему полезет и сразу отсечет нерабочие страницы, а это гораздо хуже чем если бы их вообще не было в sitemap.

3. Да, предполагаю, что лучше всего внести изменения в скрипт генерации sitemap, чтобы он перед генерацией, обращался к твоей утилите, которая наполняла таблицу ЧПУ, всеми имеющимися на данный момент страницами (лучше всего чтобы утилита, конечно, проверяла для каких страниц не сгенерированы ЧПУ и добавляла бы их).
  • 0

#47 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 13 February 2012 - 07:29 PM

3. Да, предполагаю, что лучше всего внести изменения в скрипт генерации sitemap, чтобы он перед генерацией, обращался к твоей утилите, которая наполняла таблицу ЧПУ, всеми имеющимися на данный момент страницами (лучше всего чтобы утилита, конечно, проверяла для каких страниц не сгенерированы ЧПУ и добавляла бы их).

Сохраните этот текст в файл sitemap.php и бросьте его в корень сайта. При запуске (т.е. обращении http:// ваш-сайт/sitemap.php) таблица ЧПУ-ссылок будет сразу заполнена всеми ЧПУ-ссылками, а не постепенно, в процессе серфинга клиентов по сайту, как в исходном модуле. Также будет создан простейший sitemap.xml в корне сайта. После отработки можно файл sitemap.php удалить или спрятать, чтобы его не запускали всякие враги, но вообще-то никакого деструктива это не вызовет кроме лишних трат ресурса. Собственно, вот процесс, а вот результат.

Конструктивная критика и советы "как сделать лучше" приветствуются. Сам понимаю, что надо бы хоть что-то вывести на экран в процессе и по окончании, чтобы не совсем уж белый экран был, но ничего в голову не приходит. Хоть просто сам xml вываливай :).


require_once "core/config/connect.inc.php";

mysql_connect(DB_HOST,DB_USER,DB_PASS) or die(mysql_error());
mysql_select_db(DB_NAME) or die(mysql_error());
if (!mysql_fetch_row(mysql_query("SHOW TABLES LIKE '".DB_PRFX."cpu_table'")))
mysql_query("CREATE TABLE `".DB_PRFX."cpu_table` (
`cpu_from` VARCHAR(255),
`cpu_to` VARCHAR(255),
UNIQUE KEY `cpu_from` (`cpu_from`),
UNIQUE KEY `cpu_to` (`cpu_to`)
) ENGINE=MYISAM") or die(mysql_error());


$data = mysql_query("SELECT categoryID,name from ".DB_PRFX."categories") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
{
$from = "category_".$row['categoryID'].".html";
$to = "/".translit($row['name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$from', cpu_to='$to'");
}

$data = mysql_query("SELECT productID,name from ".DB_PRFX."products where enabled=1") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
{
$from = "product_".$row['productID'].".html";
$to = "/".translit($row['name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$from', cpu_to='$to'");
}

$data = mysql_query("SELECT NID,title from ".DB_PRFX."news_table") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
{
$from = "show_news_".$row['NID'].".html";
$to = "/".translit($row['title']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$from', cpu_to='$to'");
}

$data = mysql_query("SELECT aux_page_ID,aux_page_name from ".DB_PRFX."aux_pages") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
{
$from = "pages_".$row['aux_page_ID'].".html";
$to = "/".translit($row['aux_page_name']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$from', cpu_to='$to'");
}

$handle = fopen('sitemap.xml','w');
fwrite($handle,''."\n");
fwrite($handle,''."\n");
$data = mysql_query("SELECT cpu_to from ".DB_PRFX."cpu_table") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
fwrite($handle,"http://".$_SERVER['SERVER_NAME'].$row['cpu_to']."\n");
fwrite($handle,"
\n");
fclose($handle);
mysql_close() or die(mysql_error());

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);
}

?>


(лучше всего чтобы утилита, конечно, проверяла для каких страниц не сгенерированы ЧПУ и добавляла бы их).

А оно по сути так и просходит при использовании sql-команды replace.

PS. Если в sitemap.xml полезны еще какие-то данные, то не вопрос, добавлю. И таки да, все это можно впендюрить в виде блока в админке, но я пока не очень понимаю, зачем создавать еще один файл и править два других, чтобы получить ровно тот же результат :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#48 jasiuk

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

Отправлено 13 February 2012 - 10:42 PM

Спасибо за sitemap, всё работает, попробовал с модулем статьи, получилось вывести ссылки в sitemap.

$data = mysql_query("SELECT uri,uri from ".DB_PRFX."articles") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
{
$from = "articles_".$row['uri'].".html";
$to = "/stati/".translit($row['uri']);
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$from', cpu_to='$to'");
}


  • 0

#49 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 13 February 2012 - 11:14 PM

[quote]SELECT uri,uri from[quote]
один uri лишний. Хуже не будет, но лишний :).

---------- Сообщение объединено ----------

Обновил инсталлятор. Убрал его, теперь все вручную, но описано. Надеюсь, установка станет проще :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#50 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 February 2012 - 01:23 PM

в liteseotools есть редирект со старых ссылок на новые, как по моему и в другом модуле на этом сайте

Сделал 301-й редирект. Вечером выложу целиком исправленное, желающие могут исправить сами.
В файле index.php после кода:

case "show":
preg_match(NEWS_PATTERN,$row['cpu_from'],$matches);
$_GET['fullnews'] = $matches['news'];
break;
}


добавить код:

elseif ($row = mysql_fetch_assoc(mysql_query("SELECT cpu_to from ".DB_PRFX."cpu_table where cpu_from='".substr($_GET['cpu'],1)."'")))
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: ".$row['cpu_to']);
}



Для баз с большим количество товара, наверное (чтобы не плодить лишних select-ов по всей таблице), будет оптимальнее сначала отсеять по наличию в $_GET('cpu') слов category_, product_, page_, show_news_.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#51 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 February 2012 - 06:21 PM

Вечером выложу целиком исправленное

Выложил. Кроме 301-го редиректа добавил автоматическое выключение "Потокового сжатия (GZIP)" при запуске sitemap.php (теперь не надо лезть в админку при инсталляции), тэг в sitemap.xml, равный времени запуска sitemap.php (ни о чем, но пусть будет) и добавление в xml ссылок для модуля "Статьи", если он установлен (табличка xxxx_articles, поле uri).

PS. Надеюсь, это все и я вернусь к фильтру. Правда, так не бывает :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#52 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 14 February 2012 - 08:37 PM

Надеюсь, это все и я вернусь к фильтру. Правда, так не бывает

Хе-хе... Тут же нашел ошибку в генерации части XML для модуля "Статьи". Слэш забыл. Исправил, перезалил :).

---------- Сообщение объединено ----------

благодаря разработчику модулей

Увы, мне довольно далеко до "разработчика модулей". Это я так язык PHP изучаю, на реальных задачах :).

---------- Сообщение объединено ----------

я вообще методом подбора делал, сам себе даже удивился когда получилось

в общем-то, не особенно и получилось. В Вашем sitemap.xml ссылка выглядит как
shop.domain.comporody_karpa_koi
а нормальная ссылка
shop.domain.com/stati/porody_karpa_koi.html

И - я сразу-то и не заметил! - Вы довольно странно заносите ссылки в sitemap.xml. Сначала Вы их заносите в ЧПУ-таблицу cpu_table, где они совершенно не нужны, ведь у "Статей" и так штатно ЧПУ-ссылки, а затем в общем алгоритме они выводятся в sitemap.xml. Без /stati/ и без html на конце, т.е. не рабочие. Посмотрите, как у меня доделана обновленная версия sitemap.php. Вам оно сходу не подойдет, т.к. в установленных у меня в "Статьях" ЧПУ-шные ссылки без html на конце, но исправить очень легко. Видимо, есть разные версии этого модуля, хотя и одинаковые по имени и структуре таблички (xxxx_articles).

---------- Сообщение объединено ----------

Ан нет, это у меня ошибка, а статьи тоже с html на конце. Видимо, с отЧПУшенными Новостями попутал. Сейчас исправлю и можно пользоваться.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#53 jasiuk

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

Отправлено 14 February 2012 - 11:11 PM

в общем-то, не особенно и получилось. В Вашем sitemap.xml ссылка выглядит как
shop.domain.comporody_karpa_koi
а нормальная ссылка
shop.domain.com/stati/porody_karpa_koi.html

Эти неправильные ссылки в карте сайта почему-то дублировались, в середине карты сайта есть они же в статьях, но в нормальном отображении.

---------- Сообщение объединено ----------

Поставил вчерашний файл sitemap.php со своим дополнением вывода ссылок статьи в карту сайта и вроде отображает сейчас корректно, не дублирует ссылки.

---------- Сообщение объединено ----------

badisoft

Спасибо, что увидели у меня не корректное отображение ссылок, сам то я и не заметил сразу.

---------- Сообщение объединено ----------

сейчас врубился, что не правильно и сейчас отображаются ссылки в карте сайта, в статьях должны выводиться с .html :(

---------- Сообщение объединено ----------

сильно не пинать, вот внёс поправки в код и появилось .html в карте сайта.

$data = mysql_query("SELECT uri,title from ".DB_PRFX."articles") or die(mysql_error());
while ($row = mysql_fetch_assoc($data))
{
$from = "articles_".$row['uri'].".html";
$to = "/stati/".($row['uri'].".html");
mysql_query("REPLACE INTO ".DB_PRFX."cpu_table SET cpu_from='$from', cpu_to='$to'");
}


  • 0

#54 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 15 February 2012 - 12:32 AM

сильно не пинать, вот внёс поправки в код и появилось .html в карте сайта

Повторяю: Вы вносите записи в ЧПУ-таблицу, где ЭТИ пары from-to совершенно не нужны, но которая затем единым алгоритмом выводится в sitemap.xml.
Правильнее вывести в sitemap.xml состоящую только из нужных ссылок ЧПУ-таблицу, а затем, если есть модуль "Статьи" (есть таблица ЧПУ от модуля "Статьи"), то вывести в sitemap.xml и эту таблицу тоже. Вносить какие-то поправки в ЭТОМ месте кода бессмысленно, нужен другой код в другом месте. Скачайте новую версию, он там есть.

Повторы ссылок в sitemap.xml у Вас были именно из-за этих некорректных исправлений. Сначала вы внесли неправильные записи в ЧПУ-таблицу, а затем внесли правильные, но неправильные-то из нее никуда не делись и уже не денутся, механизма выборочного удаления записей из ЧПУ-таблицы в модуле нет. Чnобы исправить эту ситуацию удалите таблицу хххх_cpu_table целиком (что Вы, видимо, уже делали) и запустите новый sitemap.php. Таблица снова создастся и заполнится без ненужных записей от модуля "Статьи", но при этом ссылки из модуля "Статьи" тоже будут добавлены к sitemap.xml
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#55 jasiuk

    Продвинутый пользователь

  • Download User
  • PipPipPip
  • 47 сообщений
Репутация: 0
Начинающий

Отправлено 15 February 2012 - 11:38 AM

Поставил новую версию файла sitemap.php, удалил таблицу хххх_cpu_table целиком, сейчас карту сайта корректно показывает.
  • 0

#56 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 16 February 2012 - 04:11 PM

Добавил в генерацию sitemap.xml тэги , и .
Для товаров lastmod берется из даты создания или модификации (если она есть).
Для новостей из даты публикации новости, для статей из даты публикации статьи.
Для категорий и статических страниц из текущий даты.
выглядит так:



http://cpu.badisoft.ru/glavnaya_kategoriya2012-02-16T17:40:14+04:00daily0.9
http://cpu.badisoft.ru/dreli_shurupovertyi_gaykovertyi2012-02-16T17:40:14+04:00daily0.9
http://cpu.badisoft.ru/Makita_6317DWAE2012-01-19T09:11:37+04:00monthly0.7
http://cpu.badisoft.ru/dvijki_tsen1970-01-01T03:00:00+03:00daily0.5
http://cpu.badisoft.ru/o_magazine2012-02-16T17:40:14+04:00monthly0.3



prioity, changefreq, а для категорий/страниц также lastmod задаются прямо в тексте файла sitemap.php

$sitemap = array("category" => array("priority" => 0.9,"changefreq" => "daily" ,"lastmod" => date("c")),
"products" => array("priority" => 0.7,"changefreq" => "monthly"),
"news" => array("priority" => 0.5,"changefreq" => "daily" ),
"pages" => array("priority" => 0.3,"changefreq" => "monthly" ,"lastmod" => date("c")),
"stati" => array("priority" => 0.5,"changefreq" => "monthly"));


посмотреть пример sitemap.xml целиком можно тут
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#57 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 17 February 2012 - 03:59 PM

Маленькая ошибка (забыл фигурные скобки при "ньюсовом" while) в sitemap.php.
Приводило к выводу только одной (последней) Новости в sitemap.xml и c неверным lastmod.
Исправлено.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#58 vlbelyakovich

    Пользователь

  • Пользователи
  • PipPip
  • 23 сообщений
Репутация: 0
Начинающий

Отправлено 19 February 2012 - 01:34 AM

После установки при клике на категорию (случайную) происходит переход на главную страницу. Баг плавающий... В чем может быть? Версия в демо-сайта... Badisoft - сорри за многочисленные запросы
  • 0

#59 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 19 February 2012 - 05:27 PM

После установки при клике на категорию (случайную) происходит переход на главную страницу. Баг плавающий... В чем может быть? Версия в демо-сайта... Badisoft - сорри за многочисленные запросы

Как показал опыт предыдущих решений проблем - можно их долго и последовательно обсуждать в треде, а можно мне дать ftp-доступ и я посмотрю сам, без игры в испорченный телефон. В предыдущие разы хватало получаса между делом. Или хотя бы обозначить название сайта, где я - опять же, сам! - посмотрю со стороны, что происходит. Тогда смогу что-то внятное сказать. Пока же диагностика уровня "у меня раздается подземный стук". Т.е. понятно, что есть проблема, но не более того :).
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#60 tonio

    Пользователь

  • Пользователи
  • PipPip
  • 17 сообщений
Репутация: 0
Начинающий

Отправлено 01 March 2012 - 01:23 PM

badisoft, скажите, а ваш модуль отрабатывает ситуации, когда есть два товара с абсолютно одинаковым названием? Если да - то как формируются урлы в этом случае?
Спасибо.
  • 0