Menu in html ed effetto con php

Forum dedicato alla programmazione.

Moderatore: Staff

Regole del forum
1) Citare in modo preciso il linguaggio di programmazione usato.
2) Se possibile portare un esempio del risultato atteso.
3) Leggere attentamente le risposte ricevute.
4) Scrivere i messaggi con il colore di default, evitare altri colori.
5) Scrivere in Italiano o in Inglese, se possibile grammaticalmente corretto, evitate stili di scrittura poco chiari, quindi nessuna abbreviazione tipo telegramma o scrittura stile SMS o CHAT.
6) Appena registrati è consigliato presentarsi nel forum dedicato.

La non osservanza delle regole porta a provvedimenti di vari tipo da parte dello staff, in particolare la non osservanza della regola 5 porta alla cancellazione del post e alla segnalazione dell'utente. In caso di recidività l'utente rischia il ban temporaneo.
Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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...

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Menu in html ed effetto con php

Messaggio 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.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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:

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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. :)

Avatar utente
nuitari
Linux 3.x
Linux 3.x
Messaggi: 777
Iscritto il: dom 14 ott 2007, 12:51
Slackware: 12.0
Località: San Colombano al Lambro
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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..

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Menu in html ed effetto con php

Messaggio 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.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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

sir_alex
Linux 3.x
Linux 3.x
Messaggi: 735
Iscritto il: lun 21 mar 2005, 0:00
Kernel: 2.6.35-22
Desktop: KDE4
Distribuzione: Ubuntu
Località: Milano - Corbola (RO)
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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!

samiel
Staff
Staff
Messaggi: 5511
Iscritto il: ven 16 gen 2004, 0:00
Nome Cognome: Mauro Sacchetto
Slackware: 13.0
Kernel: 2.26
Desktop: KDE
Distribuzione: anche Debian
Località: Venezia

Re: Menu in html ed effetto con php

Messaggio 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.

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Menu in html ed effetto con php

Messaggio da aschenaz »

Ecco qua: http://www.slacky.eu/wikislack/index.ph ... plice_Sito 8)

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

Avatar utente
conraid
Staff
Staff
Messaggi: 13630
Iscritto il: gio 14 lug 2005, 0:00
Nome Cognome: Corrado Franco
Slackware: current64
Desktop: kde
Località: Livorno
Contatta:

Re: Menu in html ed effetto con php

Messaggio 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

Avatar utente
aschenaz
Staff
Staff
Messaggi: 4623
Iscritto il: mer 28 lug 2004, 0:00
Nome Cognome: Nino
Slackware: current
Kernel: 5.4.x
Desktop: KDE
Località: Reggio Calabria
Contatta:

Re: Menu in html ed effetto con php

Messaggio da aschenaz »

Accetto il suggerimento e correggo subito... :)

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

Rispondi