Com esta abordagem cada seção, artigo, comentário ou bloco de outro monitor de cobalto pode olha de forma diferente. Ao mesmo tempo, todas as mudanças serão preservadas na atualização de extensão em si.
O botão de engrenagem pequena permitem que você defina as configurações do template. Isso também permite que você crie Templates altamente customizáveis.
2. Requisitos
Você não tem que ser um especialista para gerenciar isso. Embora o melhor especialista que você é em Templates de CSS / HTML melhores virão fora de suas mãos.
- Você tem que saber CSS / HTML - Qualquer nível (mas você tem que saber isso)
- Você tem que saber PHP - nível elementar (alguns truques exigem um melhor conhecimento, mas para o template de edição básica de nível elementar é mais do que suficiente)
Ao nível elementar, quero dizer que você pode entender que este
<h2> <? php echo $ item-> title;?> </ h2>
Simplesmente mostra título do artigo. Se isto não é difícil para você, você pode continuar a leitura.
3. Fazer cópias Templates
Para iniciar o desenvolvimento de qualquer template que você começar fazendo cópia de algum template existente. Este é um passo muito importante para evitar a perda de alterações na atualização Cobalt seguinte.
Abra o Gerenciador de template Cobalt.
Escolha o seu template que feets mais precisa. Geralmente há apenas um padrão de template por padrão, mas há poucos para as listas de recordes e índices da categoria. Se você precisa de tabela de estilo de cópia de template deafult . Se você precisa de mais como blogue cópia estilo de template simple_list .
Clique Copiar / Renomear botão na barra de ferramentas.
Digite o novo nome e clique em Copiar botão.
Nome da nota, será parte do nome do arquivo de template. Então, por favor, use somente caracteres az e _. Por favor, evitar casos de letra de mistura. Use todos os casos de pequeno porte.Após a recarga você vai ver o seu novo template na lista.
Se você copiar Lista artigo template, você precisa também mudar o nome do template. Porque este nome mais tarde pode ser usado em template de alternador no frontend, se você usar mais de um template por seção. Digite o nome no rótulo Mudança campo e clique em Alterar a etiqueta botão.
4. Encontre seus arquivos de template
Aqui estão os caminhos onde seus Templates recém-localizados serão armazenados. * - É o nome que você deu a template enquanto copiá-lo.
- Article list -
/components/com_cobalt/views/records/tmpl/default_list_*
- Category Index -
/components/com_cobalt/views/records/tmpl/default_cindex_*
- Menu -
/components/com_cobalt/views/records/tmpl/default_menu_*
- Filters -
/components/com_cobalt/views/records/tmpl/default_filters_*
- Markup -
/components/com_cobalt/views/records/tmpl/default_markip_*
- Article -
/components/com_cobalt/views/record/tmpl/default_record_*
- Comments -
/components/com_cobalt/views/record/tmpl/default_comments_*
- Form -
/components/com_cobalt/views/form/tmpl/default_form_*
- Category select -
/components/com_resource/views/form/tmpl/default_category_*
5. Arquivos de template
Cada template pode ter esses arquivos. Vamos por exemplo, ter default_record_default.php
template.
Então você pode criar arquivos
default_record_default
- pasta que pode armazenar todos os arquivos adicionais para o seu template. Você tem que usar esta pasta se você quiser todos os arquivos necessários copiados com Packer Cobalt.default_record_default.php
- próprio arquivo de templatedefault_record_default.css
- colocar todos os CSS template aqui. Ele será automaticamente ligado.default_record_default.js
- colocar todos java script deste arquivo e ele será automaticamente carregado.default_record_default.png
- screenshot pequeno do seu template para visualizar no gerenciador de template. O tamanho normalmente não é superior a 300x300 px. Mas você pode fazê-lo maior.default_record_default.xml
- contêm informações do autor do template e parâmetros do template.Como usar parâmetros eu vou explicar mais tarde.
6. Personalize Templates
Basicamente, quando falamos de Templates, falamos sobre o artigo e os Templates de artigos da lista. Os outros Templates podem ser facilmente estilos e ajustado. Normalmente questões mais importantes são campos sobre recordes.
Objeto Record
No template de lista ou artigo completo você verá $ item
objeto que contenha registro.
$ Item
conter propriedades essenciais, como classificação ctime, hits, user_id e assim uma como campos.Os parâmetros básicos são acessíveis como este:
Hits:? <? Php echo $ item-> hits;>
Q: Como pode ver a lista de todas as propriedades disponíveis do objeto de registro
Para ver todas as propriedades de
$ item
objeto que você pode usar esta técnica. Basta adicioná-lo em qualquer lugar em seu templatevar_dump (get_object_vars ($ item));
Q: Como obter a URL do registro?
Se você deseja obter a URL do registro atual. Quero dizer URL do
$ item
objeto que você está trabalhando com<? Php echo JRoute :: _ ($ item-> url);>
Mas se você precisa da URL do registro de outro e você tem apenas um ID
<?php echo JRoute::_(Url::record($record_id));?>
Campos recorde
Opor $ item
agora conter campos organizados de maneira diferente
$ Item-> fields_by_id
- conjunto de campos de registro onde ID campo é a chave de uma matriz$ Item-> fields_by_key
- conjunto de campos de registro onde campo chave é a chave de uma matriz. Por favor ler o que está no FAQ no final deste artigo.$ Item-> fields_by_group
- matriz de vários níveis de campos de registro, onde primeiro nível é o grupo dos campos e segundo são campos.
Existem dois estilos para mostrar resultado de seus campos. E é muito simples de fazer a decisão de qual usar. Você tem que acessar campos de fields_by_key
se você cria um template que tem que suportar múltiplos tipos. Se você cria um template para o tipo simples, você pode usar fields_by_id
.
<? Php if (isset ($ item-> fields_by_id [12])):>
<span class="field-year">
<? Php echo $ item-> fields_by_id [12] -> resultado;>?
</ Span>
<Php endif;?>
E se você quiser chamá-campo pela chave, primeiro você tem que pegar a chave.
Fields_keys_by_id [12] <php $ chave = $ this->;>
<? Php if (isset ($ item-> fields_by_key [$ key])):>
<span class="field-year">
<? Php echo $ item-> fields_by_key [$ key] -> resultado;>?
</ Span>
<Php endif;?>
Acima é o exemplo que irá suportar vários tipos no mesmo template. Mesmo que você use apenas a ID do campo de um particular, você vai ter a mesma chave no outro campo com o mesmo rótulo e tipo de campo.
Q: Como é que eu sei o que é uma identificação de campo?
Você pode encontrar ID de campo na lista de campos (2)
Objeto de campo
De qualquer item-> $ fields_by_key [$ key]
ou $ item-> fields_by_id [12]
é um objeto de campo e conter propriedades muito mais do que -> resultado
.
Alguns deles são muito úteis. Por exemplo, na tabela varinha te todos os campos do tipo dígitos ser alinhada para a direita.
<td<?php echo ($field->type == 'digits' ? ' align="right" ' : NULL ) ?>>
<?php echo $field->result;?>
</td>
Ou $ item-> fields_by_id [12] -> params
tem todos os parâmetros definidos durante a criação do campo. Por exemplo adicionar classe que foi definido nos parâmetros de campo.
<span class="my-class <?php echo $item->fields_by_id[12]->params->get('core.field_class')?>">
<?php echo $item->fields_by_id[12]->result;?>
</span>
Q: O que é uma chave de campo.
Chave dos Campos agora é a parte de apoio tipo multi em Templates. Você não vai criar este chaves Eu só quero explicar para você entender o conceito. Chave de campo e MD5 é do tipo de campo e etiqueta.
$field_key = 'k'.md5($field->label.'-'.$field->field_type);
Vamos, diga rótulo do campo é Ano e campo id do tipo dígitos . Depois
$field_key = 'k'.md5('Year-digits');
Então, se você chamar de campo por chave, não importa que tipo é, se tiver de campo Ano tipodígitos ela será exibida no seu template.
Você pode encontrar as chaves na coluna DB
-chave
emjos_js_res_fields
tabela (1) .
Q: O resultado do campo contêm HTML. Como chegar de texto em linha?
A forma mais simples de obter texto sem qualquer formatação HTML é.
strip_tags echo ($ item-> fields_by_id [12] -> resultado);
Q: Como posso ver todas as propriedades disponíveis do objeto de campo?
Você pode usar a mesma técnica para listar as propriedades dos objetos e, mais tarde eu vou fazer referência.
var_dump (get_object_vars ($ item-> fields_by_id [12]));
Q: Quais são os tipos de campo disponíveis e como eu sei qual é o tipo no campo atual?
Você pode encontrar o nome do tipo de campo na lista de campos (1)
Templates de campo
Nova possibilidade, única e grande é mudar ou adicionar qualquer nova saída ou entrada de template para todos os campos. Cada campo tem parâmetros para definir template para a saída , filtro ou de entrada . E este é o grande característica e única que lhe dá controle total sobre como tudo vai ficar.
Como mencionado, existem três tipos de template de saída , filtro ou de entrada .
De saída encontram-se em Templates de com_cobalt/fields/****/tmpl/output
onde **** é o nome de campo. Esses Templates são usados quando a formatação de saída de campo em artigos Templates de artigos de lista ou completo.
De entrada encontram-se em Templates de com_cobalt/fields/****/tmpl/input
onde **** é o nome de campo. Esses Templates são usados no formulário de apresentação e elementos de formulário de exibição.
Filtrar Templates são encontrados apenas em campos com filtragem de suporte em com_cobalt/fields/****/tmpl/filter onde **** é o nome de campo. Esses Templates são usados em forma de pesquisa avançada ou no módulo de filtro.
Basta copiar a do template com nome diferente, modificá-lo e colocá-lo em parâmetros campos.
Campos de formulário
Basicamente, os campos do formulário são o objeto de campo mesmo. A única diferença -> result
conter elemento de formulário.
Há dois storages campo principal.
$ This->
fields- é a matriz dos campos onde ID campo é a chave de uma matriz
echo $this->fields[12]->label.': '.$this->fields[12]->result;
TODO: criar outra matriz organizado por chaves para suportar vários Templates de formulário tipo
$ This-> sorted_fields
- matriz multinível onde o primeiro elemento é o ID do grupo de campos (0 para não agrupada) e os campos de segundo nível de campos onde a chave matriz é a chave de campo.
Depurar
Às vezes, você vai precisar fazer algo extraordinário. E você vai ter que saber os dados do resultado reais de campo.
htmlspecialchars echo ($ item-> fields_by_id [12] -> result);
Este pedaço de código vai ajudar você a ver personagens ocultos e obter uma idéia de como processar.
7. Parâmetros do template
Para a criação de mais template eficaz que você pode usar parâmetros do template. Você pode adicionar seus próprios parâmetros que podem afetar posições template de estilo ou de campo ou fazer qualquer outra influência que você deseja.
Em default_record_default.xml
- qualquer arquivo XML do template que você vai encontrar dois grupos de parâmetros. Essas são tmpl_params e tmpl_core . Aqui está o exemplo.
<fields name="tmpl_params">
<fieldset name="general">
<field name="max_width" type="text" size="6" default="150" label="CSELCTMAXW" description="CSELWDESCR" />
<field name="cat_ordering" type="list" label="CORDERING" default="c.lft ASC">
<option value="c.lft ASC"> CORDERING </ option>
<option value="c.title ASC"> CORDERNAMEASC </ option>
<option value="c.title DESC"> CORDERNAMEDESC </ option>
</ Field>
<field name="cat_descr" type="list" default="0" label="CTOOTIPDESCR" description="">
<option value="0"> CNO </ option>
<option value="before"> CTOOLTIPBEFOR </ option>
<option value="after"> CTOOLTIOPAFTER </ option>
<option value="full"> CTOOLTIPFULL </ option>
</ Field>
<Fieldset />
</ Campos>
<fields name="tmpl_core">
<fieldset name="general2">
<field name="category_label" type="radio" label="CSHOWLABEL" default="1">
<option value="0"> CNO </ option>
<option value="1"> CYES </ option>
</ Field>
<Fieldset />
</ Campos>
Você pode criar fieldsets como muitos name="tmpl_params"> <fields
como você quer. Na verdade, é até bom, porque quanto mais os parâmetros de ficar organizado, mais fácil de usar.
Você pode adicionar também a descrição e os atributos de etiqueta como esta
<fieldset name="general"
label="main Parameters"
description="Do not miss required parameters">
// fields go her ...
</fieldset>
Depois de adicionados parâmetros em template XML agora você pode acessá-los no template.
Em cada template de parâmetros passados de forma diferente. Eu sei que não é bom. Mas às vezes há quatro Templates são carregados pela mesma visão. Para saber como usar params template, olhar para o início do arquivo de template PHP. Em cada template de núcleo Cobalt iniciamos $ params
variável. Algo parecido com isto
$ Params = $ this-> tmpl_params;
Ou, às vezes como esta
$params = $this->tmpl_params['list'];
Mas é sempre $ params
. Desta forma, você pode aprender como iniciar parâmetros objeto de seu template.Basta deixar esta linha de código no template.
Você pode usá-lo n template agora como esta
<? Php if ($ params-> get ('tmpl_params.item_icon_title')):>
<? Php echo JHTML :: imagem ($ url);>
<Php endif;?>
Onde tmpl_params
de tmpl_params.item_icon_title
o nome do grupo de parâmetros eitem_icon_title
é o nome do campo
<field ícone name="item_icon_title" type="radio" label="Show Title" default="1">
<option value="0"> CNO </ option>
<option value="1"> CYES </ option>
</ Field>
8. Definir Campo No Parâmetros
Esta é uma técnica muito legal para gerenciar, estilo ou campos individuais de posição.
Por exemplo, há Price campo. E você quer que ele seja mostrado no lugar especial, com um estilo especial.
Adicionar parâmetro fieldlist
<fields name="tmpl_params"> <fieldset name="name1" label="Position Fields" description="Set fields to be positioned"> <field name="field_price" type="meresourcesfields" label="Where is the price?" /> </fieldset> </fields>
Se qualquer parâmetro sobre sua ligação com o campo, o seu nome tem que começar com `field_` *.Se você quiser que apenas alguns tipos de campos a serem mostrados no uso de lista
filtros = "'texto', 'textarea', 'html'"
. Isto é o que você pode limitar os tipos de campos para mostrar.se você quiser este campo para por selecionar vários add
size = "15"
emutiple = "true"
No template de usar algo como isto
<? Php if (isset ($ item-> fields_by_key [$ params-> get ('tmpl_params.field_price')])):> <span class="price-tag"> <? Php echo $ item-> fields_by_key [$ params-> get ('tmpl_params.field_price')] -> resultado;>? </ Span> <Php endif;?>
E eu теo preciso dizer-lhe como estilo . etiqueta de preço
de classe em seu arquivo de template css.
Q: E se eu mostrar explicitamente apenas um campo e descanso Eu quero buscar e eu não quero que este campo para ser listado no ciclo?
Depois que você chamou este campo você pode atribuir nada a partir da matriz de campo.
<? Php if (isset ($ item-> fields_by_key [$ params-> get ('tmpl_params.field_price')])):> <span class="price-tag"> <? Php echo $ item-> fields_by_key [$ params-> get ('tmpl_params.field_price')] -> resultado;>? <? Php unset ($ item-> fields_by_key [$ params-> get ('tmpl_params.field_price')]);> </ Span> <Php endif;?>
Então, mais tarde, quando você pegá-lo não vai estar lá.
Criar o pacote de instalação
Há duas formas de criação de pacote de instalação. Primeiro é muito simples. Basta arrumar todos os arquivos para zip. Se você arrumar alguns Templates você pode organizar arquivos para sub-pastas, mas na verdade não importa como você fez as malas, o instalador irá determinar pelo nome do propósito do arquivo e copiá-lo para o local correto.
Este pacote vai ser bom apenas para instalar através de template gestor.
Se você quer que seu pacote de template para instalar através do instalador do Joomla, então você precisa ler sobre como criar pacotes de instalação do Joomla. Isto está além assunto deste tutorial.