- Home
- Categorie
- Coding e Sistemistica
- PHP
- Configurazione Pannello di GESTIONE NEWS
-
Ho optato per Article Manager ,per il mio pannello di gestione News,dato che non utilizza un server Mysql e ciò potrebbe semplificarmi di molto la vita..
Le istruzioni le cito qui in basso:
- Modify config.php, t_summary.html and t_article.html files if necessary
- Create a folder for articles and php files and make it writable (chmod a+rw).
- Ready to run
Mi trovo un tantino in difficoltà col file template.inc (che riporto sempre in basso),in più non ho capito molto del secondo passaggio.
<?php /* * Session Management for PHP3 * * (C) Copyright 1999-2000 NetUSE GmbH * Kristian Koehntopp * * $Id: template.inc,v 1.5 2000/07/12 18:22:35 kk Exp $ * */ class Template { var $classname = "Template"; /* if set, echo assignments */ var $debug = false; /* $file[handle] = "filename"; */ var $file = array(); /* relative filenames are relative to this pathname */ var $root = ""; /* $varkeys[key] = "key"; $varvals[key] = "value"; */ var $varkeys = array(); var $varvals = array(); /* "remove" => remove undefined variables * "comment" => replace undefined variables with comments * "keep" => keep undefined variables */ var $unknowns = "remove"; /* "yes" => halt, "report" => report error, continue, "no" => ignore error quietly */ var $halt_on_error = "yes"; /* last error message is retained here */ var $last_error = ""; /***************************************************************************/ /* public: Constructor. * root: template directory. * unknowns: how to handle unknown variables. */ function Template($root = ".", $unknowns = "remove") { $this->set_root($root); $this->set_unknowns($unknowns); } /* public: setroot(pathname $root) * root: new template directory. */ function set_root($root) { if (!is_dir($root)) { $this->halt("set_root: $root is not a directory."); return false; } $this->root = $root; return true; } /* public: set_unknowns(enum $unknowns) * unknowns: "remove", "comment", "keep" * */ function set_unknowns($unknowns = "keep") { $this->unknowns = $unknowns; } /* public: set_file(array $filelist) * filelist: array of handle, filename pairs. * * public: set_file(string $handle, string $filename) * handle: handle for a filename, * filename: name of template file */ function set_file($handle, $filename = "") { if (!is_array($handle)) { if ($filename == "") { $this->halt("set_file: For handle $handle filename is empty."); return false; } $this->file[$handle] = $this->filename($filename); } else { reset($handle); while(list($h, $f) = each($handle)) { $this->file = $this->filename($f); } } } /* public: set_block(string $parent, string $handle, string $name = "") * extract the template $handle from $parent, * place variable {$name} instead. */ function set_block($parent, $handle, $name = "") { if (!$this->loadfile($parent)) { $this->halt("subst: unable to load $parent."); return false; } if ($name == "") $name = $handle; $str = $this->get_var($parent); $reg = "/<!--\s+BEGIN $handle\s+-->(.*)\n\s*<!--\s+END $handle\s+-->/sm"; preg_match_all($reg, $str, $m); $str = preg_replace($reg, "{" . "$name}", $str); $this->set_var($handle, $m[1][0]); $this->set_var($parent, $str); } /* public: set_var(array $values) * values: array of variable name, value pairs. * * public: set_var(string $varname, string $value) * varname: name of a variable that is to be defined * value: value of that variable */ function set_var($varname, $value = "") { if (!is_array($varname)) { if (!empty($varname)) if ($this->debug) print "scalar: set *$varname* to *$value*<br>\n"; $this->varkeys[$varname] = "/".$this->varname($varname)."/"; $this->varvals[$varname] = $value; } else { reset($varname); while(list($k, $v) = each($varname)) { if (!empty($k)) if ($this->debug) print "array: set *$k* to *$v*<br>\n"; $this->varkeys[$k] = "/".$this->varname($k)."/"; $this->varvals[$k] = $v; } } } /* public: subst(string $handle) * handle: handle of template where variables are to be substituted. */ function subst($handle) { if (!$this->loadfile($handle)) { $this->halt("subst: unable to load $handle."); return false; } $str = $this->get_var($handle); $str = @preg_replace($this->varkeys, $this->varvals, $str); return $str; } /* public: psubst(string $handle) * handle: handle of template where variables are to be substituted. */ function psubst($handle) { print $this->subst($handle); return false; } /* public: parse(string $target, string $handle, boolean append) * public: parse(string $target, array $handle, boolean append) * target: handle of variable to generate * handle: handle of template to substitute * append: append to target handle */ function parse($target, $handle, $append = false) { if (!is_array($handle)) { $str = $this->subst($handle); if ($append) { $this->set_var($target, $this->get_var($target) . $str); } else { $this->set_var($target, $str); } } else { reset($handle); while(list($i, $h) = each($handle)) { $str = $this->subst($h); $this->set_var($target, $str); } } return $str; } function pparse($target, $handle, $append = false) { print $this->parse($target, $handle, $append); return false; } /* public: get_vars() */ function get_vars() { reset($this->varkeys); while(list($k, $v) = each($this->varkeys)) { $result[$k] = $this->varvals[$k]; } return $result; } /* public: get_var(string varname) * varname: name of variable. * * public: get_var(array varname) * varname: array of variable names */ function get_var($varname) { if (!is_array($varname)) { return $this->varvals[$varname]; } else { reset($varname); while(list($k, $v) = each($varname)) { $result[$k] = $this->varvals[$k]; } return $result; } } /* public: get_undefined($handle) * handle: handle of a template. */ function get_undefined($handle) { if (!$this->loadfile($handle)) { $this->halt("get_undefined: unable to load $handle."); return false; } preg_match_all("/\{([^}]+)\}/", $this->get_var($handle), $m); $m = $m[1]; if (!is_array($m)) return false; reset($m); while(list($k, $v) = each($m)) { if (!isset($this->varkeys[$v])) $result[$v] = $v; } if (count($result)) return $result; else return false; } /* public: finish(string $str) * str: string to finish. */ function finish($str) { switch ($this->unknowns) { case "keep": break; case "remove": $str = preg_replace('/{[^ \t\r\n}]+}/', "", $str); break; case "comment": $str = preg_replace('/{([^ \t\r\n}]+)}/', "<!-- Template $handle: Variable \\1 undefined -->", $str); break; } return $str; } /* public: p(string $varname) * varname: name of variable to print. */ function p($varname) { print $this->finish($this->get_var($varname)); } /* Added by Aytekin function pvalue($varname) { return $this->finish($this->get_var($varname)); } function get($varname) { return $this->finish($this->get_var($varname)); } /***************************************************************************/ /* private: filename($filename) * filename: name to be completed. */ function filename($filename) { if (substr($filename, 0, 1) != "/") { $filename = $this->root."/".$filename; } if (!file_exists($filename)) $this->halt("filename: file $filename does not exist."); return $filename; } /* private: varname($varname) * varname: name of a replacement variable to be protected. */ function varname($varname) { return preg_quote("{".$varname."}"); } /* private: loadfile(string $handle) * handle: load file defined by handle, if it is not loaded yet. */ function loadfile($handle) { if (isset($this->varkeys[$handle]) and !empty($this->varvals[$handle])) return true; if (!isset($this->file[$handle])) { $this->halt("loadfile: $handle is not a valid handle."); return false; } $filename = $this->file[$handle]; $str = implode("", @file($filename)); if (empty($str)) { $this->halt("loadfile: While loading $handle, $filename does not exist or is empty."); return false; } $this->set_var($handle, $str); return true; } /***************************************************************************/ /* public: halt(string $msg) * msg: error message to show. */ function halt($msg) { $this->last_error = $msg; if ($this->halt_on_error != "no") $this->haltmsg($msg); if ($this->halt_on_error == "yes") die("<b>Halted.</b>"); return false; } /* public, override: haltmsg($msg) * msg: error message to show. */ function haltmsg($msg) { printf("<b>Template Error:</b> %s<br>\n", $msg); } } ?>
Come posso agire su questo codice?
Vi prego ,datemi una mano..
-
template.inc non devi modificarlo.
il punto 2 c'è scritto che devi dargli i permessi 777 al file, ma su windows non hai questa possibilità tranne che metterla nella cartella public. se sei su linux fai tasto destro=>proprietà=>e metti 777
-
Intendi rinominare in "public" la cartella in cui sono contenuti i componenti del programma (script, pagine php e htm)? Altrimenti, perdona la mia ignoranza. Cmq, si, ho Windows.
-
su aruba c'è una cartella chiamata Public devi metterli li i files per forza
-
Ti ringrazio! Provo subito...
-
Funziona alla perfezione, grazie
-
prego
-
Vorrei sapere come faccio ad aggiungere manualmente dal php (oltre al titolo il corpo e la data) 2 nuove righe all'articolo..
Ci ho provato,ma con qualche intoppo..
Pannello Originale , Pannello ModificatoQui riporto i codici del file news.php (originale)
<html> <body bgcolor=yellow> <basefont size=2 face=arial> <b>Add Article</b> <? include ("template.inc"); include ("config.php"); $summary_template = "t_summary.html"; $article_template = "t_article.html"; $max_summary = 5; function summary_page ($subject, $date, $summary, $article_id) { global $summary_template; $t = new Template(); $t->set_file("SummaryPage", $summary_template); $article_url = "article_".$article_id.".html"; $date = nl2br($date); $summary = nl2br($summary); $t->set_var( array( "subject" => $subject, "date" => $date, "summary" => $summary, "article_url" => $article_url )); $t->parse("Summary", "SummaryPage"); return $t->get_var("Summary"); } function main_page ($subject, $date, $summary, $article_id, $body) { global $article_template; $t = new Template(); $t->set_file("ArticlePage", $article_template); $article_url = "article_".$article_id.".html"; $date = nl2br($date); $summary = nl2br($summary); $body = nl2br($body); $t->set_var( array( "subject" => $subject, "date" => $date, "summary" => $summary, "body" => $body, "article_url" => $article_url )); $t->parse("Article", "ArticlePage"); return $t->get_var("Article"); } function add_article($filename, $news) { if(file_exists($filename)){ $fh = fopen($filename, "r"); $old_news = fread($fh, filesize($filename)); fclose($fh); } /* TODO: Multipage articles preg_match_all("<!--ARTICLE PAGE=(\d*)-->", $old_news, $matches; if( count($matches[0]) >= $max_summary){ $oldfilename = $filename.($matches[0][0]+1); } */ $fh = fopen($filename, "w"); $news = stripslashes($news); fwrite($fh, "\n<!--ARTICLE-->\n$news $old_news"); fclose($fh); } ?> <? if(strcmp($subject, "")){ if(!(strcmp($passwd, $password))){ add_article("article_summary.html", summary_page($subject, $date, $summary, $article_id)); add_article("article_$article_id.html", main_page($subject, $date, $summary, $article_id, $body)); echo "<p> Article has been added! <p>"; }else{ echo "<p><b> Password is wrong! </b>"; } } ?> <form action=news.php method=post> <table border=0> <tr> <td> (Password): </td><td> <input type=text name=passwd size=30> </td></tr> <tr> <td> Subject: </td><td> <input type=text name=subject size=30> </td></tr> <tr> <td> Article ID: </td><td> <input type=text name=article_id value=<? echo date("Y_m_j_is"); ?> size=30> </td></tr> <tr> <td> Date/Author/etc: </td><td> <textarea name=date rows=2 cols=30 wrap=soft><? echo date("M j, Y\n"); ?>Author: </textarea> </td></tr> <tr> <td> Summary: </td><td> <textarea name=summary rows=5 cols=30 wrap=soft></textarea> </td></tr> <tr> <td> Body: </td><td> <textarea name=body rows=15 cols=30></textarea> </td></tr> </table> <input type=submit name=submit value=Add> </form> <p> <a href=source.php?f=news.php>Source</a>
Qui riporto i codici del file news.php (modificato)
<html> <body bgcolor=yellow> <basefont size=2 face=arial> <b>Add Article</b> <? include ("template.inc"); include ("config.php"); $summary_template = "t_summary.html"; $article_template = "t_article.html"; $max_summary = 5; function summary_page ($article_id, $subject, $summary, $preview) { global $summary_template; $t = new Template(); $t->set_file("SummaryPage", $summary_template); $article_url = "article_".$article_id.".html"; $summary = nl2br($summary); $preview = nl2br($preview); $t->set_var( array( "subject" => $subject, "summary" => $summary, "preview" => $preview, "article_url" => $article_url )); $t->parse("Summary", "SummaryPage"); return $t->get_var("Summary"); } function main_page ($subject, $date, $preview, $banner, $summary, $article_id, $body) { global $article_template; $t = new Template(); $t->set_file("ArticlePage", $article_template); $article_url = "article_".$article_id.".html"; $date = nl2br($date); $preview = nl2br($preview); $banner = nl2br($banner); $summary = nl2br($summary); $body = nl2br($body); $t->set_var( array( "subject" => $subject, "date" => $date, "preview" => $preview, "banner" => $banner, "summary" => $summary, "body" => $body, "article_url" => $article_url )); $t->parse("Article", "ArticlePage"); return $t->get_var("Article"); } function add_article($filename, $news) { if(file_exists($filename)){ $fh = fopen($filename, "r"); $old_news = fread($fh, filesize($filename)); fclose($fh); } /* TODO: Multipage articles preg_match_all("<!--ARTICLE PAGE=(\d*)-->", $old_news, $matches; if( count($matches[0]) >= $max_summary){ $oldfilename = $filename.($matches[0][0]+1); } */ $fh = fopen($filename, "w"); $news = stripslashes($news); fwrite($fh, "\n<!--ARTICLE-->\n$news $old_news"); fclose($fh); } ?> <? if(strcmp($subject, "")){ if(!(strcmp($passwd, $password))){ add_article("article_summary.html", summary_page($subject, $date, $preview, $banner, $summary, $article_id, $body)); add_article("article_$article_id.html", main_page($subject, $date, $preview, $banner, $summary, $article_id, $body)); echo "<p> Il tuo articolo è stato aggiunto con successo! <p>"; }else{ echo "<p><b> I dati inseriti non sono corretti. Perfavore inserisci nuovamente la password. </b>"; } } ?> <form action=news.php method=post> <table border=0> <tr> <td> Password: </td><td> <input type=password name=passwd size=30> </td></tr> <tr> <td> Titolo: </td><td> <input type=text name=subject size=30> </td></tr> <tr> <td> Article ID: </td><td> <input type=text name=article_id value=<? echo date("Y_m_j_is"); ?> size=30> </td></tr> <tr> <td> Data/Autore: </td><td> <textarea name=date rows=2 cols=30 wrap=soft>di <b>SCRIVI IL TUO NOME</b>, <? echo date("M j, Y\n"); ?> </textarea> </td></tr> <tr> <td> Immagine anteprima (42x42): </td><td> <input type=text name=preview size=30></td></tr> <tr> <td> Immagine articolo (498x80): </td><td> <input type=text name=banner size=30></td></tr> <tr> <td> Sintesi: </td><td> <textarea name=summary rows=5 cols=30 wrap=soft></textarea> </td></tr> <tr> <td> Corpo: </td><td> <textarea name=body rows=15 cols=30></textarea> </td></tr> </table> <input type=submit name=submit value=Add> </form> <p> <a href=source.php?f=news.php>Source</a>
Le nuove aggiunte che vorrei fare sono $preview, $banner
Un Grazie anticipato..!
-
ma banner e preview devono essere aggiunte da parte dell'utente? cioè da parte di chi le inserisce le carica dal suo computer?
-
Possibilmente si..Ma per il momento potrei accontentarmi di far inserire un URL dell'immagine
-
Up!
-
dopo 5 ore già un up? per il tuo script bisogna guardarci dietro e ora io non ho tempo...
-
Il fatto è che ne avevo bisogno per la fine della settimana per questo ho "Uppato"..Ciò non vuole essere sintomo di impazienza,temevo solo che il topic venisse sepolto..
Se tu non puoi intervenire subito è ovvio che non fa niente..
(ad ogni modo,sorry)
-
Alla fine ho risolto tutto ^.^
Mi servirebbe solo un piccolo accorgimento per il limite di news da impostare nella HomePage:
http://www.giorgiotave.it/forum/php-mysql/50558-vorrei-un-limite-di-news-home.htmlGrazie cmq per l'attenzione dedicata a questo topic