Template ranting sedang membuat daftar tautan yang datang dengan kelas. Dasar:
{{ mylink }}
kode ranting akan menampilkan sesuatu seperti
<a href="#" class="someclass" >the text</a>
Tidak semua tautan memiliki kelas. Saya ingin menulis template ranting yang akan menampilkan sesuatu seperti ini:
<a href="#" class="someclass" >
<span class="sprite someclass" ></span>
the text</a>
Apa yang saya coba:
Saya mencari template ranting untuk menimpanya. Sayangnya tampaknya tautan tidak dirender oleh templat ranting.
Saya mencoba memperbarui variabel ranting seperti
set mylink['#title'] = "<span>...</span>" ~ mylink['#title']
Tapi itu tidak akan membiarkan saya melakukan itu.
Jawaban:
Berikut adalah solusi hanya ranting untuk bidang tertentu yang membutuhkan perawatan ini; itu bukan solusi umum untuk semua tautan di mana pun.
some-template.twig:
sumber
item.link['#url']
memberi url yang sama untuk semua bahasa!Saya tidak menemukan cara untuk mengubah tautan '#markup' di ranting, tetapi ada cara untuk mengubahnya pada fase render.
Saya membuat modul kecil ini yang memperluas fungsionalitas Tautan dan membuatnya dapat menyuntikkan beberapa hal pada tautan yang diberikan. Jadi mari kita lakukan beberapa kode, saya akan jelaskan di komentar ...
Struktur file modul:
Isi file:
better_link.info.yml
better_link.module
BetterLinkFormatter.php
BetterLink.php
Penting:
Ini akan berfungsi untuk semua bidang tautan Anda , tentu saja, jika Anda mengubah formatter-nya di kelola tampilan (mengedit tipe simpul Anda).
Semoga bermanfaat.
Permintaan ke @artfulrobot: Bisakah Anda menguji modul ini? Saya pikir masalah terjemahan bisa diselesaikan dengan cara ini.
sumber
Anda bisa menambahkan array render ke #title, seperti:
Jawaban lama:
Anda dapat mengganti layanan penghubung tautan
Buat modul (alternative_linkgenerator), dengan file info alternative_linkgenerator.info.yml
Buat file bernama alternative_linkgenerator.services.yml
Berikutnya adalah membuat kelas, tambahkan folder bernama "src" (mengikuti standar autoloading PSR-4) dan dalam file ini disebut AlternativeLinkGenerator.php. (Ini adalah salinan 1: 1, Anda perlu menyesuaikan hal-hal untuk Anda)
Edit services.yml (biasanya di situs / default / services.yml di basis kode 8 Drupal Anda) dan tambahkan yang berikut ini:
alat peraga ada di sini
sumber
template_preprocess_links
dipanggil (itu sesuatu yang spesifik, meskipun itu nama generik yang terdengar).core/lib/Drupal/Core/Utility/LinkGenerator.php
'sgenerate()
digunakan dan pasukan ini teks yang akan melewatiHtml::escape()
sehingga tidak ada cara untuk melakukannya tanpa benar-benar melewati link di formatter Drupal.coba kode ini:
{%- berakhir jika %}
atau yang ini (ini berasal dari: https://github.com/liip/bund_drupal_starterkit_theme/blob/master/templates/navigation/links--language-block.html.twig ):
sumber