none
nuova application.master e default.master

    Domanda

  • ciao,

    ho la necessita di modificare l'aspetto delle nuove site collection che verranno create con una nuova veste grafica delle pagine master.

    Avevo pensato di creare una feature che andrebbe attivata ogni volta che viene creata una nuova site collection che aggiunge una nuova pagina master da utilizzare al posto della default.master. Dovei cambiare anche l'aspetto delle pagine che utilizzano la application.master, ed è qui che sorgono i problemi; cerando ho visto che una soluzione è quella di intercettare la chiamata della pagina con HttpModule e cambiare la application.master con quella nuova.

    Volevo sapere se c'era un'altra soluzione...

    grazie a tutti in anticipo per le risposte 

    martedì 13 marzo 2012 10:27

Risposte

  • Allora la strada che ti consiglio é effettivamente quella del HttpModule.

    Modificare direttamente il file nella cartella layouts (dopo aver fatto backup dei files originali) é comunque una strada possibile per quanto si legge nel seguente articolo di KB
    http://support.microsoft.com/kb/944105/en-us

    ma comunque é qualcosa che non suggerisco per la stragrande maggioranza dei casi

    HTH


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    martedì 13 marzo 2012 12:49
  • Ok, quindi parliamo della master page per il sito ora. Le considerazioni di prima (e i suggerimenti) erano rivolte allo specifico problema dell'application.master e quindi a un numero di pagine 'di sistema' mostrate comunque all'interno del tuo sito (ad esempio la pagina che visualizza la cronologia versioni di un documento).

    Per l'altra questione, la master page del tuo sito: quello che hai fatto é corretto e il problema che descrivi é comune.

    La via piú semplice, in termine di quantitá di files da creare/modificare é quella di ricorrere al feature stapling.

    Stapling Features to Site Definitions

    Detto in brevissimo, ti permette di eseguire l'attivazione di una o piú features quando un sito (anche web) viene creato utilizzando un certo template.

    Puoi registrare questa stapler feature a livello di farm anche, e tutte le site collections e i siti che verranno creati con quel template attiveranno anche la tua custom feature

    HTH


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    mercoledì 14 marzo 2012 08:40

Tutte le risposte

  • Ciao,

    che versione di SharePoint utilizzi?


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    martedì 13 marzo 2012 10:59
  • ciao,

    scusa ho dimenticato di specificarlo uso sharepoint 2007

    martedì 13 marzo 2012 11:11
  • Allora la strada che ti consiglio é effettivamente quella del HttpModule.

    Modificare direttamente il file nella cartella layouts (dopo aver fatto backup dei files originali) é comunque una strada possibile per quanto si legge nel seguente articolo di KB
    http://support.microsoft.com/kb/944105/en-us

    ma comunque é qualcosa che non suggerisco per la stragrande maggioranza dei casi

    HTH


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    martedì 13 marzo 2012 12:49
  • Grazie della risposta allora procederò con questa strada.

    visto che sei così gentile ti posso chiedere se  quest'altra soluzione che ho trovato sarebbe fattibile e quali sarebbero gli svantaggi rispetto al HttpModule?

    Le modifiche alla application.master riuscirei a farle modificando solo il file css quindi pensavo che la mia feature poteva solo caricare la nuova default.master e i fogli di stile. Poi modificherebbe il nuovo stile su tutta la site collection, quello che accade quando manualmente vado nelle impostazioni siti > impostazioni pagina master sito e gli specifico un file css da utilizzare. 

    Tu non sai se c'è un modo per modificare la creazione delle site collection o se è possibile creare un modello in modo che quando viene creata la site collection ha già la nuova grafica? 

    grazie mille

    martedì 13 marzo 2012 14:15
  • Ciao,

    gli svantaggi nel modificare files nativi di SharePoint sono:

    • quei files sono condivisi a livello di farm, quindi per multipli siti (site collections) e eventualmente multiple web application. Capisci bene che se hai 2 applicazioni, le modifiche effettuate su files condivisi saranno visibili in anche in altri siti/applicazioni dove questo non é invece atteso.
    • l'installazione di una patch (cumulative update) o service pack puó sovrascrivere le tue modifiche
    • questa era una tecnica molto utilizzata in SP2003, dove non c'erano anche altri modi per raggiungere lo scopo a volte, mentre é generalmente sconsigliato e non supportato da Microsoft per le ultime versioni. Questo significa che in caso di malfunzionamento, contattando il supporto, puoi farti problemi o l'investigazione puó richiedere ulteriori passaggi e tempo

    Riguardo quello che dici a proposito del CSS potresti allora aggiungere la registrazione del CSS modificando direttamente application.master (come dice l'articolo di KB, fai i backup :)

    Questo file CSS puó essere caricato nella tua site collection, in Style Library ad esempio. Se aggiungi una nuova registrazione CSS (una linea, tipo <link>) nel file application.master che punta a un file in /Style Library (e sei fortunato a proposito dell'ordine di caricamento per gli stili che vuoi modificare), allora potresti avere come risultato il caricamento degli stili personalizzati quando la pagina viene chiamata dalla site collection che ospita anche il CSS; nelle site collection dove il CSS non é presente verrá ritornato un 404 per quel file e saranno caricati solo gli stili di default.

    Riguardo l'ultima domanda: sí, le possibilitá ci sono e qui si apre un altro mondo (piú di una discussione). Come sempre: dipende cosa devi fare. Tieni presente che non risolverebbe il tuo attuale problema in quanto é dato proprio dal fatto che si tratta di files che non fanno parte del tuo sito, ma che sono condivisi. Le possibilitá qui sono molte; se hai domande specifiche proveró a risponderti. Si parla di: site definitions, web templates, feature stapling, ...

    HTH


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    martedì 13 marzo 2012 15:22
  • ciao,

    come dici tu non posso modificare i file nativi che stanno su server perchè nella farm ci sono più web application e quella che interessa a me è solo una, inoltre le site collection già presenti devono mantenere la grafica attuale. Le modifiche andranno applicate sulle nuove site collection create dopo che avrò finito il lavoro. 

    Ho provato a seguire la seconda ipotesi e ho creato una feature che carica la nuova default.master e il nuovo foglio di stile e attraverso "SPWeb web = site.RootWeb; web.AlternateCssUrl = ... " ho cambiato il css anche alle altre master page. Queste modifiche non vengono però ereditate ai nuovi siti che si creano... hai idee??

    Si effettivamente riuscire ad applicare le modifiche alla creazione della site collection senza dover attivare una feature sarebbe l'ideale Riusciresti a darmi delle dritte in modo da riuscire ad approfondire l'argomento?

    grazie

    martedì 13 marzo 2012 16:19
  • Ok, quindi parliamo della master page per il sito ora. Le considerazioni di prima (e i suggerimenti) erano rivolte allo specifico problema dell'application.master e quindi a un numero di pagine 'di sistema' mostrate comunque all'interno del tuo sito (ad esempio la pagina che visualizza la cronologia versioni di un documento).

    Per l'altra questione, la master page del tuo sito: quello che hai fatto é corretto e il problema che descrivi é comune.

    La via piú semplice, in termine di quantitá di files da creare/modificare é quella di ricorrere al feature stapling.

    Stapling Features to Site Definitions

    Detto in brevissimo, ti permette di eseguire l'attivazione di una o piú features quando un sito (anche web) viene creato utilizzando un certo template.

    Puoi registrare questa stapler feature a livello di farm anche, e tutte le site collections e i siti che verranno creati con quel template attiveranno anche la tua custom feature

    HTH


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    mercoledì 14 marzo 2012 08:40
  • perfetto sto unendo tutti i pezzi del puzzle :)

    quindi, se ho capito bene registro la stapler feature a livello di farm e tutti i siti e site collection creati con questo template hanno attivato la mia custom feature. Sulle attuali site collection già esistenti, non create con il nuovo template trovo la "custom feature" nell'attivazione delle feature??


    mercoledì 14 marzo 2012 10:52
  • Esatto. In realtá, come avrai capito, sono due le features necessarie: una si occupa di registrare l'associazione, ed é detta stapler; la seconda é la feature custom da attivare, ed é detta staplee. La tua feature che cambia la master page é probabilmente una (normalissima) feature con scope Web o Site ed é lo staplee.

    Essendo una normale feature la troverai all'interno della lista delle feature in tutti i tuoi siti, per cui sí: puoi attivarla manualmente per siti giá creati.


    Massimo Prota
    .NET MCAD - SP2007 MCTS - SP2010 MCPD and MCITP
    My blog: http://blogs.ugidotnet.org/mprota - Twitter: @massimoprota

    mercoledì 14 marzo 2012 11:49
  • ok perfetto ora ho tutte le nozioni per iniziare il lavoro :-)

    Visto che sulle site collection già presenti non devo modificare le pagine master pensavo che con questa soluzione non avrei trovato la feature all'interno della lista delle feature. Sarebbe stato l'ideale, cosi non ci sarebbe stato modo per modificare la grafica: va beh pazienza, rimarrà li e resterà disattivata.

    Credo che non realizzerò anche la stapler feature ma attiverò semplicemente la feature alla creazione di una site collection.

    Bene, ti ringrazio molto per l'aiuto che mi hai dato. 

    grazie ancora e ciao :)

    mercoledì 14 marzo 2012 12:20