Strona 1 z 1

Cięcie tekstu na stronie

: sob paź 25, 2008 9:50 pm
autor: Prochol
Mam taki problem, a mianowicie z strony webinside.pl ściągnąłem skrypt do cięcia tekstu na stronie www:
Cięcie tekstu na stronie
Umieszczenie długiego tekstu na stronie WWW bywa kłopotliwe. Strona nie wygląda wtedy najlepiej, zniechęca do czytania, rozjeżdża się. Można oczywiście podzielić tekst na podstrony, ale nie jest to zadanie łatwe ani optymalne.

Jarosław Kordys

Ręczne wstawianie odnośników czy poprawianie tekstu w wielu dokumentach html jest pracą syzyfową i skutkuje wieloma błędami. Dysponując kontem obsługującym technologię php możemy łatwo zautomatyzować budowę takiego serwisu.
Podany kod jest szablonem do budowy strony, realizującym kilka zadań. Wyświetla treść w zależności od wywołanej zmiennej. Konwertuje znaki w treści z CP na ISO, dzięki czemu można używać dowolnego edytora przy zmianie treści. Dzieli treść zawartą w zmiennych tekstowych na słowa i wyświetla ich określoną ilość (określoną zmienną $limit). Dynamicznie buduje menu nawigacyjne umożliwiające dostęp do dalszej części tekstu.

Utworzenie takiej strony krok po kroku:
1 Utwórz szablon strony w HTML (index.php)

2 W miejscu w którym ma się pojawiać tekst wstaw polecenie ‘include('tresc.php');’

3 Linki w menu mają mieć postać <a href="index.php? tresc=home">home</a> <a href="index.php?tresc=strona1"> strona1</a> <a href="index.php?tresc=strona2"> strona2</a> <a href="index.php?tresc=strona3"> strona3</a>

4 Utwórz plik 'tresc.php'

5 Do niego wklej tekst szablonu.


<?
$limit|=100; //tu musisz ustawic limit słów na stronie (empiria najlepszym doradcą) ;)

/*to są zmienne przechowujące tekst strony. Po jednej na podstrone. Mogą zawierać proste tagi <br> <ul> <b> itp. Oczywiście można je wsadzić do osobnego pliku i includować go jak w pkt.2*/
$teksthome=" ";
$tekststrona1=" ";
$tekststrona2=" ";
$tekststrona3=" ";

/*ta część odpowiada za sterowanie stroną. Przypisuje zmiennej $całytekst zmienną zawierającą tekst z danej podstrony. Aby powiększyć ilość podstron wystarczy wstawić następne if($tresc==strona1) $ calytekst =$tekststrona1;else{“ poprawić numerek w zmiennej $tekststrona1; i dostawić jeden nawias zamykający w oznaczonym miejscu*/

if($tresc==home) $calytekst=$teksthome;else{
if($tresc==strona1) $calytekst =$tekststrona1; else{
if($tresc== strona2) $calytekst =$tekststrona2;else{
if($tresc==strona3) $calytekst=$tekststrona3;
//if($tresc==strona1) $ calytekst =$tekststrona1;else{ //Ten tekst dostaw tyle razy ile podstron wiecej potrzebujesz
else {$calytekst=$teksthome;}}}} /* Tu dostaw jeden nawias dla każdej dodatkowej podstrony*/
echo"<br />";

//Dalej już jest prosto
$calytekst = strtr($calytekst, "\xA5\x8C\x8F\xB9\x9C\x9F", "\xA1\xA6\xAC\xB1\xB6\xBC"); //konwersja znaków zapisanych w CP na ISO

$page|=0; //jak page nie ma wartości to ma się równać 0
$tablica=array(); //stwórz tablicę
$tablica=split ('[ ]',$calytekst); /*tablica zawiera słowa z calytekst separatorem słów jest pojedyncza spacja. Dobrze będzie jak tekst będzie porządnie sformatowany */
$ilosc=sizeof($tablica); //ilość slow w tablicy

// wyświetla kolejne elementy tablicy słów aż do osiągnięcia limitu
for($z=$page*$limit;$z<($page+1)*$limit;$z++)
{
echo"$tablica[$z] ";
}
echo"<br> <br>";

//sterowanie linkami zaczerpnięte z forum webinside.pl, autorstwa swierszczyka, lekko przerobione
if ($ilosc > $limit) {
if (($ilosc%$limit) != 0) $l_stron = 1; else $l_stron = 0;
$pomoc = (int)($ilosc/$limit);
$l_stron = ($l_stron+$pomoc)-1;
if ($page >= 1) {
$pomoc = $page-1;
print "<a href=index.php?tresc=$tresc&page=$pomoc>poprzednia</a>\n";
}
$i=0;
while ($i <= $l_stron) {
if ($page == $i)
print " | <b>$i</b>\n";
else
print " | <a href=index.php?tresc=$tresc&page=$i>$i</a>\n";
$i++;
}
if ($page < $l_stron) {
$pomoc = $page+1;
print " | <a href=index.php?tresc=$tresc&page=$pomoc>następna</a>\n";
}
}?>

Wklejono z <http://www.webinside.pl/php/tutoriale/27>

Trochę mi to nie działa jak to jest opisane. Może jest w tym skrypcie jakiś błąd.
Czy ktoś mógłby zerknąć i sprawdzić czy nie ma tam jakiegoś błędu???

Re: Cięcie tekstu na stronie

: sob paź 25, 2008 11:01 pm
autor: Arathill
Nie jestem pewien czy to będzie ten błąd.. bo nie spotkałem się nigdy z takim zapisem:
$limit|=100;

to jest poprawne? nie powinno być $limit = 100; ?
(taka sama sytuacja jest z $page). Jakkolwiek używaj też tych normalnych znaczników php czyli
<?php

?>
bo tym skróconym nie ufam..

Re: Cięcie tekstu na stronie

: czw paź 30, 2008 4:59 pm
autor: Prochol
:( poprawiłem tak jak było napisane lecz skrypt dalej nie działa. Nie przełącza mi na strona 1,strona 2, Strona3 Coś jest nie tak.
Rozumiem że tekst wpisuję między cudzysłów:
teksthome=" ";
$tekststrona1=" ";
$tekststrona2=" ";
$tekststrona3=" ";
?>[/php]

Re: Cięcie tekstu na stronie

: sob lis 01, 2008 3:50 pm
autor: Prochol
czy ktoś wie jak to rozpracować ?? :?:

Re: Cięcie tekstu na stronie

: wt lis 04, 2008 3:15 pm
autor: Prochol
:( pomocy czy ktoś odpowie :?:

Re: Cięcie tekstu na stronie

: czw lis 06, 2008 5:40 pm
autor: Prochol
Dlaczego nikt nie odpowiada :?:

Re: Cięcie tekstu na stronie

: pt lis 07, 2008 12:21 pm
autor: SzamanGN
Sprawdź takie rozwiązanie:

1 Utwórz szablon strony w HTML (index.php)
Np.:
[php]
<html>
<head>
</head>
<body>
<div>Logo</div>
<?php
include('menu.php');
$plik=$_GET['tresc'].'.php'; //Ustalenie pliku z zawartością strony. $_GET['treść'] zawiera dane przesłane przez link MENU.
if (is_file($plik)) //Sprawdzenie czy jest to prawidłowy wybór (z linku MENU)
include($plik); //Prawidłowy więc ładujemy zawartość strony.
else
include('start.php'); //Nieprawidłowa wartość więc załadujemy zawartość domyślną (startową).
?>
</body>
</html>
[/php]

2 Utwórz plik menu.php
[php]<?php
$linki=array('treść1'=>'menu1','treść2'=>'menu2','przyklad'=>'Przykładowy link'); //Przykład: treść1=start, menu1=Start
echo '<div>';
foreach($linki as $key => $value)
{
echo '<a href="index.php?tresc='.$key.'">'.$value.'</a>';
if ($key>0) echo ' | ';//To jest tylko separator linków.
unset($key,$value);
}
echo '</div>';
?>[/php]

3 Przykładowy plik z zawartością strony:
przyklad.php
[php]<?php
echo '<div>Dzisiaj jest '.$date('d-m-Y').'</div>';
?>[/php]

Re: Cięcie tekstu na stronie

: ndz lis 09, 2008 8:19 pm
autor: Prochol
Znalazłem coś takiego w necie i działa i o takie coś mi chodziło
Zawartość pliku index.php

Kod php:

<?php
$page = isset($_GET['page']) ? $_GET['page'] : 1; //Strona
$wszystkie_dane=file_get_contents('dane.txt'); //Nazwa pliku z danymi
$dane=explode('*****', $wszystkie_dane); // w jaki sposób ma rodzielać plik na kilka części; w tym przypadku to "*****"
$all = count($dane); // liczy ile jest stron z zanymi
echo "$dane[$page]"; // Wyświetla dane na stronie
$npage = $page+1 ; // Następna strona >
$ppage = $page-1 ; // Poprzednia strona
$max = $all-2 ; // Ilość stron (nie wiem dla czego ale zawsze musze odejmować 2 aby uzyskać realną ilość stron)
//
// ZABEZPIECZENIA:
//
if ($page <= 0 || $page > $max){ // Jeżeli strona jest mniejsza od zera lub większa od maximum to
echo "Nie ma takiej strony!"; // wyświetla to
}
if ($max > 1){ // jezeli jest więcej niż jedna strona to
if ($page == 1) { // sprawdz czy jest równa 1
echo "<a href='index.php?page=$npage'>Następna strona</a>"; // i wyświetl następną strone
}else { // inaczej
if ($page == $max){ // sprawdź czy jest równa max
echo "<a href='index.php?page=$ppage'>Poprzednia strona</a>"; // i wyświetl poprzednią strone
} else { // jeszcze raz inaczej :-)
echo "<a href='index.php?page=$ppage'>Poprzednia strona</a>"; // wyświetl na jednej stronie
echo "<a href='index.php?page=$npage'>Następna strona</a>"; // link do przodu i do tylu ;-)
}
} // i zamykamy wszystkie instrukcje ;-)
}
?>
Czy skrypt jest poprawnie napisany? I co możnabyłoby zmienić?

Re: Cięcie tekstu na stronie

: ndz lis 09, 2008 10:58 pm
autor: Prochol
Acha jeszcze jedno. Jak zrobić aby :

Poprzednia strona nie była przyklejona do Następna strona :?:
Ma to związek z tą częścią kodu:
echo "<a href='index.php?page=$ppage'>Poprzednia strona</a>"; // wyświetl na jednej stronie
echo "<a href='index.php?page=$npage'>Następna strona</a>"; // link do przodu i do tylu
a wychodzi to tak:
[manual]Poprzednia stronaNastępna strona[/manual]
Chciałbym przesunąć napis Następna strona np. o 200px