6

Questa domanda è in riferimento al mio previous question. In base alle mie esigenze, ho apportato alcune correzioni al mio database, ma non sono ancora sicuro di come creare sottomenu (che devono essere creati da un'altra tabella anziché dalla tabella principale pg_Pages.Progettazione database per considerazione e suggerimento di siti Web (CMS) per menu basati su database

Conservo informazioni sulla pagina in pg_Pages da dove posso creare i miei menu. Il mio problema è che posso facilmente creare sottomenu per "Chi siamo" e "Multimedia" dal momento che li memorizzo nella tabella pg_Pages, ma ho bisogno di creare sottomenu per News dal tavolo News Category e li link alla pagina corretta Handler. & Problema da magazine tavolo.

menu Esempio enter image description here

dei dati di campionamento

pg_Pages Table 
PageID PageName LangID PagePositionNo PageURL  PageInheritance 
1 Home  1 10  Default.aspx 0 
2 About Us 1 20  Page.aspx 0 
3 PageOne  1 10  Page.aspx 2 
4 PageTwo  1 20  Page.aspx 2 
5 Multimedia 1 30  Page.aspx 0 
6 Video  1 10  Videos.aspx 5 
7 PhotoGallery 1 20  Gallery.aspx 5 
8 News  1 40  News.aspx 0 
9 Issues  1 50  #  0 
10 Publication 1 60  Page.aspx 0 
11 SpanishHome 2 10  Default.aspx 0 
12 SpanisAbout Us 2 20  Page.aspx 0 
------------------------------------------------------------------------------ 
Magazine 
MagazineID MagazineIssueCode LangID MagazineTitle MagazineLiveIssue(CurrentIssue) 
1  101   1 Mag Title  0 
2  102   1 Mag Title  1 
3  101   2 SpanisgMag Title 0 
4  102   2 Mag Title  1 
------------------------------------------------------------------------------ 

art_Article Table 
ArticleID ArticleTitle ArticleCatID MagazineID Language TYPE 
1  Article one 100  1  1 Artile 
2  Article two 100  1  1 Artile 
3  Article three 200  1  1 Artile 
4  Article four 300  1  1 Artile 
5  Article Five 100  2  1 Artile 
6  EditorMessage 300  2  1 EditorMessage 
7  Article seven 200  2  2 Somthing 
------------------------------------------------------------------------------ 

voglio che il mio progetto per essere sufficientemente flessibile per leggere i menu di tabelle diverse. Quale approccio/modifiche dovrei fare/fare per farlo funzionare correttamente piuttosto che creare una tabella separata per tutti i menu & collegarli alle pagine? Si prega di suggerire l'approccio migliore per questo scenario.

Desidero che il sistema sia molto flessibile e legge le informazioni del menu direttamente dal database anziché creare collegamenti statici e query di attivazione basate su IssueID o qualche altro ID.

News Menu fondamentalmente mostra categorie di articoli, Inoltre ho bisogno di una query che mostrerà solo categorie sotto il menu News che ha articoli per quel particolare problema. Supponiamo che il numero 102 non contenga articoli relativi a Cultura quindi il sottomenu Cultura non dovrebbe apparire sotto le notizie.

+0

io non avrei cercato di modellare un "menu" in un modello di dati. L'unica cosa che farai con le informazioni è visualizzare i menu. Renderai la tua vita molto più semplice se serializzi semplicemente gli oggetti del menu (con json.net per esempio) e li memorizzi. –

+0

@Filip, vuoi dire che dovrei creare una tabella 'Menu' separata con campi come: MenuID, MenuName, PageID ecc. Puoi per cortesia darmi un esempio se ho torto – Learning

+1

Farei un file nella tua applicazione web menu.json e scaricare l'intera struttura in là. –

risposta

3

Il tuo compito è quello di mappare le istanze del tuo sito su istanze di menu. Questo può essere fatto facilmente con View.

Così, ad esempio, creare viewMenu con le seguenti colonne: MenuItemId, MenuItemName, MenuItemLevel, MenuItemParent, MenuItemUrl. Puoi manipolare queste proprietà per creare il tuo menu nel tuo codice. Inoltre è possibile manipolare i dati dalla struttura del database corrente o da qualsiasi struttura futura utilizzando la query SQL che crea la vista iniziale.

Per ora, è possibile che i risultati dell'unione di tre query diverse per le tre tabelle. In futuro è possibile aggiungere funzionalità al menu cambiando vista. Oltre ad aggiungere nuovi elementi al tuo menu quando aggiungi nuove tabelle al tuo database.

4

Per un CMS generico dovrebbe esserci una tabella Menu separata e una tabella MenuItems correlata.

Ci possono essere diversi tipi di menu - top/menù principale, interno del menu a sinistra, sito piè di pagina ecc ... li si dovrebbe definire nella tabella dei menu.

quanto deve avere una ricorsiva MenuItems tavolo che può avere un numero infinito di voci del menu secondario.

tabella dei menu dovrebbe almeno avere queste colonne:

  • MenuID (int)
  • Descrizione (nvarchar (...))
  • CreateDate, CreatedBy, ModifyDate .... - colonne di registrazione ...
tavolo

MenuItems dovrebbe avere almeno queste colonne:

  • MenuItemID (int)
  • MenuID (int) - relativo al menu ???
  • Didascalia (nvarchar (...))
  • LanguageID (int o qualsiasi altra cosa)
  • ParentMenuItemID (int) per ricorsione
  • Link (nvarchar (...)) tutto ciò che è il collegamento a (pagina, sito esterno, niente, ...). Alla fine tutto deve scendere fino a un collegamento ...
  • IsExternalLink (in genere per i collegamenti esterni potresti disabilitare la scansione SEO e aprirlo in un'altra scheda - Quindi sapere che potrebbe essere buono)
  • SortOrder (int) l'ordine
  • CreateDate, CreatedBy, ModifyDate .... - colonne Logging ...

Speranza che aiuta ...

Problemi correlati