Score:0

ฉันจะทำให้บล็อกแบบกำหนดเองแสดงเนื้อหาต่างๆ ในหน้าแรกได้อย่างไร

ธง za

ฉันมีโมดูลที่กำหนดเองใน Drupal 9 (แสดงบล็อกในภูมิภาค) ที่มีแบบฟอร์มผู้ดูแลระบบพร้อมช่องทำเครื่องหมายสำหรับแสดงเฉพาะใน "หน้าแรก" หรือหากไม่ได้เลือกในหน้า "ทั้งหมด"

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

ฉันมีฟังก์ชั่นการสร้างอย่างง่ายเพื่อทดสอบสิ่งนี้ (build() อยู่ภายใน src/plugin/block) ซึ่งใช้งานไม่ได้:

 สร้างฟังก์ชั่นสาธารณะ () {
        $alert_front = \Drupal::config('alert_front.settings')->get('ด้านหน้า');
        $current_is_front = \Drupal::service('path.matcher')->isFrontPage();
    
      ถ้า ($current_is_front) {
        กลับ [
          '#markup' => $this->t("ใช่ หน้าแรกเท่านั้น"),
        ];
      }อื่น{
       กลับ [
        '#markup' => $this->t('@alert และ @fp',[
          '@alert' => alertType($alert_type),
          '@fp' => $alert_front,
        ]),
       ];
     }
}

Drupal block api ไม่ได้ให้อะไรฉันมากที่นี่ แต่ฉันจะขุดต่อไป ขอบคุณสำหรับความคิดใด ๆ

sonfd avatar
in flag
ดู [ความสามารถในการแคชของอาร์เรย์เรนเดอร์](https://www.drupal.org/docs/8/api/render-api/cacheability-of-render-arrays) ใน drupal.org
Score:1
ธง vg

โดยปกติแล้ว คุณจะจำกัดบล็อกไว้ที่ประเภทเนื้อหา หน้า หรือบทบาท (หรือผสมกัน) เมื่อวางบล็อกในกล่องโต้ตอบแก้ไขบล็อก - ดู https://www.drupal.org/docs/core-modules-and-themes/core-modules/block-module/managing-blocks

ถึงกระนั้น สิ่งนี้จะไม่จัดการการแคชสำหรับเนื้อหาไดนามิกบล็อกของคุณ

หากคุณต้องการสร้าง "สวิตช์" นี้ในวิธีการสร้างของคุณ คุณต้องคิดถึงการแคชด้วยตัวเองอย่างแน่นอน ดูที่ fe คำตอบนี้จาก @Berdir https://drupal.stackexchange.com/a/199601/3218

คุณสามารถใช้ url.path.is_front บริบท - ดู https://www.drupal.org/docs/drupal-apis/cache-api/cache-contexts สำหรับข้อมูลเพิ่มเติม

บางทีการแบ่งบล็อกของคุณออกเป็นสองบล็อกอาจทำให้ง่ายและชัดเจนขึ้น

za flag
ขอบคุณ @remy ฉันลงเอยด้วยการใช้แคชตามโพสต์อื่น นั่นคือตั๋ว

โพสต์คำตอบ

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