แสดงรายการเมนูที่ จำกัด การเข้าถึงผู้ใช้ที่ไม่ระบุชื่อ


9

ฉันมีเว็บไซต์ที่ใช้โมดูลส่วนตัวเพื่อตั้งค่าการเข้าถึงเนื้อหาและแน่นอนหน้าบางหน้าของฉันมีรายการเมนู ตอนนี้ถ้าฉันตั้งค่าหน้าเว็บให้เป็นส่วนตัวผู้ใช้เท่านั้นที่มีสิทธิ์ที่เหมาะสมจะเห็นว่าเป็นสิ่งที่ยอดเยี่ยมและสิ่งที่ฉันต้องการ

แต่ฉันมีปัญหาเล็กน้อยกับรายการเมนูพวกเขาหายไปหากเนื้อหาที่กำหนดให้พวกเขาไม่ใช่สาธารณะ (เช่นหน้าที่กำหนดให้พวกเขาเป็นส่วนตัว) นี่ก็โอเค แต่ฉันอยากจะยังสามารถแสดงรายการเหล่านั้นได้ ในการนำทางดังนั้นหากผู้ใช้คลิกที่พวกเขามันจะพาพวกเขาไปที่หน้าเข้าสู่ระบบขอให้พวกเขาป้อนรายละเอียดเพื่อที่จะเห็นหน้านั้น

ดังนั้นโดยทั่วไปฉันต้องการเปลี่ยนพฤติกรรมของรายการเมนูในแบบที่พวกเขาจะปรากฏแก่สมาชิกนิรนามและสมาชิกที่ลงทะเบียนของเว็บไซต์ แต่เมื่อคุณคลิกที่พวกเขาคุณจะสามารถดูหน้า (ถ้าคุณเข้าสู่ระบบ ใน) หรือถูกเปลี่ยนเส้นทางไปยังหน้าเข้าสู่ระบบ (หากไม่ระบุชื่อ)

ฉันพบโซลูชันนี้ซึ่งไม่ใช่วิธีที่ดีที่สุดสำหรับฉันเนื่องจากฉันมีหลายหน้าเช่นนั้นฉันจึงมองหาวิธีที่ดีกว่า ฉันได้ลองใช้โมดูลการมองเห็นรายการเมนูแล้วแต่นั่นก็ไม่ได้ช่วยอะไรเช่นกัน!

ฉันจะทำสิ่งนี้ให้สำเร็จได้อย่างไร

Luca


ฉันมีรหัสบางอย่างที่github.com/bbinkovitz/derpl/tree/master/for อาย_menuที่อาจเป็นประโยชน์กับคุณ คุณอาจจะต้องเปลี่ยนค่าบางอย่างหรือตั้งชื่อเมนูของคุณแบบเดียวกับที่ฉันทำ แต่คุณสามารถเริ่มต้นได้

คำตอบ:


4

ปัญหาของคุณค่อนข้างบ่อย

นี่คือการอภิปรายวิธีการใช้เคล็ดลับดังกล่าวใน Drupal 6 และ 7 และ 8: http://drupal.org/node/300607

Drupal 6 (และ 7) ลบความสามารถในการแสดงรายการเมนูที่ผู้ใช้ไม่สามารถเข้าถึงได้ อย่างไรก็ตามในบางกรณีเป็นที่พึงปรารถนาที่จะแสดงรายการเมนูแม้ว่าผู้ใช้จะไม่สามารถเข้าถึงรายการเมนูได้ ตัวอย่างเช่นถ้าคุณใช้กลไกการพิสูจน์ตัวตนที่พยายามรับการพิสูจน์ตัวตนเมื่อมีการแสดง 403 คุณยังคงต้องการแสดงรายการเมนูเพื่อให้ผู้ใช้ได้รับโอกาสในการให้ข้อมูลประจำตัวเพื่อเข้าสู่ระบบ

โซลูชันสำหรับ Drupal 7 อยู่ที่นี่: http://drupal.org/node/300607#comment-4450062

หากคุณต้องการโมดูลสำเร็จรูป - คุณสามารถดาวน์โหลดได้ที่นี่https://github.com/systemseed/always_visible


ขอบคุณมาก. หวังว่าพวกเขาจะมีตัวเลือกนี้ในตัว Drupal
Luca

1

ฉันมีสถานการณ์ที่คล้ายกันซึ่งหน้าต่างๆจะต้องปรากฏในระบบเมนู แต่เนื้อหาควรปรากฏต่อผู้ใช้ที่ล็อกอินเท่านั้น ทางออกสุดท้ายนั้นง่ายมากและยังคงทำงานต่อไป

เท็มเพลตโหนดจะตรวจสอบว่าผู้ใช้ล็อกอินหรือไม่หากเป็นเช่นนั้นจะแสดงเนื้อหา มิฉะนั้นข้อความจะปรากฏพร้อมกับลิงค์เพื่อล็อกอินหรือลงทะเบียน

พวกเขาจะไม่เปลี่ยนเส้นทางโดยอัตโนมัติดังนั้นหากเป็นสิ่งที่สำคัญแล้วนี่ไม่ใช่วิธีแก้ปัญหา

รหัสสั้น:

<?php  
global $user;       
if ( $user->uid ) :
print render($content);
// or in some situations, display a view;
else : 
print 'Please <a href="https://drupal.stackexchange.com/user/login">log in</a> or <a href="https://drupal.stackexchange.com/user/register">register</a> etc etc.'
endif; 
?>

ขอบคุณ แต่นั่นไม่ใช่วิธีแก้ปัญหาที่ดีด้วยเหตุผลหลายประการอย่างหนึ่งที่ฉันใช้ระบบเทมเพลตประเภทอื่นและฉันต้องการเข้าถึงเนื้อหาดังนั้นเมื่อแสดงรายการเนื้อหาเช่นใน Views ที่จะเคารพการเข้าถึง
Luca

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