Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Fluxograma de Renderização

Toda página renderizada no WCM possui o mesmo fluxo para sua construção. O primeiro arquivo chamado no processo de renderização é o “master.ftl”, onde são informados os metadados da página. O arquivo master invoca o método “pageRender.renderTheme()”, responsável pela renderização do tema, que por sua vez irá chamar a renderização do layout, onde posteriormente serão renderizadas os widgets que compõem a tela, concluindo a construção da página.

O fluxograma a seguir exemplifica o processo de renderização de uma página:

Criando um Layout

É possível criar um layout a partir do Fluig Studio. O tutorial com o passo-a-passo encontra-se aqui

  • Uma vez finalizando o tutorial, o Studio preparará um ambiente semelhante a esse:

  • Ou, no caso de ter-se optado por um layout vazio, aparecerá o seguinte conteúdo:

  • Para criar um slot, nesse caso, pode-se usar o Snippet "Slot de um Layout" disponível nos exemplos de código do Studio.
  • Entenda o impacto na forma como você cria o layout na sessão sobre mudança no layout de uma página


Código do Layout

Apesar de a estrutura fornecida pelos templates do Studio não serem obrigatórios, é aconselhável o uso de alguns elementos essenciais quando do desenvolvimento de um layout a partir da estaca zero, como por exemplo:


Deck of Cards
idsamples
Card
id1
label1.8.1 e superiores
Bloco de código
languagexml
themeEclipse
<#import "/wcm.ftl" as wcm/>

<#-- Variaveis globais para os layouts -->
<#import "/layout-globals.ftl" as globals />

<#if pageRender.isPreviewMode() = true>
	<@wcm.previewPageAlert />
	<@wcm.deviceTogglePreview />
</#if>

<div class="wcm-wrapper-content ${wcmLayoutEditClass!""} ${pageAuthTypeClass!""}">

    <#if pageRender.isEditMode() = false>
        <@wcm.header authenticated=pageRender.isUserLogged()?c />
        <@wcm.menu />
    </#if>

    <div class="wcm-all-content">

        <div id="wcm-content" class="clearfix wcm-background">

            <#if pageRender.isEditMode()=true>
                <@wcm.editHeader />
                <@wcm.widgetsList />
            </#if>

            <div id="${divMasterId!""}">

                <!-- Slot 1 -->
                <div class="editable-slot slotfull layout-1-1" id="slotFull1">
                    <@wcm.renderSlot id="SlotC" editableSlot="true" decorator="false" isResponsiveSlot="true" />
                </div>

                <#if fluigThemeCode != "responsive_theme">
                    <@wcm.footer layoutuserlabel="wcm.layoutdefault.user" />
                </#if>
            </div>
        </div>
    </div>
</div>
Card
id12
label1.8.0 e inferiores
Bloco de código
languagexml
themeEclipse
<#import "/wcm.ftl" as wcm/>
<@wcm.header public="true"/>
<!-- WCM Wrapper content -->
<div class="wcm-wrapper-content">
    <@wcm.menu />
    <!-- Wrapper -->
    <div class="wcm-all-content">
        <div id="wcm-content" class="clearfix wcm-background">
            <!-- Your content here -->
            <@wcm.footer layoutuserlabel="wcm.layoutdefault.user" />
        </div>
    </div>
</div>


Código do Slot

O código de um slot é composto dos seguintes elementos:

Bloco de código
languagexml
<div class="editable-slot slotfull layout-1-1" id="slotContainer001">
	<@wcm.renderSlot id="Slot001" decorator="false" editableSlot="false" isResponsiveSlot="true" />
</div>


Sobre o  primeiro elemento "div":


Bloco de código
languagexml
<div class="editable-slot slotfull layout-1-1" id="slotContainer001"> ... </div>
PropriedadeFunção

id="slotContainer001"

slotContainer001: Identificação única do container. Não pode haver outro elemento com esse mesmo código. O tamanho máximo para um ID de slot é 50 caracteres.

class="editable-slot slotfull layout-1-1"

editable-slot e slotfull: Usado pelo renderizador para montar o editor individual de slot.

layout-1-1: Usado para posicionar o slot em um determinado ponto da tela. Será detalhado adiante.


Sobre o segundo elemento "div"
:


Bloco de código
languagexml
...<@wcm.renderSlot id="Slot001" decorator="false" editableSlot="false" isResponsiveSlot="true" />...
PropriedadeFunção
id="Slot001"Slot001: Identificação única do slot. Não pode haver outro elemento com esse mesmo código
decorator="false"

true: As widgets posicionadas neste slot exibem seus títulos

false: As widgets posicionadas neste slot não exibem seus títulos

editableSlot="false"

true: Torna possível inserir e retirar widgets dentro do slot bem como mudar o posicionamento delas

false: Não permite qualquer edição no conteúdo do Slot. Slots de cabeçalho, rodapé e login geralmente estão com esse valor

isResponsiveSlot="true"

true: implementa o novo visual com ações novas em uma widget.

false: Renderiza o visual antigo.


Posicionamento do Slot

Na primeira "div" do conjunto de elementos de um slot, podemos encontrar o seguinte código:

Bloco de código
languagexml
<div id="slotContainer001" class="editable-slot slotfull layout-1-1">

O valor "layout-1-1" refere-se ao posicionamento daquele layout dentro da página. Segue abaixo a lista dos posicionamentos de slot disponíveis dentro do TOTVS Fluig Plataforma:

ValorPosiçãoLargura
layout-1-3
Esquerda32%
layout-2-3
Esquerda65%
layout-1-2left
Esquerda50%
layout-1-1
---100%
layout-1-2right
Direita50%
layout-1-3right
Direita32%
Informações
titleNão se esqueça

Leia a sobre mudança no layout de uma página


Sobre Slots não editáveis

Um layout pode, ou não, conter slots não editáveis. Naqueles fornecidos pelo Fluig Plataforma como templates, há 5 slots que não são editáveis por padrão. Para cada slot não-editável, é necessário criar uma propriedade no application.info relacionado o id do slot ao código da widget que estará contida nele, pois essa é a forma de inserir conteúdo em um slot não-editável.

Slot de Busca:

Bloco de código
languagexml
	<div id="SlotInstantSearch" slot="true" class="slotint slot-header-actions">
		<#list (pageRender.getInstancesIds("SlotInstantSearch"))! as id>
			${pageRender.renderInstanceNoDecorator(id)}
		</#list>
	</div>

Propriedade do application.info:

slot.SlotInstantSearch=widget_search


Slot de Alertas Globais:

Bloco de código
languagexml
	<div id="SlotGlobalAlert" slot="true" class="slotint slot-header-actions">
		<#list (pageRender.getInstancesIds("SlotGlobalAlert"))! as id>
			${pageRender.renderInstanceNoDecorator(id)}
		</#list>
	</div>

Propriedade do application.info:

slot.SlotGlobalAlert=alertpopover


Slot de Login:

Bloco de código
languagexml
	<div class="header-grouper-right">
		<div id="SlotLogin" slot="true" class="slot-header-actions">
			<#list (pageRender.getInstancesIds("SlotLogin"))! as id>
				${pageRender.renderInstanceNoDecorator(id)}
			</#list>
		</div>
	</div>

Propriedade do application.info:

slot.SlotLogin=sociallogin


Slot de Menu:

Bloco de código
languagexml
<@wcm.menu />

Propriedade do application.info:

slot.SlotMenu=menu


Slot de Rodapé:

Bloco de código
languagexml
<@wcm.footer layoutuserlabel="wcm.layoutdefault.user" />

Propriedade do application.info:

slot.SlotUsePolicy=usepolicy

Informações
titleImportante

o valor do parâmetro "layoutuserlabel" deve ser uma chave existente em um dos arquivos .properties do seu projeto


Como exibir/ocultar títulos das widgets no slot

Para exibir o título das widgets no slot é possível utilizar a propriedade decorator na macro renderSlot.
Por padrão os títulos das widgets não são exibidos na utilização da macro renderSlot. Porém é possível exibir os títulos alterando a propriedade decorator="true" no código do slot conforme exibido abaixo. Assim, todas as widgets posicionadas neste slot terão um título visível no topo.

Bloco de código
languagexml
<div id="divSlot1" class="editable-slot">
    <@wcm.renderSlot id="SlotA" decorator="true" editableSlot="true" />
</div>


Resultado: