Настраиваем функцию php так, чтобы она отображала ссылку в виде: - / widgets? Pg = 2 'вместо' products.php? Cat = 20 & pg = 2 ' - PullRequest
0 голосов
/ 06 августа 2010

Я добавил следующее правило .htaccess: -

RewriteRule ^widgets$ products.php?cat=20 [QSA]

Так что теперь у меня есть простая ссылка под названием «виджеты», которая ведет на первую страницу категории «виджеты». Однако ссылки на 2-ю страницу выглядят следующим образом: -

products.php?cat=20&pg=2

Я хотел бы, чтобы последующие страницы были в форме: -

widgets?pg=2

Флаг QSA в приведенном выше правиле .htaccess действительно этого добивается, но мне нужно изменить функцию, которая генерирует эти ссылки на страницы, в противном случае единственный способ добраться до widgets?pg=2 - это ввести его в адресной строке браузера как - mywebsite.com/widgets?pg=2.

Я думаю, что для достижения желаемого результата может потребоваться корректировка следующей функции PHP. Могут ли помочь с этим любые волшебники PHP или те, кто обладает соответствующими знаниями? Причина, по которой я хочу это сделать, заключается в том, что я хочу, чтобы Google индексировал простые страницы, а не более длинные страницы: -

function writepagebar($CurPage,$iNumPages,$sprev,$snext,$sLink,$nofirstpage){
    $startPage = max(1,round(floor((double)$CurPage/10.0)*10));
    $endPage = min($iNumPages,round(floor((double)$CurPage/10.0)*10)+10);
    if($CurPage > 1)
        $sStr = $sLink . '1' . '" rel="prev"><span style="font-family:Verdana;font-weight:bold">&laquo;</span></a> ' . $sLink . ($CurPage-1) . '">'.$sprev.'</a> | ';
    else
        $sStr = '<span style="font-family:Verdana;font-weight:bold">&laquo;</span> '.$sprev.' | ';
    for($i=$startPage;$i <= $endPage; $i++){
        if($i==$CurPage)
            $sStr .= '<span class="currpage">' . $i . '</span> | ';
        else{
            $sStr .= $sLink . $i . '">';
            if($i==$startPage && $i > 1) $sStr .= '...';
            $sStr .= $i;
            if($i==$endPage && $i < $iNumPages) $sStr .= '...';
            $sStr .= '</a> | ';
        }
    }
    if($CurPage < $iNumPages)
        $sStr .= $sLink . ($CurPage+1) . '" rel="next">'.$snext.'</a> ' . $sLink . $iNumPages . '"><span style="font-family:Verdana;font-weight:bold">&raquo;</span></a>';
    else
        $sStr .= ' '.$snext.' <span style="font-family:Verdana;font-weight:bold">&raquo;</span>';
    if($nofirstpage) $sStr = str_replace(array('&amp;pg=1"','?pg=1"'),'" rel="start"',$sStr);
    return($sStr);
}

Если это помогает узнать, как функция writepagebar вписывается в incproducts.php, который находится внутри страницы products.php, которую вы можете увидеть здесь: -

http://freetexthost.com/3ubiydspzm

Ответы [ 2 ]

1 голос
/ 06 августа 2010

Отредактировано после комментариев из "nitbuntu": -

В функции просто вместо этих строк: -

    $sStr = str_replace(array('&amp;pg=1"','?pg=1"'),'" rel="start"',$sStr);
    return($sStr);
}

напишите следующие строки: -

    $sStr = str_replace('products.php?cat=20', 'widgets', $sStr);
    $sStr = str_replace('&amp;pg=', '?pg=', $sStr);
    $sStr = str_replace(array('&amp;pg=1"', '?pg=1"'), '" rel="start"', $sStr);
    return($sStr);
}

Надеюсь, это поможет.

0 голосов
/ 06 августа 2010

Анализируя ваш код, кажется, что $ sLink содержит значение 'products.php? Cat = 20', функция добавляет только значение страницы, поэтому, возможно, вам нужно изменить другую функцию.

Другими словами, ваш writepagebar () только добавляет номер страницы к сгенерированной ссылке.Вы должны найти, кто вызывает writepagebar () с помощью строки 'products.php? Cat = 20', и изменить на этом уровне.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...