Доброго времени суток дорогой читатель! Добро пожаловать на мой блог! Сегодня мы продолжим работу над циклом "Создать блог с нуля". Нам предстоит задать фундамент модуля ЧПУ, если быть точнее то нам понадобится php функция, которая по имени страницы определит нам id в таблице базе данных. Но прежде чем мы приступим к написанию функции нам необходимо будет создать и настроить файл htaccess. А так же отредактировать нашу таблицу в базе данных, создать новую колонку, в которой мы будем хранить имена страниц.
На файл htaccess мы сильно отвлекаться не будем, его работа не так уж и сложна, тем более если Вы знакомы с регулярными выражениями в php. Вот, что касается самого модуля ЧПУ, то он представлен в виде двух файлов ( ну можно и в один, но у меня почему то получилось два =) ) и "сети условий" по всему движку. Не пугайтесь, под термином "сети условий", я подразумеваю тот геморрой с автоматической смены ссылок по всему движку! Сегодня мы займемся лишь фундаментом, и добьемся того что бы пост, на странице нашего блога, был доступен по адресу с человеко-понятной ссылкой
Цели я указал в анонсе, так что сейчас пару слов для новоприбывших, и приступим =)
Если Вы на блоге в первый раз, то эта маленькая заметка именно для Вас! Пускай тема ЧПУ обширная и применима к любому проекту, Вам, именно в материале на этой странице, будет очень сложно выявить что-то полезное для себя, по причине того, что этот пост, как и большинство на моем блоге, является частью цикла статей "Создать блог с нуля". Цикл ориентирован на аудиторию которая хочет на практике научится программировать на php. Если Вы из таких, то добро пожаловать! Переходите по ссылке, что я дал Вам выше и приступайте к изучению изложенного мной материала
Если Вы собираетесь задержаться на моем блоге, то подпишитесь на RSS ленту блога через ридер, или же по почте
Так как у нас пока нет модуля который автоматически, из заголовков, делал бы нам имена ссылок, то придется не только создать колонку но и заполнить ее каким-нить именем. Только учтите, что имя должно состоять из маленьких букв английского алфавита, плюс к этому не должно быть пробелов, вместо них ставим тире ( - ). Это условие обязательно, ибо скрипт проверки будет отсеивать не правильные адреса, перекидывая пользователя на главную страницу блога.
Заходим в структуры таблицы blog, и после id создаем новую колонку

Заполняем поля приблизительно вот так ( имя поля nameurl )

Теперь, необходимо заполнить новую колонку. У меня лишь одна запись в базе данных, поэтому для меня заполнение новой колонки не является проблемой =)

В конце имени необходим поставить ".html". Если у Вас в планах не использовать такое окончание у Ваших страниц, то можете не писать, только в этом случае Вам придется немного переделать файл htaccess, а именно убрать расширение там.
Я для тестовой странице использовал вот такое имя: dobro-pozhalovat.html
Ну чтож, с этой задачей мы справились, теперь приступим к самому файл htaccess
Создавать лучше всего с помощью программы Notepad++, ибо в некоторых случаях виндоус ругается, что у файла нет имени, ведь имени и в правду нет =) только расширение .htaccess
На всякий случай я скину Вам файл, вот он. Этот файл необходимо поместить в корень нашего блога

Содержимое файла следующее:
RewriteEngine on
RewriteRule ^post/([-a-z0-9]+.html)$ index.php?post=$1 [L]
RewriteRule ^category/([-a-z0-9]+.html)$ index.php?category=$1 [L]
RewriteRule ^contacts.html$ index.php?contact=1 [L]
Первая строчка включает возможность перенаправления с динамических ссылок на ЧПУ. Вторая отвечает за ссылки на посты. То есть если ссылка будет вот такого вида
http://rsblog.ru/post/dobro-pozhalovat.html
То сервер поймет, что обращение идет к странице с постами, и создаст для себя динамическую ссылку для дальнейшей обработки.
Третья строчка отвечает за ссылки к категориям
http://rsblog.ru/category/testovaya-kategoriya.html
Ну и последняя строчка отвечает за ссылку ведущая на форму обратной связи
http://rsblog.ru/contacts.html
Обратите внимание что регулярное выражение находится в скобках, если Вы знакомы с регулярками, то прекрасно знаете, что скобки это сохранение. Вопрос, куда переносятся сохраненные данные? Ответ: В переменную 1. Да, именно 1 (единица).
Если Вам нужны ЧПУ без .html то редактируйте регулярное выражение в файле htaccess, на такой вид ссылок, который Вам нужен!
Особо останавливаться тут не будем, я многое тут не знаю, поэтому долго разглагольствовать на эту тему не имею право, единственное что бы я еще добавил, это пару слов о флаге [L]. Я может и ошибаюсь, но как я понял этот флаг останавливает проверки, что идут ниже, это что-то типа break (прерывание работы всего цикла) у циклов.
Под итожу то что написано в файле htaccess: Условия, для каждого вида станиц которые есть у нашего движка, а именно
Если Вы знакомы с регулярками, то разобраться в файле Вам не составит труда.
Начнем с создания алгоритма поиска. Для этого нам понадобится знать в какой таблице искать и что искать. У Вас может возникнуть вопрос, что значит в какой таблице? Ведь таблица у нас одна - blog. Это не совсем так, сегодня мы рассматриваем только посты, но так же нам известно, что у категорий тоже есть свои ссылки, а таблица которая будет содержать имена категорий называется menu, именно поэтому алгоритм должен знать в какой таблице ему искать. Пускай функция chpu() на данном этапе будет работать лишь на половину, зато в следующих постах нам не придется редактировать ее (функцию).
Создаем файл chpu.php помещаем его в пользовательские модули нашего движка, и пишем в этом файле следующую функцию:
<?
function chpu($url,$dirDB)//функция ЧПУ
{
//$url - имя с помощью которого мы определим id
//$dirDB - режим, с помощью которого мы определим в какой таблице базы данных нам искать
//определяем запрос в зависимости от того какую страницу открывает пользователь (текст поста или категорию)
if($dirDB == "post")$sql = "SELECT id FROM blog WHERE nameurl = '$url'";//текст поста
if($dirDB == "category")$sql = "SELECT id FROM menu WHERE nameurl = '$url'";//категория
$result_index = mysql_query($sql);//Выводим из базы статью
$myrow_index = mysql_fetch_array($result_index);
if($myrow_index != "") return $myrow_index[id];//если найдена строчка в БД выводим id
else return "";//если нет, выводим пустоту
}
?>
Функция очень простая, так что не будет на ней останавливаться, тем более я уже не раз разъяснял логику поиска id в таблице.
Цель этого скрипта определить в каком режиме запустить функцию chpu(). Определить это можно по GET запросу который создает нам сервер при обращение к станице по ЧПУ. Если Вы внимательно смотрели содержимое файла htaccess, и приблизительно поняли его работу, то Вы должны догадаться, что сервер для себя определяет ссылку вот такого вида
http://rsblog.ru/index.php?post=dobro-pozhalovat.html
То есть, если пользователь обратился к станице с помощью ЧПУ то сервер создаст GET запрос post, создание такого запроса сигнализирует нам о том что пользователь обратился на страницу поста, стало быть функцию chpu() необходимо запускать в режиме поиска id в таблице blog
Создаем файл getchpu.php, сохраняем его в папке пользовательских модулей и пишем в нем следующий скрипт
<?
if($chpu == 1)//если блог работает в режиме вкл ЧПУ
{
include("moduls/chpu.php");
//GET ПЕРЕМЕННАЯ post
if(isset($_GET['post']))
{
if(!preg_match("/^[-a-z0-9]+\.html$/",$_GET['post']))//если имя не корректное,то переносим
{
header("location: ".$server_root);//на главную страницу
exit;
}
$blog = chpu($_GET['post'],"post");//по имени страницы достаем из бд id
if($blog == "")//если результат функции пустота, то переносим пользователя
{
header("location: ".$server_root);//на главную страницу
exit;
}
}
//GET ПЕРЕМЕННАЯ post
//GET ПЕРЕМЕННАЯ category
if(isset($_GET['category']))
{
if(!preg_match("/^[-a-z0-9]+\.html$/",$_GET['category']))//если имя не корректное,то переносим
{
header("location: ".$server_root);//на главную страницу
exit;
}
$cat = chpu($_GET['category'],"category");//по имени страницы достаем из бд id
if($cat == "")//если результат функции пустота, то переносим пользователя
{
header("location: ".$server_root);//на главную страницу
exit;
}
}
//GET ПЕРЕМЕННАЯ category
}
?>
Логика скрипта следующая:
Если Вы создаете ссылки без .html, то Вам придется переделать регулярное выражение, ибо Ваши ссылки не пройдут проверки!
Тут есть один момент. Если Вы писали движок с самого начала курса, то у Вас скорее всего нет переменной server_root. Если Вы ставили копию движка, что я давал в посте "Установка нашей CMS", то эта переменная у Вас есть.
Если у Вас нет этой переменной, то откройте пользовательский файл index.php, и сразу после подключение к базе данных пропишите эту переменную
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
$nameDB = "rsblog";//Название БД
$nameSERVER = "localhost";//Сервер
$nameUSER = "root";//Имя пользователя БД
$passUSER = "";//Пароль пользователя БД
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
$server_root = "http://адрес_вашего_блога.ru/";
//ПОДКЛЮЧЕНИЕ К БАЗЕ ДАННЫХ (БД)
Значение переменной является адрес Вашего блога. Эта переменная необходима была в админке для авторизации, тут же она необходима для реализации ЧПУ, в частности для тега <base> что мы применим чуть ниже.
Открываем пользовательский файл index.php, и сразу после подключения к базе данных пишем вот такой код
$chpu = 1;//настройка включение выключение ЧПУ (1 - вкл; 0 - выкл)
//ЧЕЛОВЕКО-ПОНЯТНЫЙ УРЛ
include("moduls/getchpu.php");
//ЧЕЛОВЕКО-ПОНЯТНЫЙ УРЛ
Первая строчка, как Вы поняли, ручное включение режима ЧПУ. Вторая строчка, подключение скрипта позволяющая определить открываемую страницу, в этом же скрипте подключается алгоритм поиска записей.
Теперь в самом низу, перед строчкой
include("templates/index.html");//Подключение шаблонаСоздаем переменную urlsite
$urlsite = $server_root;
Эта переменная необходима для того чтобы определить базовую ссылку сайта. В шаблоне index.html после строчки
<meta name="keywords" content="<?=$header_metaK?>">
вставляем вот такой тег
<base href="<?=$urlsite?>">
Этот тег позволяет определить корень сайта, тем самым мы избавимся от глюка который мешает правильно определить пути к стилям. Если не поместить этот тег в код шаблона, то все страницы находящиеся по ЧПУ перестанут грузить стили, ява скрипты, и если я не ошибаюсь то и картинки
Теперь при заходе на страницу http://rsblog.ru/post/dobro-pozhalovat.html я попадаю на страничку статьи
а Вы? =)
На по следок хочу сказать, что мой способ реализации человеко-понятных урл не самый гибкий и функциональный, но тем не менее он работает. В следующем посте мы научим движок работать с ссылками категорий и формы обратной связи
Если у Вас есть какие вопросы, то пользуйтесь формой ниже
Если Вы еще не подписаны на мой блог, исправляйте дело и подпишитесь на RSS ленту блога через ридер, или же по почте, так Вы точно не пропустите новые заметки на блоге
Всего Вам наилучшего! У меня Все!
![]() |
Исходник |
________
P.S.: В интернете нашел подборку довольно не плохих статей на тему веб-дизайн, если кто-то видит себя в будущем как дизайнера, то обязательно почитайте эти статьи, очень полезная информация.
mysql_escape_string($url);
1. .htaccess
2. getchpu
Далее файлы из админ панели. При условии что вы дошли до этой статьи
3. addcontent.php
4. allcontent.php
5. addmenu.php
6. eddmenu.php
if($chpu == 1)//если блог работает в режиме вкл ЧПУ { include("moduls/chpu.php"); //GET ПЕРЕМЕННАЯ post if(isset($_GET['post'])) { if(!preg_match("/^[-a-z0-9]+\.html$/",$_GET['post']))//если имя не корректное,то переносим { header("location: ".$server_root);//на главную страницу exit; } $blog = chpu($_GET['post'],"post");//по имени страницы достаем из бд id if($blog == "")//если результат функции пустота, то переносим пользователя { header("location: ".$server_root);//на главную страницу exit; } } //GET ПЕРЕМЕННАЯ post //GET ПЕРЕМЕННАЯ category if(isset($_GET['category'])) { if(!preg_match("/^[-a-z0-9]+\/$/",$_GET['category']))//если имя не корректное,то переносим { header("location: ".$server_root);//на главную страницу exit; } $cat = chpu($_GET['category'],"category");//по имени страницы достаем из бд id if($cat == "")//если результат функции пустота, то переносим пользователя { header("location: ".$server_root);//на главную страницу exit; } } //GET ПЕРЕМЕННАЯ category }if(!preg_match("/^[-a-z0-9]+\/$/",$_GET['category']))//если имя не корректное,то переносим { header("location: ".$server_root);//на главную страницу exit; }http://site.ru/razrabotka-cms/uluchshenija/ - Категория
http://site.ru/razrabotka-cms/uluchshenija/funkcija-chpu.html - Заметка
Можете глянуть как там работает. Весь механизм в файлах (Если мне память не изменяет):
1. htaccess
2. getchpu.php
3. gettransform.php
Например в mysql подключение к БД производилось вот так:
$nameDB = "blog";//Название БД $nameSERVER = "localhost";//Сервер $nameUSER = "root";//Имя пользователя БД $passUSER = "";//Пароль пользователя БД $db = mysqli_connect( $nameSERVER, $nameUSER, $passUSER, $nameDB );В mysql обращение к БД производилось вот так:
$result = mysql_query("SELECT * FROM table"); $myrow = mysql_fetch_array($result);Вот собственно и все отличия. Ну по крайней мере с процедурным подходом.
я вот начал изучать Javascript и вот написал вот такой код:
$(document).ready(function() { $(function() { $("#initpl").toggle(function (){ $(".getWrapper").css({width: "initial", minWidth: "initial", margin: "10px"}) $(".getHead").css({width: "initial"}) $(".getContents").css({width: "initial"}) $(".getWrapper .getContents .getCol1").css({width: "100%"}) $(".comments_content").css({width: "initial"}) $(".commcont").css({width: "auto", minWidth: "100%"}) $(".comment_cont02").css({width: "auto"}) $("#header #wrp .headpanel .heads .wrass").css({width: "95%"}) $("#initpl").text("Уменьшить шаблон") .stop(); }, function(){ $(".getWrapper").css({width: "900px", minWidth: "900px", margin: "10px auto 10px auto"}) $(".getHead").css({width: "900px"}) $(".getContents").css({width: "900px"}) $(".getWrapper .getContents .getCol1").css({width: "699px"}) $(".comments_content").css({width: "680px"}) $(".commcont").css({width: "680px", minWidth: "680px"}) $(".comment_cont02").css({width: "527px"}) $("#header #wrp .headpanel .heads .wrass").css({width: "960px"}) $("#initpl").text("Увеличить шаблон") .stop(); }); }); });вот демо: http://udiscuz.sibwebgroup.ru/optimizaciya-udiscuz.shtml
Заранее очень благодарю!
Вот ссылка на плагин, а вот дока
$.cookie('tpl', 'состояние', { path: '/' });object(mysqli)#1 (18) { ["affected_rows"] => int(0) ["client_info"] => string(78) "mysqlnd 5.0.8-dev - 20102224 - $Id: 65fe78e70ce53d27a6cd578597722950e490b0d0 $" ["client_version"] => int(50008) ["connect_errno"] => int(0) ["connect_error"] => NULL ["errno"] => int(0) ["error"] => string(0) "" ["field_count"] => int(0) ["host_info"] => string(20) "localhost via TCP/IP" ["info"] => NULL ["insert_id"] => int(0) ["server_info"] => string(6) "5.5.25" ["server_version"] => int(50525) ["stat"] => string(130) "Uptime: 948 Threads: 1 Questions: 52 Slow queries: 0 Opens: 35 Flush tables: 1 Open tables: 4 Queries per second avg: 0.054" ["sqlstate"] => string(5) "00000" ["protocol_version"] => int(10) ["thread_id"] => int(19) ["warning_count"] => int(0) }например вот есть функция у модуля:
function returnconfig() { $result_page = mysqli_query($db, "SELECT configblog FROM page WHERE id='1'"); $myrow_page = mysqli_fetch_array($result_page); global $maxSQL; $maxSQL++; return $myrow_page['configblog']; }function returnconfig() { global $db; // делаем переменную с подключением видимой для функции $result_page = mysqli_query($db, "SELECT configblog FROM page WHERE id='1'"); $myrow_page = mysqli_fetch_array($result_page); global $maxSQL; $maxSQL++; return $myrow_page['configblog']; }Во-первых я понятие не имею, зачем Вы его используете в данном месте.
Во-вторых данный символ просто глушит вывод ошибки. Обычно его используют для того что бы написать свой собственный, детализированный обработчик ерроров.
а вот вопрос насчёт оптимизации SQLi запросов...
у меня после очистки кеш идёт:
<!-- Общее количество MySQLi запросов 13 -->
после заполнение кешом:
<!-- Общее количество MySQLi запросов 7 -->
и вот вы решали такую проблему? я слышал можно это сделать через JOIN но я хз что и как...гуглил и нашел статью на хабре но я нечего не понял
например вот так выглядел бы оптимизированный модуль последних комментариев
p.s: только я его не тестил, может какую синтаксическую ошибку допустил.
вот оригинал:
$sql = "" ."SELECT" ." news.title AS news_title," ." news.meta_d AS news_meta_d," ." news.meta_k AS news_meta_k," ." FROM" ." page" ." WHERE" ." id = '1'" ; $result_meta = mysqli_query($db, $sql); $myrow_meta = mysqli_fetch_array($result_meta); $maxSQL++; if($myrow_meta != "") { $headerMETA[0] = $myrow_meta['news_title']; $headerMETA[1] = $myrow_meta['news_meta_d']; $headerMETA[2] = $myrow_meta['news_meta_k']; $headerMETA[3] = $myrow_meta['news_title']; $headerMETA = implode("[META]",$headerMETA); writeCACHE("news_meta",$headerMETA); } }$sql = "" ."SELECT" ." news.title AS news_title," ." news.meta_d AS news_meta_d," ." news.meta_k AS news_meta_k" ." FROM" ." page" ." WHERE" ."id = '1'" ; $result_meta = mysqli_query($db, $sql); $myrow_meta = mysqli_fetch_assoc($result_meta); $myrow_meta = $myrow_meta[0]; $maxSQL++; if($myrow_meta != "") { $headerMETA[0] = $myrow_meta['news_title']; $headerMETA[1] = $myrow_meta['news_meta_d']; $headerMETA[2] = $myrow_meta['news_meta_k']; $headerMETA[3] = $myrow_meta['news_title']; $headerMETA = implode("[META]",$headerMETA); writeCACHE("news_meta",$headerMETA); } }$sql = "" ."SELECT" ." news.title AS news_title," ." news.meta_d AS news_meta_d," ." news.meta_k AS news_meta_k" ." FROM" ." page" ." WHERE" ."id = '1'" ; $result_meta = mysqli_query($db, $sql); $myrow_meta = mysqli_fetch_assoc($result_meta); $maxSQL++; if($myrow_meta != FALSE) { while ($myrow_meta = mysqli_fetch_assoc($result_meta)) { $headerMETA[0] = $myrow_meta['news_title']; $headerMETA[1] = $myrow_meta['news_meta_d']; $headerMETA[2] = $myrow_meta['news_meta_k']; $headerMETA[3] = $myrow_meta['news_title']; $headerMETA = implode("[META]",$headerMETA); } writeCACHE("news_meta",$headerMETA); }Parse error: syntax error, unexpected $end in Z:\home\udiscuz.ru\www\source\modules\news.php on line 173
$sql = "" ."SELECT" ." page.title AS news_title," ." page.meta_d AS news_meta_d," ." page.meta_k AS news_meta_k" ." FROM" ." page" ." WHERE" ." id = '1'" ;http://rghost.ru/50327775
Попробуйте вот этот файл
<?php /* uDiscuz! - (c) 2013-2099. Powered by SibWeb Group Official site: www.udiscuz.net License GNU/GPL v 2 */ if(!defined('MYADMIN')) die(''); $headerMETA = readerCACHE("post_meta_".$blog,3600); if($headerMETA == FALSE) { $sql = "" ."SELECT" ." page.title AS page_title," ." page.meta_d AS page_meta_d," ." FROM" ." page" ." WHERE" ." page.id = '1'" ; $result_meta = mysqli_query($db, $sql); $myrow_meta = mysqli_fetch_assoc($result_meta); $maxSQL++; if($myrow_meta != FALSE) { $sql = "" ."SELECT" ." news.title AS news_title," ." news.meta_d AS news_meta_d," ." news.meta_k AS news_meta_k" ." FROM" ." blog" ." WHERE" ." news.id = '$blog'" ; $result_meta_blog = mysqli_query($db, $sql); $meta_blog = mysqli_fetch_assoc($result_meta_blog); $maxSQL++; $headerMETA[0] = $meta_blog['news_title']." - ".$myrow_meta['page_title']; $headerMETA[1] = $myrow_meta['page_meta_d']; $headerMETA[2] = $meta_blog['news_meta_k']; $headerMETA[3] = $myrow_meta['page_title']; $headerMETA = implode("[META]",$headerMETA); writeCACHE("post_meta_".$blog,$headerMETA); } } $headerMETA = explode("[META]",$headerMETA); $header_title = $headerMETA[0]; $header_metaD = $headerMETA[1]; $header_metaK = $headerMETA[2]; $title_origin = $headerMETA[3]; function blog($blog,$canon,$chpu,$morepostACTIV) { global $db; include("./source/modules/aut.php"); include("./source/modules/bbeditor.php"); include ("./source/lang/news.php"); if (checketHESH() === TRUE) $sql = "SELECT * FROM blog WHERE id='$blog'"; else $sql = "SELECT * FROM blog WHERE id='$blog' AND pablick='1'"; $result_index = mysqli_query($db, $sql); $myrow_index = mysqli_fetch_array($result_index); $newloock = $myrow_index['loock'] + 1; $up_loock = mysqli_query ($db, "UPDATE blog SET loock='$newloock' WHERE id='$blog'"); global $maxSQL; $maxSQL = $maxSQL + 2; if($myrow_index != "") { $sm_read = getTPL('text.tpl'); if($myrow_index['meta_k'] != "") { $sm_read = str_replace("{meta_k}",$myrow_index['meta_k'],$sm_read); } else $sm_read = str_replace("{meta_k}",$lang['not_tags'],$sm_read); $text = str_replace("[end]","",$myrow_index['meta_d']); if($morepostACTIV == 1) { include("./source/modules/morepost.php"); $more = morepost($chpu,$myrow_index['cat'],$blog); $sm_read = str_replace("[_morepost]",$more,$sm_read); } else $sm_read = str_replace("[_morepost]","",$sm_read); $datePOST = date("c",$myrow_index['date_b']); $sm_read = str_replace("{canon}",$canon,$sm_read); $sm_read = str_replace("{news}",mynews($text),$sm_read); $sm_read = str_replace("{titles}",$myrow_index['title'],$sm_read); $sm_read = str_replace("{author}",$myrow_index['author'],$sm_read); $sm_read = str_replace("{date}",$datePOST,$sm_read); $sm_read = str_replace("{comm}",$myrow_index['comm'],$sm_read); $sm_read = str_replace("{cat}",get_catalog($myrow_index['cat']),$sm_read); $sm_read = str_replace("{authors}",$lang['author'],$sm_read); $sm_read = str_replace("{data_add}",$lang['data_add'],$sm_read); $sm_read = str_replace("{comments_counter}",$lang['comments_counter'],$sm_read); $sm_read = str_replace("{cate}",$lang['cate'],$sm_read); $sm_read = str_replace("{tags}",$lang['tags'],$sm_read); $sm_read = str_replace("{form_comments}",$lang['form_comments'],$sm_read); } else { $sm_read = "<p align='center'>".$lang['not_found']."</p>"; } $result[0] = $sm_read; $result[1] = $myrow_index['viewcomm']; return $result; } function get_catalog($catalog_id = 0) { include ("./source/lang/news.php"); $catalog_link = "".$lang['not_cat'].""; $catalog_id = (int)$catalog_id; if ($catalog_id == 0) return $catalog_link; global $station_menu; if (empty($station_menu) OR !is_array($station_menu)) return $catalog_link; $path = array(); $name = array(); foreach ($station_menu as $key => $station) if ($station[0] == $catalog_id) { if ($station[3] != '') break; $path[] = $station[1]; $name = $station[2]; if ($station[4] != 0) get_path($path, $station[4], $station_menu); break; } if (empty($path)) return $catalog_link; $catalog_link = '/'.implode('/', array_reverse($path)); return "<a onClick=\"expandit('loading')\" href=\"".$catalog_link."\">".$name."</a>"; } function get_path(&$path, $podmenu, $station_menu) { foreach ($station_menu as $key => $station) if ($station[0] == $podmenu){ $path[] = $station[1]; if ($station[4] != 0) get_path($path, $station[4], $station_menu); break; } } ?>$sql = "" ."SELECT" ." blog.title AS news_title," ." blog.meta_d AS news_meta_d," ." blog.meta_k AS news_meta_k" ." FROM" ." blog" ." WHERE" ." blog.id = '".$blog."'" ;http://rghost.ru/50331479
Когда уже вы сделаете релиз?
и сделайте пожалуйста небольшой обзор перед тем как вы опубликуете RS-Site
и расскажите о его приемуществах. заранее спасибо! =)
$mod = array(); //базовые $mod[] = 'author'; $mod[] = 'navi'; $mod[] = 'headers'; $mod[] = 'comments'; //$mod[] = 'separator'; $mod[] = 'blogConsole'; $mod[] = 'window'; foreach ($mod as $module) { $new_mod=mysql_query('INSERT into '.PREFIX.'modules (name) values ("'.$module.'");') or die(mysql_error()); $rank = mysql_insert_id(); $r=mysql_query('UPDATE '.PREFIX.'modules SET rank = "'.$rank.'" WHERE id="'.$rank.'"') or die(mysql_error()); }При включенном ЧПУ неправильно обрабатывает якоря на странице. Т.е. ссылки типа http://japson.ru/#mechta.
Подскажите, пожалуйста, мне в данном случае как решить проблему: что-то вписать в htaccess или в getchpu() обработчик писать?
Спасибо заранее.
Вот подскажите мне, непонятливому, где Вы объявляете переменные $dirDB и $url??? Не могу найти.
Зашёл на ваш сайт с поисковика по запросам с ЧПУ. Прочитал, описание и комментарии. При чтении описания попалась на глаза ссылка которая вела на страничку с пробной версией блога. Заинтересовался скачал, вкинул на денвер посмотрел.
Вещь нормальная. Минимализм на 5 с плюсом как раз такой и искал. один недостаток что все прикрасы что вы описываете на вашем сайте нужно вкручивать самому. А не охота да и возраст уже не тот чтобы по долгу разбираться во всех тонкостях.
Лет пять назад попался бы мне ваш сайт тогда бы может ещё и потрудился.