|
Автор |
Сообщение |
Светозар
Участник тусовки
Зарегистрирован: 20.02.2010 Сообщения: 354 Откуда: Москва
|
|
|
|
В общем, на главной страничке работает, а на странице категории не хочет.
Для index.php :
Код: |
RewriteRule ^pages/(.*)\.page$ index.php?page=$1 [L]
RewriteRule ^pages/(.*)\.page$ ?page=$1 [L]
|
для категорий получается так:
Код: |
RewriteRule ^pages/(.*)\.page$ index.php?page=$1 [L]
RewriteRule ^categories/2.cat/pages/(.*)\.page$ index.php?action=categories&cat=$1&page=$1 [L]
RewriteRule ^pages/(.*)\.page$ ?page=$1 [L]
|
Выводится категория так:
в index.php
Код: |
index.php?action=categories&cat=$1 |
где $1 - номер категории
А вот и сам процесс вывода:
Код: |
<?php
include_once $path . '......./bd.conf.php';
$items_per_page = 2; // Количество элементов на странице
$result_count2=mysql_query("SELECT count(id) FROM `posts` WHERE cat='$cat'");
$aCount = mysql_fetch_array($result_count2);
$iPages = ceil($aCount['count'] / $items_per_page);
$page = (isset($_GET['page']) && $_GET['page'] <= $aCount['count']) ? $_GET['page'] : 1;
$iOffsetLimit = ($page - 1) * $items_per_page;
$iStart = ($page > 5) ? $page - 4 : 1;
$result = mysql_query("SELECT `id`,`title`,`date`,`mini_img`,`short_news`,`author`,`view` FROM `posts` WHERE cat='$cat' ORDER BY id DESC LIMIT ".$iOffsetLimit.",".$items_per_page."",$db);
if ( $iOffsetLimit < 0) {
echo "Отрицательных старниц нет! Ваш покорный КЭП!";
} else {
if (!$result)
{
echo "<p>Внимание, новостей пока нет! <br> Ошибка<strong> :</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
do
{
printf ("
<article id='item-20' class='item'>
<header>
<h1 class='title'><a href='/posts/%s.news'>%s</a></h1>
<p class='meta'>
Написал %s, %s | Написано в {категория}</p>
</header>
<div class='content clearfix'>
<p><div id='news-id-8' style='display:inline;'><p>
<img class='size-auto frame' width='760' height='300' alt='%s' title='%s' src='%s' />
<br /><br />
%s
</p></div></p>
</div>
<p class='links'>Просмотров %s »
<a href='/posts/%s.news'>Читать далее»</a>
</p>
</article>
",$myrow["id"], $myrow["title"], $myrow["author"], $myrow["date"], $myrow["title"], $myrow["title"], $myrow["mini_img"], $myrow["short_news"], $myrow["view"], $myrow["id"], $r);
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "
<div id='main' class='grid-block'>
<div id='maininner' class='grid-box'>
<section id='innertop' class='grid-block'><div class='grid-box width51 grid-h'><div class='module mod-box mod-box-color color-color deepest'>
<h3 class='module-title'><span class='color'>Внимание,</span> новостей нет</h3> Возможно вы попали в раздел, в котором ещё нет новостей. Вернитесь на главную страничку и выберите подходящий раздел.
</div></div>
";
}
}
if ($iPages > 1) {
echo '<div class="catPages1">';
for ($i = $iStart; $i <= $iPages; $i++) {
if ($page > 4 && $i == $page - 4) {
echo '<a href="?pages/' . $i . '.page">...</a>' . "\n";
continue;
}
if ($i > $page + 3) {
echo '<a href="?pages/' . $i . '.page">...</a>' . "\n";
break;
}
if ($i == $page) {
echo '<span class="current">' . $i . ' </span> ' . " " . "\n";
} else {
echo '<a href="?pages/' . $i . '.page" clss="catPages1 b">' . $i . '</a>' . " " . "\n";
}
}
echo '</div>' . "\n";
}
?> |
|
|
Вернуться к началу |
|
|
den
Старожил
Зарегистрирован: 31.01.2006 Сообщения: 13870 Откуда: Кировоград, Украина
|
|
|
|
Давай сделаем так. Сначала убей .htaccess, посмотри выводится ли страница категории без него - по URL index.php?action=categories&cat=1&page=1 ? |
|
Вернуться к началу |
dhsilabs@jabber.ru |
|
|
олег алексеевич
Тысячник
Зарегистрирован: 18.01.2009 Сообщения: 1365 Откуда: ua Кропивницкий
|
|
|
|
объясните мне ,это $1 -переменная с l(L) или цифра 1 ? |
|
Вернуться к началу |
|
|
Светозар
Участник тусовки
Зарегистрирован: 20.02.2010 Сообщения: 354 Откуда: Москва
|
|
|
|
.... ?page=$1 [L] .... получается L
Код: |
index.php?action=categories&cat=$1&page=$1 |
Я правильно понял, то есть второй $1 нужно заменить? |
|
Вернуться к началу |
|
|
олег алексеевич
Тысячник
Зарегистрирован: 18.01.2009 Сообщения: 1365 Откуда: ua Кропивницкий
|
|
|
|
А как в массив попадают cat=$1 , page=$1 ?
Я про то ,что переменные не могут начинаться с цифры. _________________ помощь в личку платно.Удалю вирус,шелл с сайта Джумла, Битрикс .
Создам плагин , модуль под заказ для VirtueMart , JoomShopping |
|
Вернуться к началу |
|
|
Светозар
Участник тусовки
Зарегистрирован: 20.02.2010 Сообщения: 354 Откуда: Москва
|
|
|
|
Просто эта часть отвечает за вывод...
Код: |
<?php
/*
* ST news. Free Version
* http://ST-news.RU/
* Author: Svetozar Kolesnikov. Russian Web-Masters
* Назначение categories.php: Вывод категорий
*/
?>
<?
include_once $path . 'system/data/bd.conf.php';
if (isset($_GET['cat'])) {$cat = $_GET['cat']; }
if (!isset($cat)) {$cat = 1;}
/* Проверяем, является ли переменная числом */
if (!preg_match("|^[\d]+$|", $cat)) {
exit ("<p>Неверный формат запроса! Проверьте URL!");
}
$result = mysql_query("SELECT * FROM `categories` WHERE id='$cat'",$db);
if (!$result)
{
echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору<br> <strong>Код ошибки:</strong></p>";
exit(mysql_error());
}
if (mysql_num_rows($result) > 0)
{
$myrow = mysql_fetch_array($result);
echo $myrow["name"];
}
else
{
echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
exit();
}
?>
<?php
include $path . 'template/x2/cat.php';
?> |
Как-то так работает функция определения категории ) |
|
Вернуться к началу |
|
|
Светозар
Участник тусовки
Зарегистрирован: 20.02.2010 Сообщения: 354 Откуда: Москва
|
|
|
|
В общем, если писать так:
Код: |
/index.php?action=categories&cat=$1&page=$2 |
Работает, а вот как сделать так, чтобы было хотя бы так
Код: |
/categories/1.cat&page=id |
а лучше вообще так...
Код: |
/categories/1/pages/1.page |
У меня я так понял не передаётся страничка, с которой я перешёл... Короче не сохраняется id категории
делал так:
Код: |
RewriteRule ^cat_page/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
RewriteRule ^categories/(.*)\/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
RewriteRule ^categories/(.*)\/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
|
А вот мой .htaccess:
Код: |
# Индексная страница сайта
DirectoryIndex index.php
# Кодировка сайта
AddDefaultCharset UTF-8
# Ещё одна фишка
php_flag display_errors off
php_value register_globals off
# убираем все ошибки с сайта
php_flag display_startup_errors off
php_flag html_errors off
php_value docref_root 0
php_value docref_ext 0
php_value error_reporting "E_ALL & ~E_NOTICE"
# редирект на сайт без www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.personal-blog.net$ [NC]
RewriteRule ^(.*)$ http://personal-blog.net/$1 [R=301,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.htaccess$ - [F]
Options +FollowSymlinks
RewriteBase /
RewriteRule ^posts/(.*)\.news$ index.php?action=post&id=$1 [L]
RewriteBase /
RewriteRule ^categories/(.*)\/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
RewriteRule ^pages/(.*)\.page$ index.php?page=$1 [L]
RewriteRule ^cat_page/(.*)\.page$ index.php?action=categories&cat=$1&page=$2 [L]
RewriteRule ^pages/(.*)\.page$ ?page=$1 [L]
RewriteBase /
RewriteRule ^target.php$ index.php?action=target [L]
RewriteBase /
RewriteRule ^reklama.php$ index.php?action=avdert [L]
RewriteBase /
RewriteRule ^contact.php$ index.php?action=contact [L]
ErrorDocument 404 /404.html
# Ограничение доступа по user-agent
# Блокируем всех пользователей, которые могут причинить вред серверу.
SetEnvIfNoCase user-Agent ^FrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Java.* [NC,OR]
SetEnvIfNoCase user-Agent ^Microsoft.URL [NC,OR]
SetEnvIfNoCase user-Agent ^MSFrontPage [NC,OR]
SetEnvIfNoCase user-Agent ^Offline.Explorer [NC,OR]
SetEnvIfNoCase user-Agent ^[Ww]eb[Bb]andit [NC,OR]
SetEnvIfNoCase user-Agent ^Zeus [NC]
<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>
|
|
|
Вернуться к началу |
|
|
Anderson
Завсегдатай
Зарегистрирован: 08.07.2006 Сообщения: 642 Откуда: localhost
|
|
|
|
Советую вместо (.*) использовать ([0-9]+) для цифр или ([a-zA-Z_]+) для букв и знаков подчеркивания ("_") и т.п. (см. Регулярные выражения, на википедии, например), т.к. .* подразумевает ЛЮБОЙ знак (включая '/').
Попробуй так:
Код: |
RewriteRule ^categories/([a-zA-Z0-9_\-]+)/pages/([a-zA-Z0-9_\-]+).html$ index.php?action=categories&cat=$1&page=$2 [L] |
Кстати, в качестве $1, $2, ..., $n - считается ТОЛЬКО то, что находиться в скобках "(" и ")" _________________ ArchLinux + Enlightenment 17 (E17) |
|
Вернуться к началу |
|
|
Светозар
Участник тусовки
Зарегистрирован: 20.02.2010 Сообщения: 354 Откуда: Москва
|
|
|
|
Код: |
<?
include_once $path . 'system/data/bd.conf.php';
$result = mysql_query("SELECT `id`,`title`,`date`,`mini_img`,`short_news`,`author`,`view` FROM `posts` ORDER BY id ",$db);
$myrow = mysql_fetch_array($result);
$res_cat = mysql_query("SELECT * FROM `categories` ",$db);
$myrow_cat = mysql_fetch_array($res_cat);
$title = $myrow['title']; // Заголовк
$short_news = $myrow['short_news']; // краткая новость
$date = $myrow['date']; // дата
$author = $myrow['author']; // Автор
// Определяем категорию
$cat = $myrow['cat']; // категория id
if ($cat = $myrow_cat['cat']) {
$link_title= $myrow_cat['title'];
$link_category = "<a href='$cat'>$link_title</a>";
}
// изображение в новости
$img = $myrow['mini_img'];
$images = "<img class='size-auto frame' width='760' height='300' src='$img' />";
// ссылки на полную новость
$url_id = $myrow['id'];
$full_link_on = "<a href='posts/$url_id.news'>";
$full_link_off = "</a>";
if (mysql_num_rows($result) > 0)
{
do
{
$html = str_replace(
array('{title}','{short_news}','{date}','{author}','{images}','{link-category}','[full-link]','[/full-link]'),
array($title,$short_news,$date,$author,$images,$link_category,$full_link_on, $full_link_off),
file_get_contents("./x2/short_news.tpl"));
echo $html;
}
while ($myrow = mysql_fetch_array($result));
}
else
{
echo "
<div id='main' class='grid-block'>
<div id='maininner' class='grid-box'>
<section id='innertop' class='grid-block'><div class='grid-box width51 grid-h'><div class='module mod-box mod-box-color color-color deepest'>
<h3 class='module-title'><span class='color'>Внимание,</span> новостей нет</h3> Возможно вы попали в раздел, в котором ещё нет новостей. Вернитесь на главную страничку и выберите подходящий раздел.
</div></div>
";
}
?> |
|
|
Вернуться к началу |
|
|
олег алексеевич
Тысячник
Зарегистрирован: 18.01.2009 Сообщения: 1365 Откуда: ua Кропивницкий
|
|
|
|
Код: |
$result = mysql_query("SELECT `id`,`title`,`date`,`mini_img`,`short_news`,`author`,`view` FROM `posts` WHERE page='page'",$db);
$res_cat = mysql_query("SELECT * FROM `categories` WHERE cat='cat' ",$db); |
Нужно указать выборку по какому то полю,обычно сравнивая значение полученное из запроса урл.
Тогда и будет выводится одна строка,а не вся таблица. |
|
Вернуться к началу |
|
|
|
|
 Главная страница сайта
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|