รายการเมนูที่ไม่สามารถคลิกได้


21

ในเว็บไซต์ Drupal 8 ฉันต้องการเพิ่มรายการเมนูด้วย "ไม่มีลิงก์" ฉันคิดว่าอนุญาต nolink แต่เมื่อฉันป้อนสิ่งนี้ฉันพบข้อผิดพลาด

เส้นทางที่ป้อนด้วยตนเองควรเริ่มต้นด้วย /,? หรือ #.

มีวิธีการเพิ่มรายการเมนูที่ไม่สามารถคลิกได้โดยไม่เพิ่ม "#" เพราะ "#" เพิ่มแอตทริบิวต์ [data-drupal-link-system-path = ""] และ [class = "is-active"]

คำตอบ:


44

คุณต้องใช้route:<nolink>เพื่อให้บรรลุสิ่งนี้ จากนั้นจะตรวจสอบและแสดงผลโดยไม่มีลิงก์


ขอบคุณมากฉันลองแล้วมันใช้งานได้ดี แต่ยังคงเพิ่มคุณสมบัติของ [data-drupal-link-system-path = "<front>"] และ [class = "is-active"]
Mohamed Osama Gbril

1
นั่นเป็นปัญหาที่แยกต่างหากจากสิ่งที่คุณพยายามที่จะบรรลุและเป็นข้อบกพร่องหลักหรือปัญหากับชุดรูปแบบของคุณ แต่route:<nolink>เป็นคำตอบที่แน่นอน มันใช้ได้กับ Pathauto ด้วย
เควิน

มีการรายงานข้อบกพร่องของคลาส "ไม่ทำงาน" ที่นี่: drupal.org/project/drupal/issues/2838351
FiNeX

มันใช้งานได้สำหรับฉัน ขอบคุณสำหรับวิธีแก้ปัญหาที่มีความรู้
นักเรียน

2

ในการสร้างรายการเมนูที่ไม่มีลิงค์ในโมดูลที่กำหนดเองให้เพิ่ม [module_name] .links.menu.yml:

url: 'internal:##'

คุณต้องเพิ่มอักขระ # ตัวที่สอง (หรือตัวอักษรหรือคำอื่น ๆurl: 'internal:#nolink') เพื่อที่จะใช้แอตทริบิวต์ href จะไม่ทำให้ว่างเปล่าซึ่งจะทำให้หน้าโหลดซ้ำหากผู้ใช้คลิกที่ลิงค์


นี่เป็นทางออกที่ดีเช่นกัน สำหรับฉันดีกว่าลบลิงก์ที่ลบแท็ก <a> จากนั้นรายการเมนูนี้จะสูญเสียสไตล์ css ที่เกี่ยวข้อง
Juanmi


0

สำหรับ Drupal 8 คุณสามารถสร้างลิงก์โดยใช้ Link :: จาก TextAndUrl โดยทางโปรแกรมซึ่งไม่สามารถลิงก์ได้ดังนี้:

$my_link = Link::fromTextAndUrl(t('This is my link text'), Url::fromUri('route:<nolink>'));

คุณสามารถแปลงเป็นอาร์เรย์ได้โดยใช้: $my_link = $my_link->toRenderable();

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.