Skocz do zawartości

Budownaie menu z losowo pobranych plików


Bielack

Rekomendowane odpowiedzi

Witam,

próbuje zbudować swój własny, przyznam - dosyć prymitywny spamik. Mam do dyspozycji katalog z mnóstwem plików *.html o różnych (bardzo różnych) tytułach: raz jest to słowo, innym razem dwa słowa a czasami rząd cyfr i liter.

Zbudowałem sobie prosty szablon, który ma w centralnym miejscu wyświetlać zawartość strony z tego katalogu za pomocą funkcji którą podpatrzyłem na jakiejśc stronie:

<?php
$p = $_GET['p'];

if(!empty($p)) {

if(is_file("pages/$p.php")) include "pages/$p.php";
else echo "<br /><h2>404 błąd!</h2><p>strona nie istnieje</p>"; 
}
elseif(!empty($p)) {

}
else include "pages/start.php";
?>

Teraz kolej na menu - w sidebarze mam listę z linkami w postaci:

<li><a href="index.php?p=woweca3">woweca3</a></li>
<li><a href="index.php?p=1002b">1002b</a></li>
<li><a href="index.php?p=in808">in808</a></li>

Mój problem polega na tym, że nie potrafię zrobić tak, by do tej listy pobierało się losowo powiedzmy 20 pozycji z katalogu z plikami, gdzie link byłby w formacie index.php?p=losowy-plik (bez końcowego rozszerzenia) a anchorem zostawałby tytuł pliku (lub pierwsze 20 znaków tytułu).

Nie wspominam o dynamicznych metatagach, bo to już kompletnie nie wiem jak budować, ale może takie losowo pobierane menu jest sprawą na tyle prostą, że któryś z Kolegów mi pomoże? Będę ogromnie wdzięczny - moja baza nie ma co prawda takiego potencjału jak kopie wiki, ale kto wie jak się będzie indeksować, bo teksty mam raczej unikalne.

pozdrowienia

Dla tych, co lubią zdjęcia planet: Planety i ich zdjęcia, dla tych, co lubią katalogi stron: Podwójny katalog stron. Albo Idź do diabła.

Odnośnik do komentarza
Udostępnij na innych stronach

Dziękuję za sugestie. Chętnie bym się zastosował do Waszych wskazówek, lecz po prostu nie potrafię. Jesli chodzi o kod php, to tylko zaznacz/skopiuj/wklej/zmień na swoje. Aż się sam złoszczę, ale jakoś nauka tego mi nie idzie.

A zanim "wytnę wyrażeniem regularnym to, co mam po znaku =" muszę takie linki stworzyć - z pobranych losowo plików z katalogu. Jak się za to zabrać?

;-)

pozdrowienia

Dla tych, co lubią zdjęcia planet: Planety i ich zdjęcia, dla tych, co lubią katalogi stron: Podwójny katalog stron. Albo Idź do diabła.

Odnośnik do komentarza
Udostępnij na innych stronach

tu też poprawione:

<?php 
$dir='cache'; // bez slash
$handle=opendir($dir);

while (false !== ($file = readdir($handle))) { 
$files[]=$file;
}
shuffle($files);
for($i=0;$i<20;$i++)
{
$plik=$dir.'/'.$files[$i];
$name=substr($files[$i] , '0' , '-5');
$txt=file_get_contents($plik);
$wyrazenie='/<title>([^<]+)<\/title>/i';
preg_match_all((trim($wyrazenie)),$txt, $wynik, PREG_PATTERN_ORDER);
$title=$wynik[1][0];
echo '<li><a href="index.php?p='.$name.'">'.$title.'</a></li>';
} ?>

Nie wiem tylko, o jakich tytułach tych plików mówisz...zrobione jest pod <title>*</title> ?

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

Niestety, nie działa. Localhost pokazuje taki błąd:

Parse error: syntax error, unexpected T_VARIABLE in D:\Homepage\_testy\sidebar.php on line 10

a w linii 10 sidebara jest dokładnie ten fragment;

$handle=opendir($dir);

Załadowałem to na serwer i tam nie pokazuje się błąd, ale po prostu urywa generowanie tuż na początku sidebara. Może coś przeoczyłem? Zmieniłem katalog z

$dir='katalog/'

na

$dir='pages/'

bo tak się nazywa katalog z plikami. Wiadomo, że lokalnie ma wszystkie prawa, na serwerze zdalnym dałem 755 (sugeruję sie tym "opendir").

pozdrowienia

Dla tych, co lubią zdjęcia planet: Planety i ich zdjęcia, dla tych, co lubią katalogi stron: Podwójny katalog stron. Albo Idź do diabła.

Odnośnik do komentarza
Udostępnij na innych stronach

Proszę, sporo błędów było :rotfl: :

<?php 
$dir='cache'; // bez slash
$handle=opendir($dir);

while (false !== ($file = readdir($handle))) { 
$files[]=$file;
}
shuffle($files);
for($i=0;$i<20;$i++)
{
$plik=$dir.'/'.$files[$i];
$name=substr($files[$i] , '0' , '-5');
$txt=file_get_contents($plik);
$wyrazenie='/<title>([^<]+)<\/title>/i';
preg_match_all((trim($wyrazenie)),$txt, $wynik, PREG_PATTERN_ORDER);
$title=$wynik[1][0];
echo '<li><a href="index.php?p='.$name.'">'.$title.'</a></li>';
} ?>

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

O! Panie kolego - działa!

Co prawda pojawia sie niewiedzieć czemu czasami taki zonk:

Warning: file_get_contents(pages/.) [function.file-get-contents]: failed to open stream: Permission denied in D:\Homepage\_testy\sidebar.php on line 20

gdzie linia 20 to:

$txt=file_get_contents($plik);

ale generalnie menu się generuje i jest klikalne. Wspaniale! Idę stawiać spamik, a Ty podeślij na PW link i anchor na jaki mam wystawić podziękowania na pajmon.com ;-)

pozdrowienia

Dla tych, co lubią zdjęcia planet: Planety i ich zdjęcia, dla tych, co lubią katalogi stron: Podwójny katalog stron. Albo Idź do diabła.

Odnośnik do komentarza
Udostępnij na innych stronach

Pw poszło :) Tutaj powinno być już bez błędu :

<?php 
$dir='cache'; // bez slash
$handle=opendir($dir);

while (false !== ($file = readdir($handle))) { 
if ($file != "." && $file != "..") $files[]=$file;
}
shuffle($files);
for($i=0;$i<20;$i++)
{
$plik=$dir.'/'.$files[$i];
$name=substr($files[$i] , '0' , '-5');
$txt=file_get_contents($plik);
$wyrazenie='/<title>([^<]+)<\/title>/i';
preg_match_all((trim($wyrazenie)),$txt, $wynik, PREG_PATTERN_ORDER);
$title=$wynik[1][0];
echo '<li><a href="index.php?p='.$name.'">'.$title.'</a></li>';
} ?>

logo-stat4seo-blue-small.png

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności