Como removo os dois pontos dos meus rótulos de campo?

10

Eu simplesmente quero poder remover os dois pontos dos meus rótulos de campo renderizados, por exemplo:

Nome do hotel: to Nome do hotel

Copiei field.tpl.php e removi o cólon lá, mas não importa o que Drupal se recuse a aceitá-lo, ele está puxando o cólon de outro lugar.

Como posso fazer isso com uma função template.php?

blue928
fonte
você limpou o cache?
AjitS
sim, várias vezes. no go
blue928
@ blue928 Veja o post duplicado, você precisa substituir theme_form_element()para fazer isso #
Clive
Esse nó / correção acima simplesmente removeu os dois pontos do formulário quando alguém está editando / inserindo conteúdo. Preciso remover os rótulos depois que eles são renderizados no nó. .. então, não seria uma duplicata do acima. Na verdade, eu implementei essa solução para obter esse resultado.
blue928

Respostas:

16

A resposta é definitivamente usar field.tpl.php . Se você procurar a fonte desse arquivo, poderá ver as linhas ofensivas:

<?php if (!$label_hidden): ?>
  <div class="field-label"<?php print $title_attributes; ?>>
    <?php print $label ?>:&nbsp;
  </div>
<?php endif; ?>

(espaçamento e recuo meu para maior clareza).

Remover os dois pontos é tão simples quanto substituir as linhas acima por:

<?php if (!$label_hidden): ?>
  <div class="field-label"<?php print $title_attributes; ?>>
    <?php print $label ?>&nbsp;
  </div>
<?php endif; ?>

Acabei de testar isso em uma instalação em branco do Drupal e funciona perfeitamente; não mais dois pontos depois dos rótulos dos campos.

Se você já está fazendo a mesma coisa, mas não está obtendo os resultados corretos, posso pensar em uma ou duas coisas que podem estar dando errado:

  • Você colocou sua versão personalizada do field.tpl.php em uma pasta do módulo, em vez da pasta de temas ativos do site (ela precisa estar na pasta do tema).
  • Outro módulo / elemento no sistema também está substituindo o field.tpl.php, de uma maneira mais robusta do que você atualmente. Ver se é esse o caso, envolverá a desativação sempre tediosa de cada módulo ativado para determinar de onde vem o problema.

Você não poderá fazer a alteração com uma função de pré-processamento de modelo, pois os dois pontos são codificados no arquivo de modelo.

Clive
fonte
Ah, de fato havia outro módulo impedindo que o arquivo de modelo funcionasse corretamente. Obrigado por apontar algumas instruções úteis de depuração.
precisa saber é
9

Acabei de criar um módulo que faz exatamente isso, remove dois pontos (em uma base por campo) dos rótulos dos campos na saída: Colectomia

tanc
fonte
Pode confirmar. Este módulo funciona de forma excelente e é uma solução simples e elegante para o problema.
Mark
2

Se for uma Visualização com campos, basta clicar no campo e desmarcar "Colocar dois pontos após o rótulo" em "Criar rótulo".

Tyler Durden
fonte
2

O conjunto de displays também oferece a mesma funcionalidade:

Se você ativar extras do conjunto de exibição, há uma opção para remover dois pontos antes dos marcadores:

O caminho para isso é: /admin/structure/ds/list/extras/

insira a descrição da imagem aqui

chrisjlee
fonte
1
Isso faz muito mais do que remover o cólon. Se você aplicou CSS personalizado, isso matará isso.
Mark
0

No meu caso, funcionou substituindo theme_field()( field.module) copiando toda a função para o meu template.phparquivo e alterando a linha que lê

$output .= '<div class="field-label"' . $variables['title_attributes'] . '>' . $variables['label'] . '&nbsp;</div>';

Limpe os caches antes de tentar.

Meetai.com
fonte
0

Não consegui encontrar uma resposta para esta pergunta para o Drupal 8 em nenhum lugar. Com o Drupal 8, os dois pontos são adicionados a um arquivo CSS (field.css) no tema principal Classy, ​​se você o estiver usando como tema base. Tudo o que você precisa fazer é substituí-lo no seu próprio arquivo CSS no seu tema.

Portanto, a partir do arquivo field.css original:

.field--label-inline .field__label::after {
    content: ':';
}

No meu arquivo CSS do tema para remover os dois pontos:

.field--label-inline .field__label::after {
    content: '';
}
Stonewall Thomas
fonte