Poslao: 20 Nov 2009 23:54
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
pre nego sto nastavim moram da naglasim da google ne moze da mi pomogne oko ovog problema (a ni ja bas ne umem da postavim pitanje).
Odlucio sam da napisem jednu prostu php skriptu medjutim ja nemam iskustva u tome (ovo je lepsi nacin da kazem da nikada nisam izucavao php ). Takodje znam da se najbolje uci kada radis nesto konkretno pa cu to da upotrebim sada .
Malo sam gledao php source fajlove u Drupalu, sNewsu i NanoCmsu i shvatio sam da ce, ono sto meni treba, biti lako uraditi ali mi treba pomoc.
Evo sta sam zamislio:
1. Da kreiram jednu php skriptu i da ona obavlja kompletan posao. Ime skripte neka bude "php-txt-reader.php".
2. "php-txt-reader.php" skripta bi sadrzala sledece mogucnosti:
-da proveri "config.php" fajl koji bi sadrzao ime sajta, meta tagove i sl. Prazne promenljive bi se menjale podrazumevanim vrednostima i sadrzajem. Unutar "config.php" fajla bi se nalazile provere za promenljive.
-mogucnost da skenira "txt-source" direktorijum (i da me obavesti ako isti ne postoji) i nadje sve *.txt fajlove (i samo *.txt fajlove). Bitno je naglasiti da se pretraga za "*.txt" fajlovima vrsi rekurzivno tj. nebitno je da li je fajl unutar "txt-source/" ili "txt-source/txt/projekti/info" direktorijuma. To automatski znaci da, ako postoje 2 fajla istog imena, nam treba funkcija koja ce da izbaci u html body poruku da postoji konflikt buduci da su nadjena 2 fajla istog imena. Obratite paznju da bi ova provera nastala samo kada se klikne na link zato sto bi provera u realnom vremenu (u pozadini) konstantno crpila protok.
-da nadjene txt fajlove ubaci u "index.php" kao body sajta. "index.txt" je fajl koji mora postojati! Ubacivanje fajlova se vrsi na zahtev stoga bi "index.txt" bio default (mada bih dodao opciju da to mogu da menjam). Za ostale "*.txt" fajlove bi se kreirali dinamicni linkovi poput "index.php?s=XXX" (primer: "projekti.txt" fajl ce dobiti svoj link u obliku "index.php?s=projekti"). Kada se klikne na neki od ovako definisanih linkova <body> samog "index.php" fajla se dinamicno menja i ucitava se zeljena strana. Ukoliko se unese link koji ne postoji (primer: "index.php?s=page" je adresa kojui je korisnik uneo ali ona zapravno ne postoji) onda se automatski redirectuje na stranu koju ja odredjujem u "config.php". Naglasavam da bih da izbegnem previse upita kako bih ustedeo svaki kb protoka na sajtu.
-da se ime nadjenog fajla lepo formatira kako bih mogao da ga koristim unutar <title></title> html tagova.
Drugim recima (sumirano i sa poentom): kada ja kliknem na "index.php?s=projekti" link skripta ce da proveri postoji li "txt-source/projekti.txt". Ukoliko postoji, taj fajl postaje body unutar "index.php" strane. Ukoliko ne postoji skripta ucitava default sadrzaj ("index.txt"). Dakle, provera se vrsi samo na klik i to samo ako je link, na koji smo kliknuli, oblika "index.php?s=XXX".
Svaki *.txt fajl bi sadrzao html sadrzaj strane.
Naglasicu da me optimizacija za search endzine ne interesuje stoga mi je nebitan format linkova (drugim rcima: bez "friendly" linkova)! Sa dizajnerske tacke gledista ovo je glupa izjava (i ja sam svestan toga) medjutim ako pravim sajt koji nema cilj da sadrzi blog niti vise od 2-3 strane, gde bih morao da obratim paznju na linkove, onda je SEO optimizacija nebitna. Ako na sajtu imam samo 5 tekstova onda ne moram da ih "razbacujem" po linkovima tipa "/2009/12/21/mala-nocna-muzika" ili "2009/April/index.php?page=mala-nocna-muzika"!
Elem, evo sta sam ja uradio do sada:
index.php strana (mada ovo moze i da bude index.html zar ne?):
<?php
include('txt-source/php-txt-reader.php');
include_once('txt-source/php-txt-reader-config.php');
?>
... html header, meta tagovi i ostali xhtml elementi...
<body>
<!-- izlazne informacije php skripte -->
<?php $html_body(); ?>
</body>
...dno i ostatak xhml koda
To je zapravo sve sto se tice "index.php" strane (preteglio sam se od rada ).
Vidim da u nekim skriptama se nalaze definisane funkcije (poput "html_body") koje se ukljucuju u samu php skriptu pa me zanima koja je bolja varijanta? Da se ukljuci sama skripta u index.php (da umesto "<?php $html_body(); ?>" stoji "<?php include('php-txt-reader.php'); ?>" ili da ukljucim neku funkciju iz glavne php skripte koja ce da obavlja posao sredivanja svega sto se nalazi unutar <body></body> tagova?
Samu php skriptu jos nisam poceo da radim medjutim imam vec ideju kako bi ona izgledala:
<?php
// Ukljucivanje error reportinga (uzeto iz sNews-a 1.7)
error_reporting(E_ALL ^ E_NOTICE);
// Dir pretraga
function dir_search() {
$path = '$txt_path';
blah blah blah;
}
// funkcija koja ce da menja sadrzaj unutar "index.php" strane
function html_body() {
echo $dir_search_output;
}
?>
dir_search funkcija bi imala zadatak da pretrazi direktorijum i da proveri postoje li (prvo) "index.txt" (pa nakon toga) ostali "*.txt" fajlovi. Ako je sve ok onda se "index.txt" ubacuje kao index strana sajta dok su svi ostali fajlovi na "cekanju" dok ih "ne pozovemo" klikom na odredjeni link. Takodje bih kreirao posebnu funkciju "404" za izbacivanje gresaka ukoliko trazeni sadrzaj ne postoji (to se lako sredi na serveru dodavanjem linka tipa "index.php?s=404" u .htaccess).
Sama skripta bi trebala da je sto jednostavnija i da najjednostavnije cita *.txt fajlove, primenjuje promenljive definisane unutar "config.php" fajla i nista vise. Izbegao bih sve napredne funkcije i zavrzlame i sto jednostavnije bih to da odradim! Eventualno bih dodao jos 2 mogucnosti:
-selektivno primenjivanje headera i footera tj. mogucnost da se isti ukljuce/iskljuce ako se unutar "*.txt" fajla nadje "okidac" tipa "<?php header("off") ?>".
-da primenim gzip plugin za kompresovanje sadrzaja prikazanog na ekranu. Kontam da je za ovo neophodna podrska samog servera stoga bi postojala provera da li ista i postoji. AKo postoji ukljucimo je, ako ne postoji nista ne menjamo.
Ako imate neke predloge i ideje rado bi ih cuo
Dakle, gde da pocnem? Na sta da obratim paznju?
p.s. Ne trazim gotova resenja. Znam da ja mogu za 1min da instaliram, kompletno i provereno, CMS resenje ali to mi nije cilj. Pored toga, vecina CMS resenja zahteva bazu podataka ali ja bih da ona bude u samim fajlovima cime se totalno gubi potreba za bilo kakvom bazom (mysql, sqlite, postrge ili kako se vec zove). Ovako cu moci da se malo upoznam sa php-om i da uradim nesto prakticno
jos jedan p.s. Ne interesuje me ni da naucim kompletan php kao i da ucim kako da definisem svaku mogucu sitnicu u php-u. Zelim da se upoznam sa istim kroz ovaj projekat (buduci da sam html-om sada vrlo dobro ovladao ovo bi bila sledeca stanica zar ne?)
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 21 Nov 2009 01:11
|
offline
- stankovic
- Prijatelj foruma
- Pridružio: 11 Maj 2005
- Poruke: 871
- Gde živiš: Aleksinac - Niš
|
Ne znam zašto bespotrebno komplikuješ.
Mnogo je lakše da za ovo koristiš bazu. I da kad već počinješ da učiš php (makar to bilo nešto malo), učiš onako kako se radi.
A ovo za ispisivanje sadržaja txt fajlova. Da li bi ti txt fajlovi sadržali html?
Ako pokušavaš da odvojiš php od dizajna, već postoji smarty template engine i nije ništa komplikovano.
|
|
|
|
Poslao: 21 Nov 2009 02:20
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
Ne zelim da koristim bazu. Zeleo bih da probam ovo sa php-om zato sto tako mogu da dobijem krace url adrese i mogu sve tekstove da potrpan u jedan direktorijum koji ce da php skripta skenira
|
|
|
|
|
Poslao: 21 Nov 2009 19:29
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
Napisano: 21 Nov 2009 13:27
@igor86
Sadrzao bi HTMl meta podatke, putanju do direktorijuma i sl. Taj fajl sam (delimicno) zavrsio:
<?php
// Direktorijum sa tekstovima
$konfiguracija['base_dir'] = './txt-source';
// Podesavanja vezana za sadrzaj sajta
$konfiguracija['site_name'] = '';
$konfiguracija['xml_encoding'] = '';
$konfiguracija['author'] = '';
$konfiguracija['author_name_lang'] = '';
$konfiguracija['xml_lang'] = '';
$konfiguracija['mc_desc'] = '';
$konfiguracija['mc_keywords'] = '';
$konfiguracija['robot_revisit_days'] = '45';
$konfiguracija['robot_crawl_content'] = 'all';
$konfiguracija['styles_dir'] = '';
?>
Ovo ce da obavalja posao zar ne?
Dopuna: 21 Nov 2009 19:29
uh... Sto mrzim da citam tutorijale...
Elem, malo sam modifikovao "php-txt-reader.php" i evo kako sada izlgeda:
<?php
/* Ukljucivanje error reportinga */
error_reporting(E_ALL ^ E_NOTICE);
// Funkcija za link parse
function link_parse() {
// ovde bi trebala doci petlja za proveru linkova
// Kranji rezultat ide u sledecu promenljivu
//$selected_file = '$txt_path';
}
// Funkcija zaduzena za menjanje samog sadrzaja unutar <body> xhtml tagova
function html_body() {
$selected_file = 'index.txt';
if ($selected_file == undefined)
{
// Ako fajl nije definisan onda trazimo "index.txt"
// Ako "index.txt" ne postoji onda vristimo \o/
if (file_exists($base_dir/index.txt))
{ include('$base_dir/index.txt'); }
else
{ echo '<br /><strong>!! Greska (404):</strong> Doslo je do greske usled ucitavanja zeljenog sadrzaja! <br /> info: <code><em>index.txt</em> ne postoji</code>'; }
}
else
{ // Ako fajl jeste definisan proveravamo ga kako bi videli da li postoji
if (file_exists($selected_file))
{ include('$base_dir/$selected_file.txt'); }
else
{ echo '<br /><strong>!! Greska:</strong> Doslo je do greske usled ucitavanja zeljenog sadrzaja! <br /> info: <code>greska 404 (sadrzaj ne postoji)</code>'; }
}
}
?>
Kako izgleda za sada? Petlja, unutar "html_body()", je prilicno jednostavna pa ne verujem da ce tu biti problema. Na mom racunaru funkcionise
btw vidim da postoji prebuilt "empty()" funkcija ali nju ne bih da koristim. Stavise, ne bih da koristim ni "file_exists()" zato sto sam navikao da sam definisem sve unutar skripti (citaj: ne volim bas prebuilt funkcije). To ce biti zamenjeno (ako postoji alternativa uopste).
|
|
|
|
Poslao: 22 Nov 2009 19:31
|
offline
- igor86
- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
Kao sto je @stankovic rekao najbolje ti je da koristis neki template engine, uglavnom napravio sam ti ovo sto si trazio, mada moras biti precizniji za sta bi se sve koristio od cega sama slozenost zavisi.
https://www.mycity.rs/must-login.png
|
|
|
|
|
Poslao: 23 Nov 2009 02:10
|
offline
- igor86
- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
pa u sustini najbolje da pogledas code koji sam ti poslao, uglavnom ako nije zadan page smatra se da je po defaultu index, mislim uci/radi/mjenjaj kako tebi odgovara
|
|
|
|
Poslao: 23 Nov 2009 02:43
|
offline
- nulti.korisnik
- Legendarni građanin
- Pridružio: 20 Feb 2005
- Poruke: 4505
- Gde živiš: planeta Zemlja
|
ok. evo sta je ispravljeno:
$this -> _page = $_GET[$this->_conf->page_param] ? $_GET[$this->_conf->page_param] : 'index'; [red 19]
u
$this->_page = isset($_GET[$this->_conf->page_param])? $_GET[$this->_conf->page_param] : 'index';
sada radi.
|
|
|
|
|