Sistema a template per CMS in ASP.Net

martedì 01 maggio 2007 - 23.37

Carmine Profilo | Junior Member

Salve a tutti,
Sto realizzando in ASP.Net un semplice CMS per la creazione automatica dei
siti di presentazione di società, attività commerciali ecc...
Tutto ok finchè si tratta di un normale sito a template singolo.
Il problema è però questo: come faccio in modo che l' utente possa
selezionare il template (e anche creare un template apposito) che più gli
aggrada?
Non ho la minima idea di dove cominciare...
Vorrei fare una cosa simile ad esempio a WordPress, dotNetNuke ecc...

Qual'è il metodo più semplice, veloce e versatile per fare ciò?

Bye,

P.s.: Il CMS non è nulla di eccezzionale, a parte il pannello di controllo
non fa uso di sessioni, moduli ecc... e non fa altro che stampare dei dati
presi da un db SQLServer in delle label, gestire le varie immagini/pagine
ecc... Una sorta di CMS "simil-sito-statico" insomma.


Webmaster di thetotalsite.it
Blog: blog.thetotalsite.it
La nuova community: forum.thetotalsite.it

Brainkiller Profilo | Guru

>siti di presentazione di società, attività commerciali ecc...
>Tutto ok finchè si tratta di un normale sito a template singolo.
>Il problema è però questo: come faccio in modo che l' utente
>possa selezionare il template (e anche creare un template apposito)
>che più gli aggrada?

Beh il nostro sistema Blogs (http://blogs.dotnethell.it/) funziona in questa maniera infatti puoi vedere blog come i seguenti:
http://blogs.dotnethell.it/david/
http://blogs.dotnethell.it/ester/
http://blogs.dotnethell.it/lorenzo/
ognuno con il suo Skin/Template.

Il lavoro è facile quando si vuole mantenere la struttura del sito (telaio) diventa invece un po' più complicato quando si vogliono cambiare posizione dei moduli, div, ecc.
Ancor di più lo è se vuoi addirittura far creare all'utente un template apposito.

Se si tratta di cambiare semplicemente, font, colori, ecc. è sufficiente creare molteplici file CSS, se come detto poco fa devi cambiare tutta la struttura, non si può fare completamente in automatico ma puoi craere tu manualmente o il cliente una nuova master page.

Le master pages immagino tu sappia cosa sono, sono il sistema usato da ASP.NET 2.0 per fare siti che derivino da una pagina principale (master), quando si vuole cambiare struttura al sito, si modifica la master page e automaticamente tutto il sito riflette le modifiche.
ciao


David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Carmine Profilo | Junior Member


>Ancor di più lo è se vuoi addirittura far creare all'utente un
>template apposito.

Emh ecco è proprio questo che voglio fare...
Ad esempio usando cose tipo che tu scrivi {$variabile_uno} nell' html normale e quando carica il template al posto di quel codice ci mette ad esempio una label...

>il cliente una
>nuova master page.

Emh si... però mi sembra un pò esagerato... cioè... e se il cliente non ha nemmeno idea di cosa sia asp.net ne tantomeno le master page?

Webmaster di thetotalsite.it
Blog: blog.thetotalsite.it
La nuova community: forum.thetotalsite.it

Brainkiller Profilo | Guru

>Emh ecco è proprio questo che voglio fare...
>Ad esempio usando cose tipo che tu scrivi {$variabile_uno} nell'
>html normale e quando carica il template al posto di quel codice
>ci mette ad esempio una label...

Beh allora in ogni caso puoi creare una master page generica e piazzare qua e là dei ContentPlaceHolder o delle Label. Poi puoi creare una sola pagina .aspx (per esempio default.aspx) e in base all'ID passato esempio (default.aspx?ID=4) vai a caricare i contenuti presi dal database dell'ID 4 e li carichi nei ContentPlaceHolder o nelle Label. Per recuperare i riferimenti delle Label puoi usare Page.FindControl(id_della_label)

>Emh si... però mi sembra un pò esagerato... cioè... e se il cliente
>non ha nemmeno idea di cosa sia asp.net ne tantomeno le master
>page?

Appunto tu fai il sistema e glielo vendi, e poi gli vendi anche la tua consulenza
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Carmine Profilo | Junior Member

>Beh allora in ogni caso puoi creare una master page generica
>e piazzare qua e là dei ContentPlaceHolder o delle Label. Poi
>puoi creare una sola pagina .aspx (per esempio default.aspx)
>e in base all'ID passato esempio (default.aspx?ID=4) vai a caricare
>i contenuti presi dal database dell'ID 4 e li carichi nei ContentPlaceHolder
>o nelle Label. Per recuperare i riferimenti delle Label puoi
>usare Page.FindControl(id_della_label)

Argh... ma è una tragedia...

>Appunto tu fai il sistema e glielo vendi, e poi gli vendi anche
>la tua consulenza

in effetti...
però poi la piattaforma nn risulterà tanto flessibile...



Webmaster di thetotalsite.it
Blog: blog.thetotalsite.it
La nuova community: forum.thetotalsite.it

Brainkiller Profilo | Guru

>però poi la piattaforma nn risulterà tanto flessibile...

Eh beh, puoi vendergli la piattaforma a un prezzo basso e poi le personalizzazioni a parte.
Se è completamente gestibile dal cliente gli fai un prezzo decisamente più alto.
E' normale... + limiti + il prezzo è basso... meno limiti e più si alza.
Comunque ti assicuro, nonostante tutto, ogni cliente poi ha sempre bisogno di un po' di consulenza.

Una terza opzione potrebbe essere quella di creare dinamicamente pagine statiche .htm/.html però questa strategia mal si sposa se devi caricare contenuti dinamici per esempio una ricerca nel sito.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Carmine Profilo | Junior Member


>Se è completamente gestibile dal cliente gli fai un prezzo decisamente
>più alto.

Eh appunto... è proprio questo che vorrei fare...
In modo che i clienti più "esperti" possono modificarlo da loro, senza però dover avere addirittura visual studio per creare le master page...
Ovvio che poi per quelli che invece vogliono una cosa "installa e dimentica" ci fornirò la consulenza.
Però mi piacerebbe che ad esempio uno si può gestire cosa e dove deve apparire, ad esempio se sono + numeri di telefono, oppure pagine in più ecc... una cosa modulare insomma.
Webmaster di thetotalsite.it
Blog: blog.thetotalsite.it
La nuova community: forum.thetotalsite.it

Brainkiller Profilo | Guru

>Però mi piacerebbe che ad esempio uno si può gestire cosa e dove
>deve apparire, ad esempio se sono + numeri di telefono, oppure
>pagine in più ecc... una cosa modulare insomma.

Eh eh, beh ti ho già detto tutto. Per avere più pagine è sufficiente che usi una sola pagina e gli passi un ID. Con quell'ID vai a recuperare i contenuti da visualizzare in quella pagina dal database.
Dovrai creare un'interfaccia al cliente per creare nuove pagine (nuovi ID) e aggiornare i contenuti.

Per le skins/temi è sufficiente cambiare i CSS con nuovi stili oppure anche qui puoi far generare gli stili al volo nella pagina e farli creare al cliente sempre tramite una tua interfaccia. Invece che linkare un CSS esterno li renderizzi nella pagina direttamente.

L'unico limite a tutto ciò è la struttura della pagina ossia se fai un template a 3 colonne sarà sempre a 3 colonne. Se vuoi usare + pagine con formati diversi tipo 2 colonne, 3 colonne, ecc. crei pagine .html ma così ti perdi i contenuti dinamici, diversamente ti devi creare un'interfaccia per creare master pages nuove (non c'è bisogno di VSNET, la master page è un file di testo). Cmq. questa ultima opzione è ben più complicata di tutto il resto (che non è comunque uno scherzo come realizzazione).
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5