Jak usunąć dwukropek z etykiet pól?

10

Chcę po prostu móc usunąć dwukropek z renderowanych etykiet pól, na przykład:

Nazwa hotelu: na nazwę hotelu

Skopiowałem plik field.tpl.php i usunąłem tam dwukropek, ale bez względu na to, co Drupal odmawia przyjęcia go i wyciąga je z innego miejsca.

Jak mogę to zrobić za pomocą funkcji template.php?

blue928
źródło
wyczyściłeś pamięć podręczną?
AjitS
tak, kilka razy. nie idź
niebieski 928
@ blue928 Zobacz zduplikowane post, trzeba zastąpić theme_form_element()to zrobić
Clive
Powyższy węzeł / poprawka po prostu usunął dwukropki z formularza, gdy ktoś edytuje / wprowadza treść. Muszę usunąć etykiety po ich wyrenderowaniu w węźle. .. więc nie byłby to duplikat powyższego. W rzeczywistości wdrożyłem to rozwiązanie, aby uzyskać ten wynik.
blue928

Odpowiedzi:

16

Odpowiedzią jest zdecydowanie użyć field.tpl.php . Jeśli spojrzysz na źródło tego pliku, zobaczysz obrażające linie:

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

(moje odstępy i wcięcia dla jasności).

Usunięcie jelita grubego jest tak proste, jak zastąpienie powyższych linii:

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

Właśnie przetestowałem to na pustej instalacji Drupala i działa idealnie; koniec dwukropków po etykietach pól.

Jeśli już robisz to samo, ale nie osiągasz poprawnych wyników, mogę wymyślić jedną lub dwie rzeczy, które mogą się nie udać:

  • Umieściłeś swoją niestandardową wersję field.tpl.php w folderze modułu, a nie w aktywnym folderze motywów witryny (musi znajdować się w folderze motywów).
  • Kolejny moduł / element w systemie zastępuje również field.tpl.php w bardziej niezawodny sposób niż obecnie. Sprawdzenie, czy tak jest, będzie wymagało zawsze żmudnego wyłączania każdego włączonego modułu w celu ustalenia, skąd pochodzi problem.

Nie będzie można dokonać zmiany za pomocą funkcji wstępnego przetwarzania szablonu, ponieważ dwukropek jest zakodowany na stałe w pliku szablonu.

Clive
źródło
Ach, rzeczywiście istniał inny moduł uniemożliwiający poprawne działanie pliku szablonu. Dziękujemy za wskazanie przydatnych wskazówek dotyczących debugowania.
blue928
9

Właśnie utworzyłem moduł, który robi dokładnie to, usuwa dwukropki (na podstawie poszczególnych pól) z etykiet pól na wyjściu: kolektomia

Tanc
źródło
Potwierdzam Ten moduł działa doskonale i jest prostym, eleganckim rozwiązaniem tego problemu.
Mark
2

Jeśli jest to widok z polami, wystarczy kliknąć pole i odznaczyć „Umieść dwukropek za etykietą” w „Utwórz etykietę”.

Tyler Durden
źródło
2

Pakiet wyświetlacza zapewnia również tę samą funkcjonalność:

Jeśli włączysz dodatki do zestawu wyświetlania, możesz usunąć dwukropki przed etykietami:

Ścieżka do tego jest: /admin/structure/ds/list/extras/

wprowadź opis zdjęcia tutaj

chrisjlee
źródło
1
Robi to o wiele więcej niż usuwanie jelita grubego. Jeśli zastosujesz niestandardowy CSS, to go zabije.
Mark
0

W moim przypadku działało to przez przesłonięcie theme_field()( field.module) poprzez skopiowanie całej funkcji do mojego template.phppliku i zmianę wiersza, który czyta

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

Wyczyść pamięć podręczną przed próbą.

Meetai.com
źródło
0

Nigdzie nie mogłem znaleźć odpowiedzi na to pytanie dotyczące Drupala 8. W Drupal 8 dwukropek jest dodawany z plikiem CSS (field.css) w głównym motywie Classy, ​​jeśli używasz go jako motywu podstawowego. Wszystko, co musisz zrobić, to zastąpić go w swoim własnym pliku CSS w swoim motywie.

Tak więc z oryginalnego pliku field.css:

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

W moim pliku CSS motywu, aby usunąć dwukropek:

.field--label-inline .field__label::after {
    content: '';
}
Stonewall Thomas
źródło