Saya ingin menggunakan path dasar dalam file template Drupal 8. Saya mencoba yang berikut, tetapi saya tidak mendapatkan hasil yang benar.
{{ app.request.baseUrl }}
{{base_path}}
Yang saya butuhkan adalah jalur absolut ke node {{ app.request.baseUrl }}/{{ url }}
.
Salah satu solusi yang saya temukan adalah meletakkan kode ini di kait preproses, dan meneruskannya ke tema.
$host = \Drupal::request()->getHost();
$response = \Drupal::httpClient()
Saya mencari solusi yang lebih baik. Apa yang bisa saya gunakan daripada yang saya gunakan?
path()
fungsi tersebut dapat diterapkan untuk mengambil rute simpul:{{ path('entity.node.canonical', {'node': node.id}) }}
Anda hampir tidak perlu secara eksplisit membangun jalur dari bagian-bagian di Drupal 8. Saya akan menggunakan sesuatu seperti ini:
sumber
toString
tetapi memperhatikan acara, lalu saya mencoba kint (url) dan melihatnya objek.Di dalamnya
page.html.twig
Anda akan memiliki{{ base_path }}
variabel yang berfungsi . Mengapa tidak tersedia di setiap templat, saya tidak tahu. Seperti yang saya pikir seharusnya dan segala sesuatu tampak berantakan, solusi pilihan saya adalah melakukan persis seperti yang dilakukan Drupal di fungsi halaman preproses untuk tempat yang saya butuhkan.Agar
{{ base_path }}
tersedia untuk memblokir template dalam tema bernama contoh, tambahkan kode ini keexample.theme
file:Seperti disebutkan dalam jawaban yang diterima yang disediakan oleh MPD, jika mendapatkan simpul atau URL entitas lain ada metode untuk melakukan semuanya untuk Anda.
Namun, ada alasan untuk mendapatkan base_path, seperti saat menampilkan gambar yang hidup di folder tema Anda.
{{ directory }}
menyediakan path ke folder tema, tetapi meninggalkan path dasar (biasanya hanya a / tetapi untuk mempertahankan fungsi Drupal yang tepat dari subdirektori domain yang tidak boleh di-hardcode). Padapage.html.twig
atau dalam templat apa pun yang memiliki preprosesor di atas, ini akan berfungsi untuk tujuan itu:Dan tentu saja jawaban Shawn Conn bekerja dengan baik jika Anda dapat menekan keinginan Anda untuk template cantik, tetapi saya tidak bisa.
sumber
Dan Menurut Dokumentasi Halaman pada 8.2.x , dua variabel global ditambahkan untuk mengembalikan halaman depan dan Url Path Basis:
Jadi Anda bisa mendapatkan Url halaman font dengan
front_page
dan mendasarkan Urlbase_url
Catatan
mendapatkan url halaman depan
{{ url('<front>') }}
memiliki masalah ketika Anda ingin menyambungkannya dengan jalur lain, misalnyakembali
ini berarti secara default bukan teks dan mengembalikan array mampu render untuk ranting
sumber
Di
& dalam file templat yang dapat Anda hubungi melalui
sumber
Sejauh ini utas ini tidak membawa solusi yang tepat. Kami dapat menggabungkannya dengan menggunakan render_val ()
Inilah cara saya menggunakannya, untuk mendapatkan jalur absolut dari gambar entitas:
1 kita mendapatkan URL dasar situs. Maka kita perlu menghapus ekstra /. Lalu kami menggabungkan path dasar kami dengan path relatif gambar kami.
sumber
Semua hal di atas gagal untuk saya, karena saya memiliki pengaturan jalur bahasa, sehingga URL halaman depan saya terlihat seperti
https://example.com/en
.Saya akhirnya menggunakan kode ini untuk mendapatkan URL basis aktual untuk situs saya:
sumber
Saya tahu Anda sudah menandai ini sebagai benar, tetapi ini dapat digunakan sebagai elemen ranting dalam file template tanpa kerja ekstra. Saya menemukan ini di blok - system-branding-block.html.twig dari tema Classy. Jadi Anda bisa menggunakannya seperti ini:
sumber