Uso do Sling Resource Merger no AEM as a Cloud Service using-the-sling-resource-merger-in-aem
Propósito purpose
O Sling Resource Merger fornece serviços para acessar e mesclar recursos. Ela fornece mecanismos de diferenciação para:
- 
                  
Sobreposições de recursos usando os caminhos de pesquisa.
 - 
                  
Substitui das caixas de diálogo de componente para a interface habilitada para toque (
cq:dialog), usando a hierarquia de tipo de recurso (por meio da propriedadesling:resourceSuperType). 
Com o Sling Resource Merger, os recursos e/ou propriedades de sobreposição/substituição são mesclados com os recursos/propriedades originais:
- 
                  
O conteúdo da definição personalizada tem uma prioridade mais alta que a do original (ou seja, sobreposições ou substituições).
 - 
                  
Quando necessário, as propriedades definidas na personalização indicam como o conteúdo mesclado do original será usado.
 
Metas para o AEM goals-for-aem
As metas para usar a Fusão de recursos do Sling no AEM são:
- 
                  
verifique se as alterações de personalização não foram feitas em
/libs. - 
                  
reduza a estrutura replicada de
/libs.Ao usar o Sling Resource Merger, não é recomendável copiar toda a estrutura de
/libs, pois isso resultaria em muitas informações mantidas na personalização (geralmente/apps). Duplicar informações aumenta desnecessariamente a chance de problemas quando o sistema é atualizado de alguma forma. 
/libs./libs pode ser substituído sempre que atualizações forem aplicadas à sua instância.- 
                  
As sobreposições dependem dos caminhos de pesquisa.
 - 
                  
As substituições não dependem dos caminhos de pesquisa, elas usam a propriedade
sling:resourceSuperTypepara fazer a conexão. 
/apps, já que a prática recomendada no AEM as a Cloud Service é definir personalizações em /apps. Isso ocorre porque você não deve alterar nada em /libs.Propriedades properties
A fusão de recursos oferece as seguintes propriedades:
- 
                  
sling:hideProperties(StringouString[])Especifica a propriedade, ou lista de propriedades, a ser ocultada.
O curinga
*oculta tudo. - 
                  
sling:hideResource(Boolean)Indica se os recursos devem ser completamente ocultos, incluindo seus filhos.
 - 
                  
sling:hideChildren(StringouString[])Contém o nó filho, ou lista de nós filhos, a ser ocultado. As propriedades do nó são mantidas.
O curinga
*oculta tudo. - 
                  
sling:orderBefore(String)Contém o nome do nó irmão no qual o nó atual deve ser posicionado.
 
Essas propriedades afetam como os recursos/propriedades correspondentes/originais (de /libs) são usados pela sobreposição/substituição (geralmente em /apps).
Criação da estrutura creating-the-structure
Para criar uma sobreposição ou substituição, é necessário recriar o nó original, com a estrutura equivalente, no destino (geralmente /apps). Por exemplo:
- 
                  
Sobreposição
- 
                      
A definição da entrada de navegação do console Sites, como mostrado no painel, é definida em:
/libs/cq/core/content/nav/sites/jcr:title - 
                      
Para sobrepor isso, crie o seguinte nó:
/apps/cq/core/content/nav/sitesEm seguida, atualize a propriedade
jcr:title, conforme necessário. 
 - 
                      
 - 
                  
Substituir
- 
                      
A definição da caixa de diálogo habilitada para toque do console de Textos está definida em:
/libs/foundation/components/text/cq:dialog - 
                      
Para substituir isso, crie o seguinte nó - por exemplo:
/apps/the-project/components/text/cq:dialog 
 - 
                      
 
Para criar qualquer uma dessas opções, basta recriar a estrutura do esqueleto. Para simplificar a recriação da estrutura, todos os nós intermediários podem ser do tipo nt:unstructured (eles não precisam refletir o tipo de nó original; por exemplo, em /libs).
Portanto, no exemplo de sobreposição acima, os seguintes nós são necessários:
/apps
  /cq
    /core
      /content
        /nav
          /sites
            /libs, pois isso resultaria em muitas informações mantidas em /apps. Isso pode causar problemas quando o sistema é atualizado de alguma forma.Casos de uso use-cases
Eles, juntamente com a funcionalidade padrão, permitem:
- 
                  
Adicionar uma propriedade
A propriedade não existe na definição
/libs, mas é necessária na sobreposição/substituição/apps.- Criar o nó correspondente em 
/apps - Criar a nova propriedade neste nó "
 
 - Criar o nó correspondente em 
 - 
                  
Redefinir uma propriedade (não propriedades criadas automaticamente)
A propriedade está definida em
/libs, mas um novo valor é necessário na sobreposição/substituição/apps.- 
                      
Criar o nó correspondente em
/apps - 
                      
Criar a propriedade correspondente neste nó (em /
apps)- 
                          
A propriedade terá uma prioridade com base na configuração do Sling Resource Resolver.
 - 
                          
Não há suporte para a alteração do tipo de propriedade.
Se você usar um tipo de propriedade diferente daquele usado em
/libs, o tipo de propriedade definido será usado. 
 - 
                          
 
note note NOTE Não há suporte para a alteração do tipo de propriedade.  - 
                      
 - 
                  
Redefinir uma propriedade criada automaticamente
Por padrão, as propriedades criadas automaticamente (como
jcr:primaryType) não estão sujeitas a uma sobreposição/substituição para garantir que o tipo de nó atualmente em/libsseja respeitado. Para impor uma sobreposição/substituição, é necessário recriar o nó em/apps, ocultar explicitamente a propriedade e redefini-la:- 
                      
Crie o nó correspondente em
/appscom ojcr:primaryTypedesejado - 
                      
Crie a propriedade
sling:hidePropertiesnesse nó, com o valor definido como aquele da propriedade criada automaticamente; por exemplo,jcr:primaryTypeEsta propriedade, definida em
/apps, terá prioridade sobre aquela definida em/libs 
 - 
                      
 - 
                  
Redefinir um nó e seus filhos
O nó e seus filhos estão definidos em
/libs, mas uma nova configuração é necessária na sobreposição/substituição/apps.- 
                      
Combine as ações de:
- Ocultar filhos de um nó (mantendo as propriedades do nó)
 - Redefinir a propriedade/as propriedades
 
 
 - 
                      
 - 
                  
Ocultar uma propriedade
A propriedade está definida em
/libs, mas não é necessária na sobreposição/substituição de/apps.- 
                      
Criar o nó correspondente em
/apps - 
                      
Crie uma propriedade
sling:hidePropertiesdo tipoStringouString[]. Use esta opção para especificar as propriedades que devem ser ocultas/ignoradas. Curingas também podem ser usados. Por exemplo:*["*"]jcr:title["jcr:title", "jcr:description"]
 
 - 
                      
 - 
                  
Ocultar um nó e seus filhos
O nó e seus filhos estão definidos em
/libs, mas não são necessários na sobreposição/substituição/apps.- 
                      
Crie o nó correspondente em /apps
 - 
                      
Criar uma propriedade
sling:hideResource- tipo: 
Boolean - valor: 
true 
 - tipo: 
 
 - 
                      
 - 
                  
Ocultar filhos de um nó (ao manter as propriedades do nó)
O nó, suas propriedades e seus filhos estão definidos em
/libs. O nó e suas propriedades são necessários na sobreposição/substituição/apps, mas alguns ou todos os nós filhos não são necessários na sobreposição/substituição/apps.- 
                      
Criar o nó correspondente em
/apps - 
                      
Criar a propriedade
sling:hideChildren:- tipo: 
String[] - value: uma lista dos nós filhos (conforme definido em 
/libs) a serem ocultados/ignorados 
O curinga * pode ser usado para ocultar/ignorar todos os nós filhos.
 - tipo: 
 
 - 
                      
 - 
                  
Reordenar nós
O nó e seus irmãos estão definidos em
/libs. Uma nova posição é necessária para que o nó seja recriado na sobreposição/substituição/apps, onde a nova posição é definida em referência ao nó irmão apropriado em/libs.- 
                      
Usar a propriedade
sling:orderBefore:- 
                          
Criar o nó correspondente em
/apps - 
                          
Criar a propriedade
sling:orderBefore:Isso especifica o nó (como em
/libs) que o nó atual deve ser posicionado antes:- tipo: 
String - valor: 
<before-SiblingName> 
 - tipo: 
 
 - 
                          
 
 - 
                      
 
Chamar o Sling Resource Merger a partir de seu código invoking-the-sling-resource-merger-from-your-code
O Sling Resource Merger inclui dois provedores de recursos personalizados, um para sobreposições e outro para substituições. Cada um desses pode ser chamado dentro do código usando um ponto de montagem:
/libs).- 
                  
Sobreposição:
- 
                      
finalidade: mesclar recursos com base no caminho de pesquisa
 - 
                      
ponto de montagem:
/mnt/overlay - 
                      
uso:
mount point + relative path - 
                      
exemplo:
getResource('/mnt/overlay' + '<relative-path-to-resource>');
 
 - 
                      
 - 
                  
Substituir:
- 
                      
finalidade: mesclar recursos com base em seu supertipo
 - 
                      
ponto de montagem:
/mnt/overide - 
                      
uso:
mount point + absolute path - 
                      
exemplo:
getResource('/mnt/override' + '<absolute-path-to-resource>');
 
 -