PHP mengetik waktu kuis pop! (Pengungkapan penuh: Saya tidak menang di kantor kami).
Seperti yang sudah ditunjukkan, ini adalah kode l()
yang kami perhatikan:
if (isset($options['fragment']) && $options['fragment'] !== '') {
$options['fragment'] = '#' . $options['fragment'];
}
Jadi inilah pertanyaannya: Nilai apa yang dilemparkan ke string kosong tetapi melewati yang berikut?
(isset($var) && $var !== '')
Jawabannya adalah FALSE
:!
Jadi, kita bisa mencoba ini:
l(t('My link'), NULL, array('fragment' => FALSE));
Yang memberi kita:
<a href="/#">My link</a>
Untungnya kita dapat menghapus garis miring dengan meneruskan external => TRUE
:
l(t('My link'), NULL, array('external' => TRUE, 'fragment' => FALSE));
Yang memberi kita:
<a href="#">My link</a>
Ledakan. Hal-hal yang kami lakukan untuk menghindari merangkai string html secara manual, eh?
Nota bene:
Saya tidak yakin saya benar-benar merekomendasikan mencetak tautan seperti ini dari php dalam keadaan normal. Tanpa javascript Anda, semua tautan itu akan membuatnya melompat pengguna Anda ke bagian atas halaman ( yang, sedikit mengejutkan saya, adalah perilaku khusus ). Mungkin harus menunjuk ke suatu tempat yang berfungsi tanpa javascript.
Jika tautan benar-benar hanya masuk akal dengan javascript (seperti kontrol untuk tayangan slide hanya-js atau sesuatu), saya pikir lebih baik menambahkan tautan ke halaman dengan javascript. Atau, jika Anda benar-benar ingin meletakkannya di sumber Anda, pastikan itu display:none
secara default. Drupal memiliki .js
kelas pada html untuk kemudian menunjukkannya ketika javascript ada.
javascript:void(0)