- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- menu dinamico con css
-
menu dinamico con css
ciao
poco tempo fa ho creato un sito web in php......
questo sito aveva un menu dinamico che a seconda della pagina in cui mi trovavo mi dava un menu con formatazione diversa.....
cioè se ero sulla pagina contatti solo quel bottone diventava rosso mentre gli altri restavano normali.Ecco il codice:
$array_menu = array( "chi-siamo.php" => "CHI SIAMO", "galleria.php" => "GALLERIA", "ultime-novita.php" => "NOVITA'", "new-antiques.php" => "TRENDY", "ordina.php" => "ORDINA", "contatti.php" => "CONTATTI", "blog.php" => "BLOG", "faq.php" => "F.A.Q.", "ARTISTIC-antiques-art-collectibles" => "SU EBAY", ); $pagina_visualizzata = basename($_SERVER['PHP_SELF']); echo "<ul id=\"navlist\">"; while(list($url, $label) = each($array_menu)) { if ($url == $pagina_visualizzata){ $stile = "part"; } else { $stile = "attivo"; } echo " <li class=\"$stile\"> <a href=\"$url\">$label</a> </li> "; } echo "</ul>"; ```adesso mi trovo a dover ricompilare il progetto con visual studio. Vorrei sapere se qualcuno mi può aiutare nella compilazione di questo menù......perche non riesco a venirne fuori.... I dati del menu sono presi da database, dove ho indicato in una tabella......numero di visualizzazione, nome visualizzato, collegamento html lo richiamo tramite store procedure che mi riporta l'ordine con cui deve essere visulizato.
Private Function RicTesti(ByVal RiferimentoPagina As String, ByVal RiferimentoLingua As String) As DataTableCollection
Dim da As New OleDb.OleDbDataAdapter
Dim ds As New DataSet
Try
Dim testCMD As OleDb.OleDbCommand = New OleDb.OleDbCommand("RicercaTesti", objdb)
testCMD.CommandType = CommandType.StoredProcedureDim param1 As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.Char, 3) param1.Direction = ParameterDirection.Input Dim param2 As OleDb.OleDbParameter = testCMD.Parameters.Add("001", OleDb.OleDbType.Char, 3) param1.Direction = ParameterDirection.Input param1.Value = RiferimentoPagina param2.Value = RiferimentoLingua da.SelectCommand = testCMD da.Fill(ds, "Articoli") Catch ex As Exception End Try Return ds.Tables End Function
Private Sub Bind(ByVal dtArticoli As DataTable) For Each row As DataRow In dtArticoli.Rows Dim lt As Literal = CType(Panel1.FindControl(Trim(row("CodiceCampo").ToString())), Literal) If Not (lt Is Nothing) Then lt.Text = row("Prompt").ToString() End If Next End Sub Private Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then Dim dt As DataTableCollection dt = RicTesti("001", "001") Bind(dt(0)) End If End Sub
:confused: Adesso come faccio a diversificarlo a seconda della pagina in cui mi trovo????? Posso inserire il menù nella master page???? Ed in questo caso come faccio ad eseguire il controllo?? Lo devo inserire in ogni pagina indicando in qualche modo in che pagina mi trovo??? AIUTO.................. :dhò: :dhò: :dhò: Sono bloccata, confusa, e non so come scrivere quella funzione.
-
Puoi avere il nome della pagina con Request.ServerVariables("URL")
-
grazie della risposta...........ma non sò come usarlo...
provo a spiegarmi meglio sperando che qualche anima pia mi aiuti........Ho creato dui stili css:
#navlist ul { margin-left: 0; padding-left: 0; white-space: nowrap; font-weight: bold; } li.attivo { display:inline; list-style-type:none; } li.attivo a { padding: 3px 10px; } li.attivo a:link, li.attivo a:visited { color:#730400; background-color:#E7C35A; text-decoration:none; } li.attivo a:hover { color:#E7C35A; background-color:#FF0000; text-decoration:none; } li.part { display:inline; list-style-type:none; } li.part a{ padding: 3px 10px; } li.part a:link, li.part a:visited { color:#730400; background-color:#FF0000; text-decoration:none; } li.part a:hover { color:#730400; background-color:#FF0000; text-decoration:none; }
a video questo è il codice che viene stampato adesso:
<ul id="navlist"> <li class="part"> <a href="chi-siamo.php">CHI SIAMO</a> </li> <li class="attivo"> <a href="galleria.php">GALLERIA</a> </li> <li class="attivo"> <a href="ultime-novita.php">NOVITA'</a> </li> <li class="attivo"> <a href="new-antiques.php">TRENDY</a> </li> <li class="attivo"> <a href="ordina.php">ORDINA</a> </li> <li class="attivo"> <a href="contatti.php">CONTATTI</a> </li> <li class="attivo"> <a href="blog.php">BLOG</a> </li> <li class="attivo"> <a href="faq.php">F.A.Q.</a> </li> <li class="attivo"> <a href="<A href="://stores.ebay.it/xxxxxxx-antiques-art-collectibles">SU">xxxxxxxxxxxx">SU EBAY</a> </li> </ul></div>
Come vedete viene stampato un nome diverso a seconda della pagina in cui mi trovo.....
Dovrei fare lo stesso con asp.net e Vb.
Ho scritto questo codice ma mi manca la parte dove inserisco che se il nome della pagina è uguale alla pagina in cui mi trovo stampa a video lo stile css=attivo
altrimenti stampa lo stile css=partcodice:
Private Function RicMenu(ByVal RiferimentoPagina As String, ByVal RiferimentoLingua As String) As DataTableCollection Dim da As New OleDbDataAdapter Dim ds As New DataSet Try Dim strsql As String = "SELECT Collegamento, Titolo, css FROM MENU1 Where codicevisualizzazione=1 ORDER BY Codice" da = New OleDbDataAdapter(strsql, objdb2) da.Fill(ds, "menu1") Catch ex As Exception End Try Return ds.Tables End Function
e qui mi sono bloccata!!!!!!!! Sono sicura che questa parte non è giusta
Private Sub Bind(ByVal dtMenu1 As DataTable) For Each row As DataRow In dtMenu1.Rows Dim lt As Literal = CType(Panel1.FindControl(Trim(row("CodiceCampo").ToString())), Literal) Dim LinkNavigateUrl As HyperLink = New HyperLink() If Not (lt Is Nothing) Then LinkNavigateUrl = HyperLink.Equals() End If Next End Sub
Qualcuno mi può aiutare non sono molto brava con Vb e asp.net, ho iniziato da poco
-
Dove va fatto il confronto tra la pagina corrente e quella nel db per scrivere il css?
PS: LinkNavigateUrl = HyperLink.Equals() che vuol dire?
-
PS: LinkNavigateUrl = HyperLink.Equals() che vuol dire?
me l'ho postato un utente.......dovrebbe prendere la pagina corrente ???
Ma non lo sò usare......Il confronto lo devo ancora scrivere....è qui che mi sono bloccata.
Ho preso i dati dal dabase, poi gli ho inseriti in una tabella.....e adesso pensavo fosse qui che devo scrivere in codice dei collegamentiPrivate Sub Bind(ByVal dtMenu1 As DataTable) For Each row As DataRow In dtMenu1.Rows Dim lt As Literal = CType(Panel1.FindControl(Trim(row("CodiceCampo").ToString())), Literal) Dim LinkNavigateUrl As HyperLink = New HyperLink() If Not (lt Is Nothing) Then LinkNavigateUrl = HyperLink.Equals() End If Next End Sub
ma non riesco a buttarlo giù.
Il menu è inserito nella Master Page, e le pagine sono all'interno di un "
Content"
Ce nè uno solo nella parte centrale della pagina.poi richiamo qui :
PrivateSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load IfNot IsPostBack Then Dim dt As DataTableCollection dt = RicMenu() Bind(dt(0)) EndIf EndSub
ma anche qui c'è un errore "dt = RicMenu()" perchè nella funzione originale era richiamato con una store perocedurwe il menu, che passava quei parametri
-
Per avere la pagina corrente devi fare Context.Request.Url.AbsolutePath
-
ho provato ma non la riconosce come funzione valida
uso VB per programmare
-
se provi HttpContext.Current.Request....??
-
Ho fatto qualcosa.............ma mi manca ancora una funzione.....e naturalmente un occhio da voi se il tutto potrebbe funzionare.
master page
PrivateFunction RicMenu(ByVal RiferimentoPagina AsString, ByVal RiferimentoLingua AsString) As DataTableCollectionDim da AsNew OleDbDataAdapterDim ds AsNew DataSetTryDim strsql AsString = "SELECT Collegamento, Titolo,css FROM MENU1 Where codicevisualizzazione=1 ORDER BY Codice"da = New OleDbDataAdapter(strsql, objdb2)da.Fill(ds, "menu1")Catch ex As ExceptionEndTryReturn ds.TablesEndFunction PrivateSub Bind(ByVal dtmenu1 As DataTable)ForEach row As DataRow In dtmenu1.RowsDim lt As Literal = CType(Panel1.FindControl(Trim(row("Collegamento").ToString())), HtmlWindow.Url)IfNot (lt IsNothing) Thenrow("collegamento") = String.Format(" <li class=""part""><a href=""{0}"">{2}</a></li>", row("Collegamento").ToString().Trim(), row("Titolo").ToString().Trim()) Elserow("collegamento") = String.Format("<li class=""attivo""><a href=""{0}"">{2}</a></li>", row("Collegamento").ToString().Trim(), row("Titolo").ToString().Trim())EndIfNextEndSub Dim lt As Literal = CType(Panel1.FindControl(Trim(row("Collegamento").ToString())), HtmlWindow.Url)
Non funziona perchè non è la funzione corretta......
dovrei dirgli che vada a controllare il nome della pagina che se uguale al nome del colegamento stampi una classe altrimenti un'altra...Poi nella pagina devo inserire un controllo che riporti alla Master Page il mone della pagina......
Dim ctr As Control = Master.FindControl("btnHome") If Not ctr Is Nothing Then End If
come faccio ?????? Quella qui sopra non funziona è sicuramente sbagliata !!!!