ฉันจะซ่อนหน้า / โหนดเริ่มต้นได้อย่างไร


22

Drupal นอกกรอบมาพร้อมกับหน้า (ซึ่งเป็นโฮมเพจเริ่มต้น) ที่กำหนดให้กับเส้นทางของโหนด

ฉันจะหลีกเลี่ยงผู้ใช้เข้าถึงและเปลี่ยนเส้นทางไปยังหน้าแรกของไซต์จริงได้อย่างไร


ฉันใช้วิธีการแก้ปัญหาที่เสนอโดย @kiamlaluno เพื่อเปลี่ยนเส้นทางโหนดไปยังเส้นทางอื่น

คำตอบ:


17

ไม่มีวิธีง่ายๆในการซ่อนหน้านั้น หากคุณไม่ได้ใช้มันคุณสามารถใช้hook_menu_alter ()FALSEและลบมันสมบูรณ์หรือตั้งค่าการโทรกลับเพื่อการเข้าถึง


1
นี่คือคำตอบที่ดีของไคลฟ์ที่มีรหัสexapmle drupal.stackexchange.com/a/24133/6309
milkovsky

8

สร้างนามแฝงของเส้นทางที่เปลี่ยนเส้นทางจาก / node ไปยังหน้าเว็บที่คุณต้องการใช้เป็นหน้าแรก


1
สิ่งนี้ไม่ทำงานสำหรับฉันด้วยโมดูล url alias, aliasing / node ไปที่ <front> หรือ index.php ฉันพยายามที่จะส่งต่อไปยัง /
john

5
ฉันทำ / โหนดไปที่ <front> แล้วมันก็ใช้ได้ดี
Sean Bannister

เช่นเดียวกับคุณ @john UI ของนามแฝงไม่อนุญาตให้ฉันตั้งค่าไปยังหน้าแรก ฉันต้องใช้โมดูลเปลี่ยนเส้นทางแทน
Postscripter

6

ฉันชอบที่จะเปลี่ยนหน้าการเรียกกลับของ / โหนดดังนั้นจึงแสดงข้อผิดพลาด 404 หน้า
นี่จะแสดงหน้า 404 ที่คุณกำหนดเองเสมอเมื่อเข้าถึง / โหนด

function yourmodule_menu_alter(&$items) {
    $items['node']['page callback'] = 'drupal_not_found';      
}

4
<?php
function MY_MODULE_menu_alter(&$callbacks) {
unset($callbacks['node']);
}
?>

หรือเพิ่มสิ่งนี้ใน settings.php (เนื้อหาขาเข้า URL)

<?php
function custom_url_rewrite_inbound(&$result, $path, $path_language) {
  if ($path == 'node') {
    $result = ''; 
  }
}
?>


1

คล้ายกับคำตอบ berdirs ฉันมีรหัสต่อไปนี้รวมอยู่ในโมดูลที่เป็นส่วนหนึ่งของ distro แบบกำหนดเองที่เราสร้างจาก:

function HOOK_menu_alter(&$items) {
  $items['node']['page callback'] = '_HOOK_empty_home';
}

function _HOOK_empty_home() {
  drupal_set_title('');
  return '';
}

ด้วยวิธีนี้ฉันสามารถรักษาเส้นทาง 'node' เป็น frontpage และใช้บริบทเพื่อจัดตำแหน่งบล็อกเพื่อสร้าง frontpage ที่ต้องการ


1

คุณสามารถสร้างเพจที่แม็พกับ / โหนดซึ่งไม่ได้เผยแพร่ ดังนั้นผู้ใช้ที่จะเรียกใช้เส้นทางนี้จะมีหน้าที่ต้องห้ามในการเข้าถึง


1

ทางออกที่ง่ายสำหรับฉันคือการสร้างเพจที่ฉันต้องการให้เป็นโฮมเพจและตั้งค่า URL เป็น / node จากนั้นภายใต้ / admin / config / system / site-information ตั้งค่าหน้าแรกเริ่มต้นเป็น / node คุณไม่เคยเห็น "/ node" ใน URL เว้นแต่ว่ามีคนพิมพ์ไว้จริง ๆ มันรวดเร็วง่ายและสะอาดหากคุณต้องการตั้งค่า URL หน้าแรกเป็น / node


1

คุณสามารถสร้างหน้าใหม่ด้วย URL ของโหนดและผู้คนสามารถเห็นข้อความเปลี่ยนเส้นทางไปที่หน้าแรกหรือเลือกหมวดหมู่ของบางสิ่ง


1

ฉันลองหลายอย่าง จากนั้นสำหรับ Drupal 7 และ 8 ฉันพบว่านี่ง่ายที่สุดโดยไม่ต้องเขียนโค้ดใด ๆ :

ดาวน์โหลดและเปิดใช้งานโมดูล node_page_disable, globalredirect และ redirect

(หมายเหตุ: โมดูล node_page_disable เปลี่ยนเส้นทาง / โหนดไปที่หน้าข้อผิดพลาด 404 ไม่พบ)

จากนั้นเพิ่มการเปลี่ยนเส้นทางสำหรับ / node -> หน้าแรก

โปรดทราบว่าการเปลี่ยนเส้นทางเปลี่ยนเส้นทางทั้ง / node และ / node / ไปยังหน้าแรก

และบทความที่มีประโยชน์ในการอ่าน: https://www.drupalaid.com/blog/3-things-you-should-hide


มันเป็นมุมมองใน D8 ดังนั้นdrush @example.com views-disable frontpageจะปิด จะยังคงได้รับ 404 แม้ว่าจนกว่าสิ่งอื่นจะเสร็จสิ้น
colan

0

สร้างโหนดจากนั้นไปที่การกำหนดค่าไซต์ -> ข้อมูลไซต์และตั้งค่าโฮมเพจเป็นพา ธ ของโหนด ดังนั้นถ้ามันเป็นโหนดแรกของคุณมันจะเป็นโหนด / 1

แก้ไข: โดยค่าเริ่มต้นเพียงแค่สร้างโหนดที่หน้านั้นจะหายไปหากคุณทำเครื่องหมาย 'เลื่อนระดับเป็นหน้าแรก' ขั้นตอนข้อมูลเว็บไซต์จะทำให้โหนดนั้นเป็นหน้าแรกที่แท้จริงของคุณ


1
จริง แต่/nodeยังสามารถเข้าถึงได้โดยค่าเริ่มต้นจะไม่ปรากฏให้เห็น
Laxman13

ฉันอ่านผิดสิ่งที่เขาขอ สิ่งที่เกี่ยวกับโมดูลการเปลี่ยนเส้นทางเส้นทางhttp://drupal.org/project/path_redirect
Mike L.

1
น่าเสียดายที่การเปลี่ยนเส้นทางไม่อนุญาตให้คุณเปลี่ยนเส้นทางจากเส้นทางที่มีอยู่ มันตรวจสอบเพื่อดูว่าเส้นทางที่คุณพยายามเปลี่ยนเส้นทางนั้นเป็นเส้นทางที่ถูกต้องหรือไม่และหากเป็นเช่นนั้นการเปลี่ยนเส้นทางจะไม่ถูกสร้างขึ้นและจะมีคำเตือนปรากฏขึ้น
Laxman13

เย็น. ฉันไม่ได้ใช้มันในชั่วขณะหนึ่งดังนั้นมันจึงไม่เป็นไปในทางบวก ขอบคุณ!
Mike L.

0

คุณสามารถใช้โมดูลกฎเพื่อตรวจสอบ URL ก่อนที่จะดูหน้าและเปลี่ยนเส้นทางผู้ใช้ไปยังหน้าอื่นหากคุณต้องการ

  • เพิ่มกฎกับกิจกรรม: จะมีการดูเนื้อหา
  • เพิ่มเงื่อนไข: เรียกใช้งานโค้ด PHP ที่กำหนดเองและตรวจสอบเส้นทาง
  • เพิ่มการกระทำ: Page Redirectและเลือกเส้นทางที่คุณต้องการเปลี่ยนเส้นทาง

สิ่งนี้ไม่เพียง แต่แนะนำการลงโทษที่รุนแรงเท่านั้น แต่ควรถือว่าไม่ปลอดภัยมาก ไม่ควรแนะนำ "เรียกใช้งาน PHP แบบกำหนดเอง" เว้นแต่จะมีผลข้างเคียงและข้อเสียทั้งหมดที่รู้จักกันดี -1 สำหรับสิ่งนั้น
berkes

@berkes ฉันจะสันนิษฐานว่าเป็นเพราะกฎจะตรวจสอบการโหลดหน้าเว็บทุกครั้งและทำให้ไซต์ช้าลงหรือไม่ เหตุใดจึงเป็นเช่นนั้น "เรียกใช้งาน php ที่กำหนดเอง" มักจะขมวดคิ้วอยู่เสมอ เห็นได้ชัดว่าไม่ดีสำหรับการใช้งานของผู้ใช้ แต่มีข้อเสียสำหรับนักพัฒนาซอฟต์แวร์เช่นกัน? ขออภัยถ้านานมาแล้วทำงานหนักจริง ๆ ให้ดีที่สุดเท่าที่ฉันจะทำได้ด้วย Drupal และเรียนรู้ "ins and outs" (สามารถเพิ่มส่วนที่สองเป็นคำถามของตัวเองถ้าจำเป็น)
Laxman13

โปรดพิจารณาคำถามใหม่ "ข้อเสียของการใช้ 'กำหนดเอง' PHP 'กับพื้นที่ตัวอย่างบางส่วน (บล็อก, อาร์กิวเมนต์มุมมอง, ตัวกรอง php ฯลฯ ) ที่สามารถพูดคุยนี้คืออะไร?
berkes

0

คำถามยอดนิยมเมื่อหลายปีก่อนมีคำตอบที่น่าสนใจอยู่แล้ว อย่างไรก็ตามคาดเดาสิ่งที่: "วันนี้มีโมดูลสำหรับมัน ... จริง ๆ แล้วแม้แต่สอง!" (ไม่ได้กล่าวถึงในคำตอบก่อนหน้าใด ๆ )

อ่านรายละเอียดเพิ่มเติม ... (คำพูดมาจากหน้าโครงการของพวกเขา) ...

ผู้ดูแลหน้าโหนด (ทั้ง D6 หรือ D7):

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

  • แกนหลัก - Drupal จะจัดการการเข้าถึงหน้าโหนดตามปกติ: ผู้ใช้ทั้งหมดที่ได้รับอนุญาต 'เข้าถึงเนื้อหา'
  • ปิดการใช้งาน - ไม่มีใครสามารถเข้าถึง / โหนดได้ จะส่งคืน 'หน้าไม่พบ' (404)
  • โดยการอนุญาต - การเข้าถึงจะได้รับการจัดการโดยการอนุญาตใหม่: 'หน้าโหนดการเข้าถึง'

โหนดปิดการใช้งานหน้า (ทั้ง D6 หรือ D7 แต่เฉพาะรุ่น rc2):

ช่วยให้เข้าถึง UI ได้ง่ายและปิดการใช้งานพา ธ/ โหนดเมื่อไม่ได้ใช้ นี้ได้รับแรงบันดาลใจจากการพิจารณาการรักษาความปลอดภัยในการผลิตโมดูลตรวจสอบ


-1

วิธีที่ดีที่สุดคือการซ่อนโหนดจากฟังก์ชัน template_preprocess_page

function template_preprocess_page(&$variables) {
    if ($variables['is_front'] == 1) {
        if (isset($variables['page']['content']['system_main'])) {
            unset($variables['page']['content']['system_main']);
        }
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.