Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Менюшка чудесит :(

Сообщения:  [1-6] 

 
 автор: carrot   (14.05.2006 в 22:40)   письмо автору
 
   для: carrot   (14.05.2006 в 22:35)
 

сплошные косяки.. корректно работают только разделы, котоыре идентичны именам файлов, например fm-studio.ru/about/ . При этом менюшка ловит этот самый эбаут и после посещения /about/ при попытке чере зменю перейти в другой раздел, /about/ подставляется к адресу :( Наверное, руки кривые...

   
 
 автор: carrot   (14.05.2006 в 22:35)   письмо автору
 
   для: Саня   (14.05.2006 в 22:24)
 

сделал RewriteBase / , тепреь рпи заходе в раздел со слешем, например fm-studio.ru/test2/, слеш просто исчезает и получается fm-studio.ru/test2 . Хотелось-бы что-бы слеш всегда присутствовал

   
 
 автор: Саня   (14.05.2006 в 22:24)   письмо автору
 
   для: carrot   (14.05.2006 в 21:36)
 

А вы RewriteBase настройте.

   
 
 автор: carrot   (14.05.2006 в 21:36)   письмо автору
 
   для: Саня   (14.05.2006 в 21:23)
 

Не пахаит :(
подставляет прямой путь /pub/home и тд...

   
 
 автор: Саня   (14.05.2006 в 21:23)   письмо автору
 
   для: carrot   (14.05.2006 в 17:55)
 

У меня была такая же проблема, только мне наоборот, нужен был закрывающий слеш (http://softtime.ru/forum/read.php?id_forum=5&id_theme=16306).
Свою проблему я решил так:
RewriteRule ^([0-9A-z-]+)(/+)$ forum.php?forum=$1
RewriteRule ^([0-9A-z-]+)$ $1/ [R]

По аналогии вашу проблему можно решить так:
RewriteRule ^([0-9A-z\_]+)(/+)$ $1 [R]
RewriteRule ^([a-z0-9\_]+)$ index.php?go=$1

   
 
 автор: carrot   (14.05.2006 в 17:55)   письмо автору
 
 

Вечер добрый, уважаемые. Вот опять у меня трабл, и прямо даже низнаю что делать :( Суть вопроса:
есть у меня меню, полностью на пхп, с подразделами неограниченными. Вобщем меню хорошее. Правда писал не я, а челвоек, который помогал. Пробелма такая- задействовал mod_revrite, дабы красиво было, но овт беда- если в адресе, допустим site.ru/about , то все пучком, а если подставить слеш- site.ru/about/, то менюшка ловит /about/ и подставляет к нему линк. Получается, что пройдя по site.ru/about/ из меню в contactб получается site.ru/about/contact, что, понятное дело неправильно и ненужно. Мне-же надо вот как- в менюшке все разделы выводятся как site.ru/razdel/ , а в обработке слеш убирался и значение (в данном случае razdel) искалось в базе. Помогите кто чем сможет, плиз, я начинающий и подобное мозголомство мне не позубам :(
Быть может, неочень понятно, вот тут оно лежит- fm-studio.ru , посмотрите пожалуйста
это класс меню в функциях:

class menu
{
    var $title,$link;
    function menu($title,$link)
    {
        $this->title=$title;
        $this->link=$link;
    }
}

function print_menu()
{
    global $menu_id,$site_url,$menu,$menu_tree,$parents;
    $parent=count($menu_tree)>0 ? $menu_tree[0] : "";
    $main=array_keys($parents,"");
    for($i=0;$i<count($main);$i++)
    {
        $id=$main[$i];
        $link=$menu[$id]->link;
        $title=$menu[$id]->title;  
        if($id==$parent)
        {
            ?><li><a href="<?=$link?><?if($id==$menu_id){?>id="active_item"<?}?> title="<?=$title?>"><?=$title?></a></li><?
            print_tree
();
        }
        
        else
                 {
?><li><a href="<?=$link?>" title="<?=$title?>"><?=$title?></a></li><?}    
    }
    

    
}

function 
print_tree()
{
    global 
$menu_id,$menu,$menu_tree,$parents;
    
$level=1;
    if(
count($menu_tree)>1)
    {
        for (
$j=1;$j<count($menu_tree);$j++)
        {
            
$id=$menu_tree[$j];
            
$title=$menu[$id]->title;
            
$link=$menu[$id]->link;  
            
?><li><?
            ?>
<a href="<?=$link?><?if($id==$menu_id){?>id="active_item"<?}?> title="<?=$title?>"><?=$title?></a><?
            $level
++;
            
?></li><?
        
}
    }
    
$child=array_keys($parents,$menu_tree[count($menu_tree)-1]);
    for(
$j=0;$j<count($child);$j++)
    {
        
?><li><?
        $id
=$child[$j];
        
$title=$menu[$id]->title;
        
$link=$menu[$id]->link;
        
?><a href="<?=$link?><?if($id==$menu_id){?>id="active_item"<?}?> title="<?=$title?>"><?=$title?></a><?
        ?>
</li><?
    
}
}

function 
load_menu($parent)
{
    global 
$menu,$menu_link,$go_link,$default_link,$menu_id,$parents,$menu_selected;
    
$query="SELECT 'id','title','link' FROM 'menu' WHERE 'parent'='$parent' AND 'visible'='yes' ORDER BY 'prior' DESC";
    
$result=mysql_query($query);
    if(
mysql_num_rows($result)>0)
    {
        while (
$row=mysql_fetch_array($result))
        {
            
$id=$row['id'];
            
$title=$row['title'];
            
$link=str_replace("\/","",$row['link']);


            if(
$link=="")
            
                
$link=str_replace($menu_link,"",$link);
            
            
            
            if(
$menu_selected==$link)
            
                
$menu_id=$id;
                          
$link=$link;            
                
            
$menu[$id]=new menu($title,$link);
            
            
$parents[$id]=$parent;
            
load_menu($id);
        
        }
    }
}

function 
form_tree()
{
    global 
$menu_id,$menu_tree;
    if(
$menu_id!="")
    {
        global 
$parents;
        if(
key_exists($menu_id,$parents))
        {
            if(
in_array($menu_id,$parents))
                
$menu_tree[]=$menu_id;
            
Get_parent($menu_id);
            
$menu_tree=array_reverse($menu_tree);
            if(
count($menu_tree)==0)
                
$menu_tree[]=$menu_id;
        }
        else 
            
$menu_id="";
    }
}



Это из конфигурационного файла:


$menu=array(); 
    $parents=array(); 
    $menu_link="index.php?go="; 
    $default_link="welcome"; 
$menu_selected=str_replace('\/',"",$_GET['go']) ? $_GET['go'] : basename($_SERVER['PHP_SELF']); 
    $menu_id="";
    $menu_tree=array(); 
    
    load_menu(""); 
    form_tree(); 

else  

header("Location: 404.php");




Это index.php:


if (isset($_GET['go'])) {
        $go = str_replace('/',"",$_GET['go']);
//$go=str_replace("/","",$go);
} else {
        $go = 'welcome';
}
if($go==""){$go="welcome";}

$query="SELECT 'meta_title','text_title','content' FROM 'menu' WHERE 'link'='$go' AND 'visible'='yes'";  

$result=mysql_query($query);
if(mysql_num_rows($result)>0)
{
    while ($row=mysql_fetch_array($result))
    {
    $text=$row['content'];
    $page_title=$row['text_title'];
        $page->add_title($row['meta_title']);    
    }
    }
    else
    {
header("Location: 404.php");
}


Это .htaccess:


ErrorDocument 401 /401.php
ErrorDocument 403 /403.php
ErrorDocument 404 /404.php
ErrorDocument 500 /500.php

RewriteEngine On

RewriteRule ^([a-z0-9\_\/]+)?$ index.php?go=$1 [L]

   

Сообщения:  [1-6] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования