<b>ЧПУ для новосетй:</b>
Для начала настроем сервер для того чтобы он понимал что делать с новыми ссылками. В состав Apache по умолчанию входит модуль mod_rewrite. Он включен почти на всех платных хостингах. Уточнить если у вас он или нет можно у хостера. Ну или потом когда работать ни чего не будет. =)
Для управления ссылками нам понадобится файл .htaccess в корне сайта. После того как создали его, открываем и начинаем писать в него =). Самая первая строчка должна содержать
RewriteEngine on
С помощью нее мы указываем на то, что требуется включить движок переписывания (в дословном переводе).
Далее мы должны указать строчки для работы ЧПУ для новостей.
##Работа с новостями
RewriteRule ^news_([0-9]{1,15}).html?$ /news.php?readmore=$1 [L]
Разберем эти 2 строчки.
Первая строчка служит комментарием для чего предназначена следующая строка. Это сделано для удобства. 2 строчка задает правило переписывания, что задается словочетанием RewriteRule. Значок ^ обозначим начало вида ссылки который мы хотим увидеть соответственно ?$ обозначает конец.
Сам вид ссылки требует так разбирательства. Первая чать news_ думаю понятна. А вот ([0-9]{1,15}) обозначает что здесь будет находится число содержащие числа от 0 до 9 и имеющие длину от 1 до 15 символов. Т.е. здесь у нас будет id новости, который мы привыкли видеть после readmore=. Если вы по каким либо причинам не желаете видеть цифры или кроме цифр вы будете использовать что-то другое то можно поставить ([^\/]*)(\/?) – эта вещь подразумевает что будут использоваться различные символы. Ее нельзя ставить перед знаком подчеркивания ибо он войдет в состав перемой. Перед этой переменной советую использовать тире. После знаков ?$ идет ссылка на оригинальный файл которому следует передать переменную. Знак $1 обозначает что на его место должна встать переменная в фальшивом URL т.е. в нашем случае сюда подставится число которое будет указано после news_.
Если мы хотим передать 2 переменные например news_576-title-Vushla_novay_OS.html то строчка должна выглядеть так:
RewriteRule ^news_([0-9]{1,15})-title-([^\/]*)(\/?).html?$ /news.php?readmore=$1&title=$2 [L]
Думаю смысл понятен. Теперь что обозначает [L] – данной штучкой мы указываем что серверу делать с этим правилом.
L – обозначает что нам надо просто передать переменную в исходный файл, отдать пользователю исходный файл (в данном случае news.php с перменной),но при этом пользователь должен видеть url типа news_576.html
R- функция редеректа. Т.е. пользователь вводит news_576.html и его перенаправляют на news.php?readmore=576. URL в адресной строке поменяется на news.php?readmore=576.
В принципе имеется еще достаточное кол-во функций. Ну если захотите с ними ознакомится то добро пожаловать в мат часть по апачу. Все с этим пунктом закончили пора переходить к редактированию файла news.php.
Открываем его и ищем строчки содеражищие “.FUSION_SELF.”?readmore=”.$news_info[news_id].” Т.е. если целиком то выдолжны искать <a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>. Лично я нашел это в 66,67,85,86. Это и есть ссылка на страницу с новость. Ее нам надо превести к нужному нам виду. Что бы не мучится с редактмированием и т.д. напишем ссылку сами т.е. удаляйте
<a href='".FUSION_SELF."?readmore=".$news_info['news_id']."'>
И пишите вместо этого вот это:
<a href='news_".$news_info['news_id']. ".html'>.
Производим это действие со всеми 4 строчками.
Далее нам надо будет изменить еще 2 строчки для полного счастья.
if ($data['news_allow_comments']) showcomments("N","news","news_id",$readmore,FUSION_SELF."?readmore=$readmore");
if ($data['news_allow_ratings']) showratings("N",$readmore,FUSION_SELF."?readmore=$readmore");
Номера этих строчек 159 и 160 соотвественно.
Эти строчки необходимо заменить на:
if ($data['news_allow_comments']) showcomments("N","news","news_id",$readmore,"news_$readmore.html");
if ($data['news_allow_ratings']) showratings("N",$readmore, "news_$readmore.html");
Эти строчки отвечают за вывод комментариев и рейтингов. Для чего мы их меняем? А для того что бы пользователя после того как он оставил комментарий или рейтинг не перебросило на адрес вида news.php?readmore=576 а вернуло на news_576.html.