radziowie
18.11.2010, 12:03:02
Mam taki problem. Otóż mam parę podstron. Chciałbym aby dla każdej był inny tytuł. Mam tak:
- strone główną (index.php)
- nowości (newsy.php)
- instrukcje (instrukcje.php)
- ...
I tak chciałbym, aby gdy np. wejdę na instrukcje (czyli stronę .../instrukcje.php) To w tytule będę miał <title>Instrukcje</title>.
Szukałem trochę i znalazłem
http://www.kess.snug.pl/?sid=10&pid=23
Jednak jak widzimy tytuł pobierany jest ze strony index.php?go=... Co zrobić aby można było zastosować skrypt do moich potrzeb? Po prostu chciałbym aby na podstawie nazwy strony przypisywał tytuł.
lDoran
18.11.2010, 12:08:26
function setTitle($title) {
echo '<titile>' . $title . '</title>'; }
<?php
setTitle('tytul strony');
?>
To skąd będziesz pobierać tytuł zależy od Ciebie(np. sprawdzając nazwę pliku .php)
bismak
18.11.2010, 12:09:27
Jeśli masz strony na include to możesz włożyć instrukcje switch tam gdzie będzie tytuł.
radziowie
18.11.2010, 12:18:25
Chcę stworzyć stronę tytuly.php. Czyli:
<?php
Chcę stworzyć stronę tytuly.php. Czyli:
<?php
srodek => 'glowna',
instrukcje => 'instrukcje111'
);
?>
Czyli tak jak napisałem chciałbym, aby na podstawie załadowanej strony czytał nazwe. Przypuśćmy, że jesteśmy na instrukcje.php to nazwa=instrukcje, czyli sprawdza w tablicy i podaje podany mu tytuł czyli instrukcje 111
lDoran
18.11.2010, 12:47:10
Nie rozumiem czego oczekujesz, gotowego skryptu, czy pomocy w jego wykonaniu. Jeżeli pomocy to daj kod, który napisałeś, natomiast przy gotowym skrypcie pomyliłeś działy.
radziowie
18.11.2010, 12:55:38
to tak tworze tablice i podaje ją do tytuly.php jak już opisałem wcześniej.
Teraz przechodzę do strony meta.php (jednej z części głównej, znajduje się na każdej stronie). I teraz piszę:
<?php
$go=$GET['go'];
if ($go=='' || $go='index')
{
$go='Strona główna';
}
else
{
include('./folder/tytuly.php');
}
/// potem <html><meta ....
<title
><? echo $tytul[$go] ?> ...
Na razie tyyle, bo to może zadziałać dla strony głównej a nie wiem do końca jak się odwołać odpowiednio do tablicy w tytuly.php.
ADeM
18.11.2010, 13:13:20
Odwołuj się tak jak teraz, tylko zmień strukturę tablicy:
'strona' => 'tytul strony',
'strona druga' => 'drugi tytul'
);
radziowie
18.11.2010, 13:29:18
To jak jestem na stronie strona druga.php to jak to on będzie pobierał tą wartość?
bo chyba nie muszę dal każdego robić
if ($go='druga strona')
{
$go='Strona druga';
}
...
Czy jednak tak muszę?
lDoran
18.11.2010, 13:32:03
Funkcja sprawdzająca tytuł:
function getTitle($sIndex) {
$aTitles = array('tytul1', 'tytul2', ...); $iRecords = count($aTitles); for($i = 0; $i < $iRecords; $i++) {
if($aTitles[$i] == $sIndex;) {
return $aTitles[$i];
} else {
return 'Domyślny tytuł';
}
}
}
$title = getTitle($_GET['title']);
echo '<title>' . $title . '</title>';
ADeM
18.11.2010, 13:32:29
Po pierwsze: masz błąd. "if ($go=='' || $go='index')" zamień na "if ($go=='' || $go=='index')"
Tak samo używaj gdzie indziej. Operator porównania to "==", a nie "=".
W tablicy zamiast strona/strona druga wpisz po prostu wartości $go.
EDIT:
~IDoran: bez sensu ta funkcja. Zwraca to samo co przyjmuje, chyba, że nie znajdzie tego w tablicy.
radziowie
18.11.2010, 13:42:09
1. Co do adem się zgadzam co do "==" i "=". Moja wina.
2. [quote]W tablicy zamiast strona/strona druga wpisz po prostu wartości $go.[/guote}
Nie rozumiem, gdzie to chcesz wstawić.
3. Idoran czy możesz wytłumaczyć jak działa ta funkcja? Jak ona może być zastosowana w moim przypadku?
ADeM
18.11.2010, 13:50:39
Zrób tablicę, której indeksy będą wszystkimi wartościami zmiennej $go jakie mogą wystąpić, a wartościami niech będą tytuły.
radziowie
18.11.2010, 14:07:50
NIe rozumiem tego:
[guote]Zrób tablicę, której indeksy będą wszystkimi wartościami zmiennej $go[/guote}
to jak mają wygladać
$go['glowna] => 'strona glowna',,
$go['strona druga'] => ' blabla' ...
?
ADeM
18.11.2010, 14:13:20
Ech -.-'
Dokładnie tak jak napisałem wcześniej:
'WARTOSC ZMIENNEJ $GO DLA STRONY PIERWSZEJ' => 'tytul pierwszej strony',
'WARTOSC ZMIENNEJ $GO DLA DRUGIEJ STRONY' => 'tytul drugiej strony',
);
Nie wiem jakie $go może mieć wartości, bo tego nie napisałeś.
radziowie
18.11.2010, 14:23:09
No to już napisałem wcześniej
'strona' => 'tytul strony',
'strona_druga' => 'drugi tytul'
);
Czyli zmienna może być strona (od nazw strony głównej czyli strona.php lub strona_druga (od nazwy podstrony strona_druga.php)
ADeM
18.11.2010, 14:28:25
No to z czym masz jeszcze jakiś problem?
radziowie
18.11.2010, 14:33:22
Z tym żeby wyjąć zmianną, czyli nazwe pliku. Przyjmijmy, że jesteśmy na strona_druga.php to on wyciąga "strona_druga", sprawdza tablicę i jeśli tam jest to wyciąga z niej tytuł, czyli wartość $go.
ADeM
18.11.2010, 14:38:32
Poddaje się...
Co to jest w takim razie $go, gdzie to definiujesz, i jaką ma wartość.
Zobacz też co zawiera tablica $_SERVER.
radziowie
18.11.2010, 14:50:57
Może, źle się wyraziłem. Zacznę od początku. Mam kod:
<?php
$go=$GET['go'];
if ($go=='' || $go='index')
{
$go='Strona główna';
}
else
{
include('./folder/tytuly.php');
}
/// potem <html><meta ....
<title
><? echo $tytul[$go] ?>
Może mam ten kod trochę pokręcony. Mamy zmienną $go która pobiera (przynajmniej powinna pobierać) nazwy strony na której jesteśmy. W przypadku gdy jesteśmy na stronie głównej index.php to wyświetla Strona główna jak widać w powyższym kodzie. Problem w tym, że nie wiem dokładnie jak pobrać zmienną $go z nazwy pliku a następnie porównać ją z naszą tablicą. Mam nadzieję, ze teraz trochę zrozumialej napisałem.
lDoran
18.11.2010, 15:03:05
Co Ty przekazujesz w zmiennej $go?
Porter3
18.11.2010, 17:36:06
Chodzi Ci chyba o coś takiego :
tytuly.php
Kod
<?php
$tytul = array (
glowna => 'Strona Główna',
muzyka => 'Podstrona o muzyce',
download => 'Pobieralnia plików',
);
?>
potem w index.php (W menu musisz posiadać coś takiego: <a href="index.php?go=glowna lub muzyka lub download> i includowac odp. strony-glowna.php, muzyka.php itd.)
Kod
<?php
$go = $_GET['go'];
include("./include/tytuly.php");
...
<head>
<title><? echo $tytul[$go] ?></title> // jeśli będzie np. $tytul[glowna], to tytuł będzie 'Strona Główna', bo pobiera z wcześniej zrobionej tablicy tytułów.
?>
Jeśli się mylę, proszę poprawić.
To jest tylko schemat postępowania
radziowie
19.11.2010, 13:13:01
Tzn. jeśli chodzi o ten adres index.php?go=glowna to wim, że będzie pobierać wartości z tablicy
A ja mam pytanie czy da się to tak zrobić, aby wyciągał adres z www.jakasdomena.pl/index.php (tytuł=Strona główna) lub www.jakasdomena.pl/strona.php (tytuł=podstrona)?
ADeM
19.11.2010, 13:26:23
Da się. Zainteresuj się tym co zawiera tablica $_SERVER.
radziowie
19.11.2010, 13:51:16
To znalazłem coś na tema t na stronie:
Kod
http://funkcje.net/view/3/1786/
PHP_SELF - Plik w którym aktualnie wykonywany jest skrypt
Ale teraz się zastanawiam jak z tego zabrać tylko nazwe pliku, czyli dla www.jakasstrona.pl/index.php wyciągnął "index"
ADeM
19.11.2010, 13:55:22
$_SERVER[ 'SCRIPT_NAME' ]
radziowie
19.11.2010, 14:21:08
tylko, że akurat script_name podaje nazwa_katalogu/glowna.php jeśli wejdę na glowna.php. A jak wyciągnąć tylko "glowna"? Podobnie działa również tablica php_self
Ja używam web_serva jak serw i w moim przypadku podaje /~strona/glowna.php
ADeM
19.11.2010, 14:28:29
Chociażby explode(), str_replace()...
nekomata
19.11.2010, 15:08:06
a nie mozesz czegos takiego zrobic?
if(isset($_REQUEST['strona])){ switch($_REQUEST['strona'])
{
case 'podstrona2':
$title = "podstrona2";
include('header.html
'); // tu bys mial mete i $title include('podstrona2.html');
break;
case "podstrona3":
$title = "podstrona3";
include('header.html
'); // tu bys mial mete i $title include('podstrona3.html');
break;
case "podstrona4":
$title = "podstrona4";
include('header.html
'); // tu bys mial mete i $title include('podstrona4.html');
break;
}
}
else{
$title = "Strona Glowna";
include('header.html
'); // tu bys mial mete i $title include('glowna.html');
}
include('stopka.html');// tym sposobem stopka jest do każdej podstrony
to zapiszesz jako index.php i resztę stron w osobno dajesz osobno i includujesz.
radziowie
19.11.2010, 17:16:15
Stworzyłem taki kod:
// string do rozdzielenia
$title=$_SERVER['PHP_SELF'];
echo ''.$title.'<br /><br />'; // wykorzystanie funkcji explode, wg przecinka
$title_ciag = explode("/", $title); $tytul=explode(".", $title_ciag[2
]);
Problem w tym, że on wyłania tylko z katalogu głównego a z podkatalogu już jest źle. Podejrzewam także, że gdy wrzucę to na serwer to też może być problem.
Zastanawiam się jeszcze nad zastosowaniem preg_match. I tak stworzyłem kod. Ale wydaje mi się, ze są krótsze i łatwiejsze sposoby.
// string do rozdzielenia
$title=$_SERVER['PHP_SELF'];
echo ''.$title.'<br /><br />';
// konstrukcja wyrażenia regularnego
$wyrazenie = '/index//glowna/';
// preg_match() sprawdza występowanie wyrażenia w ciągu
{
$tytul='Strona główna';
}
else
{
$tytul='Inna strona';
}
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.