Skip to content

Sections

Tiago Terme edited this page Sep 2, 2022 · 2 revisions

Estrutura

O schema de uma seção é utilizado para gerar a página de configuração das seções no editor do tema. A estrutura base de um schema deve seguir o padrão abaixo:

{
   "name": "Nome do componente", // nome que será exibido na lista de seções
   "type": "content", // tipo da seção podendo ser: content ou fixed
   "category": "Multimídia", // agrupador das seções
   "settings": [], // lista dos componentes de configuração da seção
   "blocks": {} // lista dos componentes de configuração dos blocos da seção
}

Name

Nome que será exibido na lista de seções


Type

Tipo da seção podendo ser:

  • Content: Seções que serão usadas para conteúdo dinâmico, como banner, vitrines e etc…
  • Fixed: Seções que serão usadas para conteúdo fixo, como header, footer, newsletter

Category

Agrupador das seções, tendo tratamento diferente em cada tipo de seção:

  • Type content: será agrupado as seções conforme o valor descrito no campo

    Type content

  • Type fixed: Deve ser usado as seguintes categorias:

    • header: será agrupado as seções e exibidas na sidebar na área acima da seleção das seções

      Type fixed header

    • footer: será agrupado as seções e exibidas na sidebar na área abaixo da seleção das seções

      Type fixed footer


Settings

Lista dos componentes de configuração da seção, devemos seguir um schema base dos settings. Veremos mais detalhes de configuração nos componentes

"settings": [
       {
         "type": "component-editor", //tipo do componente que será renderizado
         "tab": "Aba", // agrupador dos campos por abas
         "group": "Grupo", // agrupador dos campos por acordeon
         "id": "idCampo", // índice do qual será retornado o valor cadastrado no editor
         "label": "Nome do campo", // título do campo exibido no editor
         "info": "*informação adicional", // informação adicional exibida abaixo do campo
         "default": "Valor padrão" // valor padrão do campo
       }
 ]

Blocks

Lista dos componentes de configuração dos blocos da seção, os blocks podem ter mais de um tipo, para que o usuário possa escolher quando for cadastrar seu conteúdo. Devemos seguir um schema base dos blocks.

{
 "blocks_name": "Imagens",
 "blocks_max": 5,
 "blocks": {
   "image": {
     "name": "Banner item",
     "settings": [
       {
         "type": "image_picker",
         "group": "Conteúdo",
         "id": "src",
         "label": "Banner",
         "info": "*recomendado imagens jpg, 1920x700"
       }
     ]
   }
 }
}

Components

Checkbox

{
    type: 'checkbox',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: true
}

checkbox


Color picker

{
    type: 'color_picker',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: '#000000'
}

checkbox


Date picker

{
    type: 'date_picker',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: '31/01/2022'
}

checkbox


Font picker

{
    type: 'font_picker',
    id: 'myId',
    label: 'My label',
    info: 'My label',
    default: ''
}

Header

{
    type: 'header',
    id: 'myId',
    content: 'My Header'
}

checkbox


HTML

{
    type: 'html',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: '<p>Content</p>'
}

checkbox


Image picker

{
    type: 'image_picker',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: ''
}

checkbox


Range

{
    type: 'range',
    id: 'myId',
    step: 10,
    max: 100,
    min: 0,
    unit: 'px',
    label: 'My label',
    info: 'My info',
    default: 50
}

checkbox


Richtext

{
    type: 'richtext',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: ''
}

checkbox


Select

{
    type: 'select',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: '',
    options: [
      {
        label: 'Option 1',
        value: 'option1'
      },
      {
        label: 'Option 2',
        value: 'option2'
      },
      {
        label: 'Option 3',
        value: 'option3'
      }
    ]
}

checkbox


Text

{
    type: 'text',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: 'Hello world'
}

checkbox


Textarea

{
    type: 'textarea',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: 'Hello world'
}

checkbox


Toggle

{
    type: 'toggle',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: 'm',
    // options: 'h-align',
    // options: 'v-align',
    options: [
      {
        label: 'P',
        value: 'p'
      },
      {
        label: 'M',
        value: 'm'
      },
      {
        label: 'G',
        value: 'g'
      }
    ]
}

checkbox


URL

{
    type: 'url',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: ''
}

checkbox


Video Url

{
    type: 'video_url',
    id: 'myId',
    label: 'My label',
    info: 'My info',
    default: ''
}

checkbox