Sviluppo dei gestori di sincronizzazione dei contenuti
Di seguito sono riportate alcune linee guida per lo sviluppo di gestori di sincronizzazione dei contenuti:
- I gestori devono implementare com.day.cq.contentsync.handler.ContentUpdateHandler (direttamente o estendendo una classe che esegue)
- I gestori possono estendere com.adobe.cq.mobile.platform.impl.contentsync.handler.AbstractSlingResourceUpdateHandler
- Il gestore deve segnalare true solo se aggiorna la cache di ContentSync. Se si segnala erroneamente true, l’AEM crea un aggiornamento quando in realtà non si è verificato un aggiornamento.
- Il gestore deve aggiornare la cache solo se il contenuto viene modificato. Non scrivere nella cache se non è necessario un bianco. Questo comporta la creazione di un aggiornamento non necessario.
Configurazione del contenuto di sincronizzazione contenuti
Crea una configurazione di sincronizzazione contenuti per specificare il contenuto del file ZIP che viene distribuito al client. Puoi creare un numero qualsiasi di configurazioni di sincronizzazione dei contenuti. Ogni configurazione ha un nome a scopo di identificazione.
Per creare una configurazione di sincronizzazione dei contenuti, aggiungere un nodo cq:ContentSyncConfig
all'archivio con la proprietà sling:resourceType
impostata su contentsync/config
. Il nodo cq:ContentSyncConfig
può trovarsi in qualsiasi punto del repository, tuttavia il nodo deve essere accessibile agli utenti nell'istanza di pubblicazione AEM. Pertanto, aggiungere il nodo sotto /content
.
Per specificare il contenuto del file ZIP di sincronizzazione contenuti, aggiungi nodi secondari al nodo cq:ContentSyncConfig. Le seguenti proprietà di ciascun nodo figlio identificano un elemento di contenuto da includere e come viene elaborato quando lo si aggiunge:
path
: posizione del contenuto.type
: nome del tipo di configurazione da utilizzare per elaborare il contenuto. Sono disponibili diversi tipi descritti nella sezione Tipi di configurazione.
Per ulteriori informazioni, vedere Esempio di configurazione di sincronizzazione dei contenuti.
Dopo aver creato la configurazione di Sincronizzazione contenuti, questa viene visualizzata nella console Sincronizzazione contenuti.
Configurazione dell’accesso ai download di sincronizzazione dei contenuti
Specifica un utente o un gruppo che può scaricare da Sincronizzazione contenuti. Puoi configurare l’utente o il gruppo predefinito che può essere scaricato da tutte le cache di Sincronizzazione contenuto, nonché ignorare l’impostazione predefinita e configurare l’accesso per una specifica configurazione di Sincronizzazione contenuto.
Quando AEM è installato, i membri del gruppo dell'amministratore possono scaricare da Sincronizzazione contenuti per impostazione predefinita.
Impostazione dell’accesso predefinito per i download di sincronizzazione dei contenuti
Il servizio Day CQ Content Sync Manager controlla l’accesso a Content Sync. Configura questo servizio per specificare l'utente o il gruppo che può scaricare da Sincronizzazione contenuti per impostazione predefinita.
Se si sta configurando il servizio utilizzando la console Web, digitare il nome dell'utente o del gruppo come valore della proprietà Autorizzabile della cache di fallback.
Se si sta configurando nel repository, utilizzare le seguenti informazioni sul servizio:
- PID: com.day.cq.contentsync.impl.ContentSyncManagerImpl
- Nome proprietà: contentsync.fallback.authorizable
Ignorare l’accesso ai download per una cache di sincronizzazione dei contenuti
Per configurare l'accesso al download per una configurazione specifica di Sincronizzazione contenuto, aggiungere la seguente proprietà al nodo cq:ContentSyncConfig
:
- Nome: autorizzabile
- Tipo: String
- Valore: il nome dell’utente o del gruppo che può scaricare.
Ad esempio, la tua app consente agli utenti di installare gli aggiornamenti direttamente da Sincronizzazione contenuti. Per consentire a tutti gli utenti di scaricare l'aggiornamento, impostare il valore della proprietà autorizzabile su everyone
.
Se il nodo cq:ContentSyncConfig
non dispone di una proprietà autorizzabile, l'utente o il gruppo predefinito configurato per la proprietà Autorizzabile cache di fallback del servizio Day CQ Content Sync Manager determina chi può scaricare.
Configurazione dell’utente per l’aggiornamento di una cache di sincronizzazione contenuti
Quando un utente esegue un aggiornamento alla cache di sincronizzazione contenuti, l’azione viene eseguita da un account utente specifico per conto dell’utente. Per impostazione predefinita, l’utente anonimo aggiorna tutte le cache di Sincronizzazione contenuto.
Puoi sovrascrivere l’utente predefinito e specificare un utente o un gruppo che aggiorna una cache di sincronizzazione contenuti specifica.
Per ignorare l'utente predefinito, specificare un utente o un gruppo che esegua aggiornamenti per una configurazione di Sincronizzazione contenuto specifica aggiungendo la seguente proprietà al nodo cq
- Nome:
updateuser
- Tipo:
String
- Valore: nome dell'utente o del gruppo che può eseguire gli aggiornamenti.
Se il nodo cq:ContentSyncConfig
non ha una proprietà updateuser
, l'utente predefinito anonymous
aggiorna la cache.
Tipi di configurazione
L’elaborazione può variare dal rendering di un JSON semplice al rendering completo delle pagine, incluse le relative risorse di riferimento. In questa sezione sono elencati i tipi di configurazione disponibili e i relativi parametri specifici:
copia - Copia file e cartelle.
- percorso - Se il percorso punta a un singolo file, viene copiato solo il file. Se punta a una cartella (inclusi i nodi della pagina), verranno copiati tutti i file e le cartelle sottostanti.
content Esegui il rendering del contenuto utilizzando Elaborazione richiesta Sling standard.
-
percorso - Percorso della risorsa da restituire.
-
estensione - Estensione da utilizzare nella richiesta. Esempi comuni sono html e json, ma qualsiasi altra estensione è possibile.
-
selettore - Selettori opzionali separati da un punto. Esempi comuni sono touch per il rendering delle versioni mobili di una pagina o infinity per l'output JSON.
clientlib - Crea un pacchetto con una libreria client JavaScript o CSS.
- percorso - Percorso della directory principale della libreria client.
- estensione - Tipo di libreria client. Al momento deve essere impostato su js o css.
risorse
Raccogli le rappresentazioni originali delle risorse.
- percorso - Percorso di una cartella di risorse in /content/dam.
immagine - Raccogli un'immagine.
- percorso - Percorso di una risorsa immagine.
Il tipo di immagine viene utilizzato per includere il logo We Retail nel file zip.
pagine - Eseguire il rendering delle pagine AEM e raccogliere le risorse di riferimento.
-
percorso - Percorso di una pagina.
-
estensione - Estensione da utilizzare nella richiesta. Per le pagine si tratta quasi sempre di html, ma altri sono ancora possibili.
-
selettore - Selettori opzionali separati da un punto. Esempi comuni sono touch per il rendering delle versioni mobili di una pagina.
-
deep - Proprietà booleana opzionale che determina se includere anche le pagine figlie. Il valore predefinito è true.
-
includeImages - Proprietà booleana opzionale che determina se le immagini devono essere incluse. Il valore predefinito è true.
Per impostazione predefinita, solo i componenti immagine con un tipo di risorsa fondazione/componenti/immagine vengono considerati per l’inclusione. È possibile aggiungere altri tipi di risorse configurando il gestore di aggiornamento Day CQ WCM Pages nella console Web.
riscrittura - Il nodo di riscrittura definisce la modalità di riscrittura dei collegamenti nella pagina esportata. I collegamenti riscritti possono puntare ai file inclusi nel file zip o alle risorse sul server.
Il nodo rewrite
deve trovarsi sotto il nodo page
.
Il nodo rewrite
può avere una o più delle seguenti proprietà:
-
clientlibs
: riscrive i percorsi clientlibs. -
images
: riscrive i percorsi delle immagini. -
links
: riscrive i percorsi dei collegamenti.
Ogni proprietà può avere uno dei seguenti valori:
-
REWRITE_RELATIVE
: riscrive il percorso con una posizione relativa al file html della pagina nel file system. -
REWRITE_EXTERNAL
: riscrive il percorso puntando alla risorsa sul server, utilizzando il servizio Externalizer dell'AEM.
Il servizio AEM denominato PathRewriterTransformerFactory consente di configurare gli attributi html specifici che verranno riscritti. Il servizio può essere configurato nella console Web e dispone di una configurazione per ogni proprietà del nodo rewrite
: clientlibs
, images
e links
.
Questa funzione è stata aggiunta all’AEM 5.5.
Esempio di configurazione della sincronizzazione dei contenuti
L’elenco seguente mostra un esempio di configurazione per Sincronizzazione contenuti.
+ weretail_go [cq:ContentSyncConfig]
- sling:resourceType = "contentsync/config"
+ etc.designs.default [nt:unstructured]
- path = "/etc/designs/default"
- type = "copy"
+ etc.designs.mobile [nt:unstructured]
- path = "/etc/designs/mobile"
- type = "copy"
+ events.plist [nt:unstructured]
- path = "/content/weretail_mobile/en/events/jcr:content/par/events"
- type = "content"
- extension = "plist"
+ events.touch.html [nt:unstructured]
- path = "/content/weretail_mobile/en/events"
- type = "pages"
- extension = "html"
- selector = "touch"
+ logo [nt:unstructured]
- path = "/etc/designs/mobile/jcr:content/mobilecontentpage/logo"
- type = "logo"
+ manifest [nt:unstructured]
- indexPage = "/content/weretail_mobile/en/events.touch.html"
- metadataPlist = "/content/weretail_mobile/en/events/_jcr_content/par/events.plist"
+ ...
etc.designs.default e etc.designs.mobile - Le prime due voci della configurazione sono ovvie. Poiché stai per includere diverse pagine mobili, devi disporre dei relativi file di progettazione sotto /etc/designs. E poiché non è richiesta alcuna elaborazione aggiuntiva, la copia è sufficiente.
events.plist - Questa voce è un po' speciale. Come accennato nell’introduzione, l’applicazione deve fornire una vista a mappa con i marcatori della posizione degli eventi. Le informazioni necessarie sulla posizione verranno fornite come file separato in formato PLIST. Affinché ciò funzioni, il componente elenco eventi utilizzato nella pagina indice dispone di uno script denominato plist.jsp. Questo script viene eseguito quando la risorsa del componente viene richiesta con l'estensione .plist
. Come sempre, il percorso dei componenti è specificato nella proprietà percorso e il tipo è impostato sul contenuto, perché si desidera utilizzare Elaborazione richiesta Sling.
events.touch.html - Successivamente vengono visualizzate le pagine effettive visualizzate nell'app. La proprietà path viene impostata sulla pagina principale degli eventi. Verranno incluse anche tutte le pagine evento al di sotto di quella pagina, perché la proprietà deep (deep) è impostata per impostazione predefinita su true. Utilizza le pagine come tipo di configurazione, in modo da includere tutte le immagini o altri file a cui si può fare riferimento da un componente immagine o download in una pagina. Inoltre, l’impostazione del selettore touch fornisce una versione mobile delle pagine. La configurazione nel feature pack contiene più voci di questo tipo, ma qui sono escluse per semplicità.
logo - Il tipo di configurazione del logo non è stato menzionato finora e non è nessuno dei tipi incorporati. Tuttavia, il framework di sincronizzazione dei contenuti è in certa misura estensibile, come illustrato nella sezione successiva.
manifest - È spesso consigliabile includere nel file zip alcuni tipi di metadati, ad esempio la pagina iniziale del contenuto. Tuttavia, la codifica fissa di tali informazioni impedisce di modificarle in un secondo momento. Il framework di sincronizzazione dei contenuti supporta questo caso d’uso cercando un nodo manifesto nella configurazione, identificato per nome e che non richiede un tipo di configurazione. Ogni proprietà definita in quel particolare nodo viene aggiunta a un file, che è anche chiamato manifesto e risiede nella radice del file zip.
Nell’esempio, la pagina di elenco degli eventi deve essere la pagina iniziale. Queste informazioni sono fornite nella proprietà indexPage e possono quindi essere facilmente modificate in qualsiasi momento. Una seconda proprietà definisce il percorso del file events.plist. Come vedrai in seguito, l’applicazione client ora può leggere il manifesto e agire in base a esso.
Una volta configurata la configurazione, il contenuto può essere scaricato con un browser o con qualsiasi altro client HTTP oppure, se stai sviluppando per iOS, puoi utilizzare la libreria client WAppKitSync dedicata. Il percorso di download è costituito dal percorso della configurazione e dall'estensione .zip, ad esempio, quando si lavora con un'istanza AEM locale: http://localhost:4502/content/weretail_go.zip