Pagina 5 di 6

Re: Menu in html ed effetto con php

Inviato: gio gen 17, 2008 7:21
da aschenaz
Beh, un file da includere ci vuole!

Lo scopo è quello di mantenere intestazione, menu etc. in tutte le pagine e cambiare solo il contenuto?

Allora i contenuti li devi mettere su file separati e richiamarli col menu...

La index, quindi, rimane sempre la stessa e, nel punto in cui devono apparire i contenuti, inserisci l'include...

Offtopic: Per il nick l'ho spiegato altrove: ninobi mi aveva stufato e non significava nulla; aschenaz (non ashkenaz), anche se mi ha stufato subito pure quello :lol: , lo usavo già in altre community e significa qualcosa...

Re: Menu in html ed effetto con php

Inviato: ven gen 18, 2008 1:14
da samiel
Ok, grazie!
Certo, l'idea di rifare il sito in php va accantonata subito...

Visto che la discussione in questo post è diventata assai dotta,
perché non considerate l'ipotesi (visto che nel forum stanno nascendo
iniziative di wiki sulla programmazione) di scrivere qualcosa
(possibilmente comprensibile) sui siti in php?

M.

Re: Menu in html ed effetto con php

Inviato: ven gen 18, 2008 10:35
da aschenaz
samiel ha scritto:Ok, grazie!
Certo, l'idea di rifare il sito in php va accantonata subito...

Guarda che non ci vuole molto!
E poi, ci guadagni in tempo per le modifiche successive: ad esempio, se devi cambiare una cosa del menu, la cambi una volta e non per n pagine...
Visto che la discussione in questo post è diventata assai dotta,
perché non considerate l'ipotesi (visto che nel forum stanno nascendo
iniziative di wiki sulla programmazione) di scrivere qualcosa
(possibilmente comprensibile) sui siti in php?

Io potrei anche scriverla, ma poi ci penserebbero bene nuitari e conraid a stroncarmela subito! :lol: :lol: :lol:

Re: Menu in html ed effetto con php

Inviato: ven gen 18, 2008 11:23
da conraid
aschenaz ha scritto:Lo scopo è quello di mantenere intestazione, menu etc. in tutte le pagine e cambiare solo il contenuto?

Allora i contenuti li devi mettere su file separati e richiamarli col menu...

La index, quindi, rimane sempre la stessa e, nel punto in cui devono apparire i contenuti, inserisci l'include...


Io sinceramente per una cosa semplice come la sua farei il contrario.
Tante pagine che ora sono in html, fatte invece in php dove da ognuna chiamata header, footer e menù, dove questo è un semplice file html con quelle aggiunte per l'evidenziazione della pagina corrente.
NIente di più. Uno perché non gli serve. Due perché in questo modo può titolare le pagine come vuole e renderle più seo compliance di un index.php che chiama ogni volta un contenuto diverso.

Il tutto IMVHO

Re: Menu in html ed effetto con php

Inviato: ven gen 18, 2008 11:27
da conraid
aschenaz ha scritto:Io potrei anche scriverla, ma poi ci penserebbero bene nuitari e conraid a stroncarmela subito! :lol: :lol: :lol:


Eh certo, siamo qui in attesa ;-)

però dai, dove sono nate discussioni e stroncature, ne sono venuti fuori anche discussioni interessanti.

Re: Menu in html ed effetto con php

Inviato: ven gen 18, 2008 12:04
da aschenaz
conraid ha scritto:
aschenaz ha scritto:Lo scopo è quello di mantenere intestazione, menu etc. in tutte le pagine e cambiare solo il contenuto?

Allora i contenuti li devi mettere su file separati e richiamarli col menu...

La index, quindi, rimane sempre la stessa e, nel punto in cui devono apparire i contenuti, inserisci l'include...


Io sinceramente per una cosa semplice come la sua farei il contrario.
Tante pagine che ora sono in html, fatte invece in php dove da ognuna chiamata header, footer e menù, dove questo è un semplice file html con quelle aggiunte per l'evidenziazione della pagina corrente.
NIente di più. Uno perché non gli serve. Due perché in questo modo può titolare le pagine come vuole e renderle più seo compliance di un index.php che chiama ogni volta un contenuto diverso.

Il tutto IMVHO

Si, anche questa è un'ottima soluzione.

Per un po' l'ho adottata, per poi preferire questa che uso adesso.
Non so perché, ma mi trovo meglio.

E poi, il classico index.php?page=etc.etc. a me non dispiace. :)

Re: Menu in html ed effetto con php

Inviato: ven gen 18, 2008 13:56
da nuitari
Io spesso uso un content manager di questo tipo:

Codice: Seleziona tutto

<?php
require("sources/common.php5");

$content_root = $disk_path . "/contents";

$path_info = $_SERVER['PATH_INFO'];
$query_string = $_SERVER['QUERY_STRING'];
$script_name = $_SERVER['SCRIPT_NAME'];

// normalizzazione dell'url

$path_info = FormsCommon_url_normalize($path_info);
$path_info = FormsCommon_url_stripslashes($path_info);

if (!strlen($path_info) || $path_info == "/")
{
   $path_info = "/index";
   $_SERVER['PATH_INFO'] = $path_info;
}

$is_php = false;

// rileva il file giusto da caricare procedendo con test a ritroso
$tmp = $path_info;
do
{
   if (is_file($content_root . $tmp . ".php5"))
   {
      $path_info = substr($path_info, strlen($tmp));
      $script_name = $tmp . ".php5";
      $is_php = true;
      break;
   }
   elseif (is_file($content_root . $tmp . ".html"))
   {
      $path_info = substr($path_info, strlen($tmp));
      $script_name = $tmp . ".html";
      break;
   }
   if ($tmp == "/index")
      FormsTriggerError("404", E_USER_ERROR, NULL, get_defined_vars());;
   if ($tmp != "/index")
      $tmp = dirname($tmp);
   if ($tmp == "/")
   {
      $tmp = "/index";
      $path_info = "/index" . $path_info;
   }
} while (true);

$oPage = new cFormsPage($site_path, $disk_path, $page_path);
$oPage->title = APP_TITLE;
$oPage->theme = "public";
$oPage->on_load_template = "oPage_on_process_parts";
$oPage->on_load_template_layer = "oPage_on_process_parts";
$oPage->sections["topbar"]["on_load_template"] = "oPage_on_process_parts";
$oPage->sections["navbar"]["on_load_template"] = "oPage_on_process_parts";
$oPage->page_css = array();
$oPage->addCss("agenzia-immobiliare.css", $site_path . "/themes/" . $oPage->theme . "/parsecss.php5/css");

// leggo i settings dal db
$paths = "";
$tmp = $_SERVER['PATH_INFO'];
$tmp = FormsCommon_url_normalize($tmp);
$tmp = FormsCommon_url_stripslashes($tmp);
do
{
   if (strlen($paths))
      $paths .= " OR ";
   $paths .= "path = " . $FormsCommon_db->newToSql(new cFormsData($tmp));
} while($tmp != "/" && $tmp = dirname($tmp));

$sSQL = "SELECT
            *
         FROM
            layout
         WHERE
            " . $paths . "
         ORDER BY
            path DESC
      ";
$FormsCommon_db->query($sSQL);
if ($FormsCommon_db->next_record())
{
   $layer = $FormsCommon_db->getCFormsData("layer")->getValue();
   $topbar = $FormsCommon_db->getCFormsData("topbar")->getValue();
   $navbar = $FormsCommon_db->getCFormsData("navbar")->getValue();
   if (strlen($layer))
      $oPage->layer = $layer;
   if (strlen($topbar))
      $oPage->topbar = $topbar;
   if (strlen($navbar))
      $oPage->navbar = $navbar;
}

if ($is_php)
{
   require($content_root . $script_name);
}
else
{
   $tpl_content = new cTemplate($content_root);
   $tpl_content->load_file($script_name, "main");
   
   $loaded_modules = array();
   
   if (is_array($tpl_content->DVars["main"]) && count($tpl_content->DVars["main"]))
   {
      foreach ($tpl_content->DVars["main"] as $key => $value)
      {
         if ($tmp = preg_match('/\[(\w+)\]/U', $value, $matches))
         {
            if (!isset($loaded_modules[$matches[1]]))
            {
               $tpl_content->set_var($value, include_module($matches[1]));
            }
         }
      }
      reset($tpl_content->DVars["main"]);
   }
   
   $oPage->fixed_pre_content = $tpl_content->rpparse("main", false);
}

$oPage->process();

function include_module($modulename)
{
   global $oPage;
   global $disk_path;
   global $site_path;
   global $page_path;
   
   global $path_info;
   global $query_string;
   global $script_name;
   
   require($disk_path . "/modules/" . $modulename . "/index.php5");
   
   return $out_buffer;
}

function oPage_on_process_parts($oPage, $aTpl)
{
   global $loaded_modules;
   
   $oPage =& $oPage[0];
   $tpl_content =& $aTpl[0];
   
   if (is_array($tpl_content->DVars["main"]) && count($tpl_content->DVars["main"]))
   {
      foreach ($tpl_content->DVars["main"] as $key => $value)
      {
         if ($tmp = preg_match('/\[(\w+)\]/U', $value, $matches))
         {
            if (!isset($loaded_modules[$matches[1]]))
            {
               $tpl_content->set_var($value, include_module($matches[1]));
            }
         }   
      }
      reset($tpl_content->DVars["main"]);
//   FormsTriggerError("DEBUG", E_USER_ERROR, NULL, get_defined_vars());
   }
}
?>


La logica è che file php ed html vengono posizionati tutti dentro /content, accedendo a /content_manager.php5/percorso si ottiene in visualizzazione la pagina indicata, eventualmente passando la restante parte del percorso come parametro path_info.
Il tutto è un po' mischiato al codice del mio framework, ma dovrebbe essere chiaro comunque. Credo..

Re: Menu in html ed effetto con php

Inviato: sab gen 19, 2008 0:22
da samiel
Tante pagine che ora sono in html, fatte invece in php dove da ognuna chiamata header, footer e menù, dove questo è un semplice file html con quelle aggiunte per l'evidenziazione della pagina corrente.

Ma allora dovrei creare tanti header quante sono le voci dei menu
per poter avere l'effetto activelink. Non è altrettanto antieconomico?
Avrebbe senso effettivamente solo sul footer, che no ncambia mai...
O no?

M.

Re: Menu in html ed effetto con php

Inviato: sab gen 19, 2008 9:26
da aschenaz
samiel ha scritto:
Tante pagine che ora sono in html, fatte invece in php dove da ognuna chiamata header, footer e menù, dove questo è un semplice file html con quelle aggiunte per l'evidenziazione della pagina corrente.

Ma allora dovrei creare tanti header quante sono le voci dei menu
per poter avere l'effetto activelink. Non è altrettanto antieconomico?
Avrebbe senso effettivamente solo sul footer, che no ncambia mai...
O no?

M.

:?: :?: :?:

Facciamo una cosa: io, appena ho un po' di tempo ( quando? Ormai non riesco nemmeno a leggere tutti i post del forum... :( ), un mini-tutorial lo comincio a scrivere.

Naturalmente, io farò per come la vedo io e secondo le mie conoscenze (semplice ed essenziale). Gli altri poi, se vogliono, possono dire la loro.

Ciao,
nino

Re: Menu in html ed effetto con php

Inviato: sab gen 19, 2008 12:03
da conraid
samiel ha scritto:
Tante pagine che ora sono in html, fatte invece in php dove da ognuna chiamata header, footer e menù, dove questo è un semplice file html con quelle aggiunte per l'evidenziazione della pagina corrente.

Ma allora dovrei creare tanti header quante sono le voci dei menu
per poter avere l'effetto activelink. Non è altrettanto antieconomico?
Avrebbe senso effettivamente solo sul footer, che no ncambia mai...
O no?


Ma no, usa il codice che ti ho detto all'inizio in menu.php, o anche in header.php stesso.
Se la pagina si accorge di essere quella si attiva. Per questo esiste $_SERVER['PHP_SELF'] che funziona nel modo giusto se segui la strada che dico io.
Se invece fai un index.php che chiama un contenuto quella variabile sarà sempre index.php
Offtopic: Non dare retta ad i newsgroup dove confondono PHP_SELF con __FILE__
Puoi anche inizializzare una variabile ad ogni pagina e poi valutare quella. Le scelte sono molte.
Io sinceramente ti avevo indicato la regep perché più immediati per darti il suggerimento, ma uso l'inizializzazione della variabile

una pagina chisiamo.php sarà così per esempio

Codice: Seleziona tutto

<?php
$pag = 'chisiamo';
include 'header.php';
...
....
?>


e l'header o conterrà:

Codice: Seleziona tutto

...
...
<li><a href='chisiamo.php' <?php if $pag == 'chisiamo' echo 'class="activelink";  ?>>Chi Siamo</a></li>
...
...


Io lo uso anche per cambiare title, description ed altre cose importanti per i motori di ricerca

Re: Menu in html ed effetto con php

Inviato: sab gen 19, 2008 13:13
da sir_alex
giberg ha scritto:Io avevo trovato un codice di esempio in un sito (non conoscendo tantissimo di php) che poi ho modificato per me.

In sostanza c'erano i link con descrizione contenuti in un array. Poi veniva "passata al setaccio" un elemento alla volta dell'array e se il link corrispondeva alla pagina corrente veniva stampato in una maniera, se non corrispondeva veniva stampato in un altra. Per aggiungere nuovi link bastava modificare soltanto l'array aggiungendo la pagina più la descrizione (cioè il testo che poi veniva stampato).

Ora non ho in mano il codice. Appena riesco provo a pulirlo dalle mie modifiche (magari trovo anche quello originale).


Io ho fatto così... sett prox recupero il codice e lo metto!

Re: Menu in html ed effetto con php

Inviato: sab gen 19, 2008 21:42
da samiel
Facciamo una cosa: io, appena ho un po' di tempo ( quando? Ormai non riesco nemmeno a leggere tutti i post del forum... :( ), un mini-tutorial lo comincio a scrivere.

Questa è un'ottima notizia. Mi raccomando, 4 dummies!


M.

Re: Menu in html ed effetto con php

Inviato: dom gen 20, 2008 15:14
da aschenaz
Ecco qua: http://www.slacky.eu/wikislack/index.ph ... plice_Sito 8)

Mi raccomando: forza con le stroncature! :lol: :lol: :lol:

Re: Menu in html ed effetto con php

Inviato: dom gen 20, 2008 15:30
da conraid
aschenaz ha scritto:Ecco qua: http://www.slacky.eu/wikislack/index.ph ... plice_Sito 8)

Mi raccomando: forza con le stroncature! :lol: :lol: :lol:


Codice: Seleziona tutto

echo "blah blah \".... \"blah";


non mi piace

Lo so che hai segnalato, ma quella più usata anche nella documentazione di php e zend è

Codice: Seleziona tutto

echo 'blah blah' . $var . 'blah "...." blah';


mettila anche negli esempi

Per il resto come sai io farei all'opposto di quanto hai indicato, ma mi sembra inutile sia ribadirlo sia starne a discutere

Re: Menu in html ed effetto con php

Inviato: dom gen 20, 2008 15:40
da aschenaz
Accetto il suggerimento e correggo subito... :)

Per quanto riguarda l'opposto, ho accennato che saranno contemplate soluzioni alternative...