Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [inne] htaccess, zmiana tytułu podstrony?
Forum PHP.pl > Forum > Przedszkole
partyboyu
Czy jest możliwość "nałożenia" tytułu dla jednej podstrony przy użyciu htaccess?
jaslanin
Przez sam plik htaccess tego nie zrobisz, możesz za to użyć htaccess by przekazał do skryptu dane i na tej podstawie skrypt zmieni tytuł, bądź użyć do kierowania na inny URL gdzie masz porządaną stronę i tytuł.

Inną opcją jest stworzenie skryptu który będzie pobierał stronę (np. przez CURL) którą chcesz, za pomocą preg_replace zmieniał tytuł, wyświetlał zmienioną stronę, a htaccess będzie tylko kierował/maskował użycie tego pliku. Ale uwaga nie jest to zbyt wydajne i raczej nie jest to zbyt dobrą praktyką programistyczną. By bardziej to zoptymalizować, można by dorzucić cache'owanie strony, by nie musieć co chwila wykonywać dość kosztownej operacji zmiany tytułu i pobierania strony.
partyboyu
to może troche opisze mój problem, zrobilem proste przekierowanie z index.php na search.php (skrypt CMS)
Kod
RewriteRule ^index.php$ search.php [L]

problem polega na tym (oprócz tego że nie jestem orłem) że jest to system naczyń połączonych, w pliku main.template.php jest taki kod:
Kod
<title>{[var:(strlen($page_title) ? $page_title .' - '. $settings['sitename'] : $settings['sitename'])]}</title>

tego kodu nie moge ruszyć ponieważ zalezy mi tylko na zmianie tytułu dla search.php

natomiast cały search.php wygląda tak:
Kod
<?php
session_start();

define('PAGE', 'site');

require ('includes/config.php');

require ('templates/'. $session->info['template'] .'/browse.template.php');

require ('languages/'. $session->info['language'] .'/browse.lang.php');

// get search page number
$page = (int) $_GET['p'];
if (empty($page))
    $page = 1;

$search_term = nohtml(escape_string($_REQUEST['t'])); // get search term

// log search... for tag cloud.
if ($settings['tag_cloud'] == 1 && $_SESSION['search_term'] != $search_term && strlen($search_term) > 0 && strlen($search_term) <= 20) {
    mysql_query("INSERT INTO ". $tbl_prefix ."search (search_term, search_date) VALUES ('". (function_exists('mb_strtolower') ? mb_strtolower($search_term,'UTF-8') : strtolower($search_term)) ."', ". $u_time .")");
    $_SESSION['search_term'] = $search_term;
}

// build search SQL
$search_sql = '';
if (isset($_REQUEST['c']) && is_numeric($_REQUEST['c']))
    $search_sql .= "category = ". (int) $_REQUEST['c'] ." && ";
$search_sql .= "status = '1' && (title LIKE '%". $search_term ."%' || description LIKE '%". $search_term ."%' || keywords LIKE '%". $search_term ."%')";

$number_results = count_rows($tbl_prefix .'files', $search_sql); // count the number of results

$start_here = ($page - 1) * $settings['browse_per_page'];
$pages_count = ceil($number_results / $settings['browse_per_page']);

// Build navigation menu
$txt['nav'] = '';
if ($pages_count > 1) {
    $search_url = $settings['siteurl'] .'/search.php?t='. stripslashes($search_term);
    if (isset($_REQUEST['c']) && is_numeric($_REQUEST['c']))
        $search_url .= '&amp;c='. $_REQUEST['c'];
    
    if ($page > 1)
        $txt['nav'] .= '<a href="'. $search_url .'&amp;p=1">&lt;&lt;</a> <a href="'. $search_url .'&amp;p='. ($page - 1) .'">&lt;</a>';
    for ($page_number = 1; $page_number <= $pages_count; $page_number++) {
        if ($page_number == $page)
            $txt['nav'] .= ' <b>'. $page_number .'</b>';
        else {
            if ($page_number >= $page - 5 && $page_number <= $page + 5)
                $txt['nav'] .= ' <a href="'. $search_url .'&amp;p='. $page_number .'">'. $page_number .'</a>';
            else {
                if ($page_number > $page && $dots_after != true) {
                    $txt['nav'] .= ' ...';
                    $dots_after = true;
                } elseif ($page_number < $page && $dots_before != true) {
                    $txt['nav'] .= ' ...';
                    $dots_before = true;
                }
            }
        }
    }
    if ($page < $pages_count)
        $txt['nav'] .= ' <a href="'. $search_url .'&amp;p='. ($page + 1) .'">&gt;</a> <a href="'. $search_url .'&amp;p='. $pages_count .'">&gt;&gt;</a>';
}

// Get files
$files_query = mysql_query("SELECT fileid, title, description, icon, iconlocation, timesplayed, scores FROM ". $tbl_prefix ."files WHERE ". $search_sql ." ORDER BY dateadded DESC, fileid  DESC LIMIT ". $start_here .", ". $settings['browse_per_page']);

$files = array();
while ($files_row = mysql_fetch_assoc($files_query))
    $files[] = array (
        'id'            =>    $files_row['fileid'],
        'title'            =>    $files_row['title'],
        'url'            =>    fileurl($files_row['fileid'],$files_row['title']),
        'description'    =>    shorten_description($files_row['description'], 80),
        'image'            =>    file_image_url($files_row['icon'], $files_row['iconlocation']),
        'played'        =>    number_format($files_row['timesplayed']),
        'scores'        =>    $files_row['scores']
    );

// small replacement
$lang['results_found'] = str_replace('{$results}', $number_results, $lang['results_found']);
$txt['search_term'] = stripslashes($search_term);

$page_title = $lang['search'];
load_template('search', 1);

?>

będe bardzo wdzięczny jeśli ktoś przybliży mi istote problemu smile.gif
jaslanin
1. używasz jakiegoś systemu szablonów którego nie znam, więc nie wiem jak się należy nim posługiwać

2. ja bym próbował w tym pliku search.php ustawić:

  1. $page_title = '';
  2. $settings['sitename'] = 'tytul ktory chcesz';


zamiast:

  1. $page_title = $lang['search'];
partyboyu
dzięki za pomoc smile.gif
zamiast tego
  1. $page_title = $lang['search'];

wstawiłem tylko to
  1. $page_title = '';

teraz głowna wyswietla sie tak jak powinna jak i podstrony
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.