คำถามติดแท็ก entities

โหนดความคิดเห็นข้อกำหนดด้านอนุกรมวิธานและผู้ใช้ในศัพท์ที่ใช้ตั้งแต่ Drupal 7 มักเรียกว่า "เอนทิตี"

2
วิธีการหลีกเลี่ยง node_access เมื่อใช้ EntityFieldQuery
ด้วยรหัสต่อไปนี้หากผู้ใช้ปัจจุบันไม่มี 'บายพาสการเข้าถึงโหนด' (ดู_node_query_node_access_alter ()สำหรับการตรวจสอบที่แน่นอน) ดังนั้นแบบสอบถามจะตรวจสอบ node_access แม้ว่าฉันจะไม่ใช้แท็ก "node_access" ฉันจะหลีกเลี่ยงการตรวจสอบ node_access ด้วยแบบสอบถามต่อไปนี้สำหรับผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบได้อย่างไร ฉันกำลังใช้รหัสนี้จากโมดูลดังนั้นฉันจึงสามารถตรวจสอบการอนุญาตได้ด้วยตนเองโดยไม่จำเป็นต้องตรวจสอบ node_access $query = new EntityFieldQuery; $result = $query ->entityCondition('entity_type', 'node') ->entityCondition('bundle', 'foo') ->fieldCondition('custom_id', 'value', $custom_id) ->execute();
12 7  entities  users 

1
โหลดเอนทิตีไฟล์โดย URI
มีวิธีโหลดไฟล์โดย URI ใน Drupal 8 หรือ Drupal 9 หรือไม่? ใน Drupal 7 เป็นไปได้โดยตัวอย่างถัดไป: $uri = 'public://file.xyz'; // Take a look at: file.inc::file_load_multiple $files = file_load_multiple(array(), array('uri' => $uri)); $file = reset($files); // If empty, $file will be false, otherwise will contain the required file นำมาจากที่นี่https://www.drupal.org/forum/support/module-development-and-code-questions/2012-06-06/load-a-file-by-uri#comment-6493610
12 8  entities  files  uri 

1
การรวบรวมฟิลด์เทียบกับย่อหน้า
ผมใช้การเก็บฟิลด์ในเว็บไซต์ก่อนหน้านี้ของฉันและฉันต้องเผชิญกับปัญหาประสิทธิภาพการทำงานบางอย่างดังนั้นเวลานี้ผมกำลังมองหาทางเลือกสำหรับการเก็บฟิลด์ ผมหาคำตอบทางเลือกที่จะเก็บฟิลด์ แต่ฉันไม่พบวิธีแก้ปัญหาเหล่านี้แตกต่างกันหรือคล้ายกันมากเป็นพิเศษ [การรวบรวมฟิลด์และย่อหน้า ] บางทีใครบางคนสามารถช่วยอธิบายได้? เพื่อให้ฉันสามารถตัดสินใจได้ดี

1
กู้คืนเขตข้อมูลที่ถูกลบ
ฉันมีประเภทเนื้อหาที่มี 4 ฟิลด์ซึ่งแต่ละรายการเป็นการอ้างอิงคำศัพท์ มี 100 โหนดแต่ละการอ้างอิง 4 คำที่กำหนด ฉันลบหนึ่งในฟิลด์เหล่านี้โดยไม่ตั้งใจออกจากผู้ดูแลระบบ> โครงสร้าง> เนื้อหาประเภท> ประเภทเนื้อหา ... ทำให้มีโหนดทั้งหมด 100 โหนดที่สูญเสียคำอ้างอิงฟิลด์ที่สูญหายนี้ที่มีอยู่ หลังจากติดตั้งโมดูลผู้ดูแลระบบฐานข้อมูลฉันเห็นว่าฐานข้อมูลสำหรับเขตข้อมูลที่ถูกลบของฉันยังคงปรากฏอยู่มันถูกเปลี่ยนชื่อเป็น "field_deleted_field_74" ใช้ mysql ฉันสามารถเปลี่ยนชื่อฐานข้อมูลนี้กลับไปเป็น "field_data_field_originalname" - เช่นการใช้ชื่อเครื่องเดิมสำหรับฟิลด์ที่ถูกลบ นอกจากนี้ฉันยังสามารถเปลี่ยนค่าของคอลัมน์ที่ถูกลบภายในฐานข้อมูลนี้จาก '1' เป็น '0' ฉันได้ทำข้างต้นด้วยฐานข้อมูล 'ผี' อื่น ๆ ที่ฉันพบว่าถูกเรียกว่า "field_revision_field_74" ... ปัญหาของฉันตอนนี้คือฟิลด์ที่ถูกเปลี่ยนชื่อของฉันไม่ปรากฏเป็นฟิลด์ที่มีอยู่แล้วในฟิลด์จัดการประเภทเนื้อหาของฉันแสดงหรือที่ผู้ดูแลระบบ> รายงาน> รายการเขตข้อมูล เมื่อฉันเรียกใช้ 'เขตข้อมูลเขตข้อมูล Drush' จะหายไปเช่นกัน ฉันจะนำมันกลับมาได้อย่างไร ฉันสมมติว่ามีฐานข้อมูลอื่นที่อ้างอิงถึงที่ฉันต้องการแก้ไข ขอบคุณ!

3
ฉันจะรับไฟล์ URI จากวัตถุ EntityMetadataWrapper ได้อย่างไร
การเก็บอ็อบเจ็กต์ไฟล์ที่เกี่ยวข้องกับโหนดผ่านฟิลด์เป็นเรื่องง่ายโดยใช้EntityMetadataWrapper: $wrapper = entity_metadata_wrapper('node', $node); $images = $wrapper->field_images; นั่นเยี่ยมมาก อย่างไรก็ตามฉันต้องการใช้คุณสมบัติบางอย่างของวัตถุไฟล์มาตรฐานและไม่สามารถใช้งานได้ เมื่อฉันดูคุณสมบัติที่มีอยู่ในการ$images[0]->fileใช้รหัสข้างต้นฉันเห็นเหล่านี้: fid ชื่อ ละครใบ้ ขนาด URL การประทับเวลา เจ้าของ ที่สะดุดตาที่สุดuriหายไปและในสถานที่มีurlคุณสมบัติซึ่งเป็น URL ภายนอกแบบเต็มไปยังไฟล์ภาพ ฉันต้องการจัดการภาพเหล่านี้ผ่านทาง URI ของพวกเขา (สร้างนิ้วโป้ง ฯลฯ ) ดังนั้นฉันจึงไม่ทำเช่นนี้ $fid = $images[0]->file->fid->value(); $uri = file_load($fid)->uri; ซึ่งดูเหมือนจะลบล้างจุดทั้งหมดของการใช้EntityMetadataWrapperในสถานที่แรก ฉันกำลังคิดถึงอะไร URI อยู่ที่ไหนในวัตถุไฟล์ที่ถูกหุ้มไว้? หากยังไม่พร้อมสำหรับความรักของทุกสิ่งที่ดีและบริสุทธิ์ทำไมไม่! ฉันรู้ว่าฉันสามารถแยกแยะ URL กลับเป็น URI ได้ แต่นั่นก็ไม่จำเป็นเช่นกัน
11 7  entities 


1
EntityFieldQuery นี้ไม่มีประสิทธิภาพจริงๆหรือ
ฉันเป็นมือใหม่ที่ยอมรับกับ Entity API แต่ฉันพยายามที่จะแก้ไข ฉันกำลังทำงานในไซต์ที่ใช้ประเภทเนื้อหาจำนวนมากที่มีฟิลด์ต่าง ๆ แนบมาด้วย ไม่มีอะไรแฟนซี ดังนั้นเมื่อฉันต้องการดึงชุดของรายการฉันได้รับในความไม่รู้ของฉันเรียกโดยตรงลงในฐานข้อมูลและทำสิ่งนี้ $query = db_select('node', 'n')->extend('PagerDefault'); $query->fields('n', array('nid')); $query->condition('n.type', 'my_content_type'); $query->leftJoin('field_data_field_user_role', 'role', 'n.nid = role.entity_id'); $query->condition('role.field_user_role_value', $some_value); $query->leftJoin('field_data_field_withdrawn_time', 'wt', 'n.nid = wt.entity_id'); $query->condition('wt.field_withdrawn_time_value', 0); $query->orderBy('n.created', 'desc'); $query->limit(10); $result = $the_questions->execute()->fetchCol(); (ใช่ฉันอาจจะยุบเส้นเหล่านี้เป็น$the_questions->ประโยคเดียวได้โปรดเพิกเฉยต่อเรื่องนั้นตอนนี้) พยายามเขียนสิ่งนี้ด้วย EntityFieldQuery ฉันคิดว่า: $query = new EntityFieldQuery(); $query ->entityCondition('entity_type', 'node') ->entityCondition('bundle', 'my_content_type') …
11 7  database  entities 


6
วิธีแสดงสรุป (ทีเซอร์) เหนือเนื้อหาในมุมมองเนื้อหาแบบเต็ม
ฉันต้องการแสดงทีเซอร์ที่ด้านบนของแต่ละบทความภายใต้ชื่อเรื่องดังต่อไปนี้ในโครงร่าง“ เนื้อหาเต็ม”: หัวข้อ ทีเซอร์ (สรุปบทความ) ภาพ ร่างกาย นอกจากนี้ทีเซอร์ควรมีการจัดรูปแบบของตัวเอง (เช่นตัวเอียงและแบบอักษรขนาดใหญ่) ฉันไม่พบวิธีการใด ๆ โดยไม่ต้องแก้ไขไฟล์ tpl หรือไฟล์หลัก วิธีแก้ไขคือเพิ่มฟิลด์ "article_teaser" ใหม่ให้กับประเภทเนื้อหาของฉันจากนั้นจัดการจอแสดงผลเพื่อรับเลย์เอาต์ของฉันในมุมมอง“ เนื้อหาเต็ม” ใช้งานได้ แต่ฉันไม่ต้องการมีสองทีเซอร์ฟิลด์ในแบบฟอร์มเนื้อหาอินพุตของฉันเพราะฉันควรพิมพ์ข้อความเดียวกันสองครั้ง ดูเหมือนว่าฉันไม่สามารถแยกส่วนเนื้อหาในส่วน "ข้อความ" และ "สรุป" ของมันได้ แต่ฉันสามารถแสดงหนึ่งหรืออื่น ๆ แต่ไม่ใช่ทั้งสองอย่าง! มีวิธีใดบ้างที่จะทำเช่นนั้น? (สภาพแวดล้อมของฉัน: Drupal 7 พร้อมธีมย่อย Zen)
11 7  nodes  entities 

6
รับค่าของฟิลด์จากเอนทิตี
สิ่งที่ฉันติดตั้งบนไซต์ของฉันคือโมดูล Entity API และ Entityform โมดูล Entityform ช่วยให้ฉันสามารถสร้างฟอร์มที่ผู้ใช้สามารถส่งและเขตข้อมูลฟอร์มพร้อมให้ฉันใช้ในมุมมองคล้ายกับประเภทเนื้อหาที่จะทำงาน โดยปกติแล้วจะดึงค่าของเขตข้อมูลจากโหนดไปยังแม่แบบของฉันด้วย php ฉันจะทำต่อไปนี้: <?php echo $node->field_name[$node->language][0]['value']; ?> อย่างไรก็ตามสิ่งนี้ไม่ทำงานกับเอนทิตี / เอนทิตี ไม่มีใครรู้วิธีการทำเช่นนี้สำหรับเขตข้อมูลภายในเอนทิตี้ของ? บางคนแนะนำให้ใช้ฟังก์ชั่น devel และ dpm () แต่ฉันก็ไม่รู้ว่าจะใช้มันอย่างไร ตัวอย่างเฉพาะบางประการเกี่ยวกับวิธีที่ฉันสามารถรับค่าของฟิลด์นี้จะช่วยฉันได้มากจริงๆ
11 7  entities 

1
ทุกอย่างต้องการมัดหรือไม่
ฉันเรียนรู้เกี่ยวกับ Entity API ฉันมีตารางพิเศษง่ายๆที่ฉันต้องการ "ลดระดับความสามารถ" เพื่อให้ฉันสามารถใช้ใน Views ได้เช่น ฉันได้อ่านหนังสือไปดูวิดีโอดูตัวอย่างเล็ก ๆ น้อย ๆ ฉันติดอยู่บนแนวคิดของการรวมกลุ่ม ฉันเข้าใจว่าบันเดิลคืออะไร (เช่นประเภทโหนดคือบันเดิลของเอนทิตีโหนด) แต่สำหรับการใช้งานของฉันจะมีเพียงชุดเดียวเท่านั้น ในตัวอย่างที่ฉันเคยเห็นบันเดิลจะถูกเก็บไว้ในตารางฐานข้อมูล นี่ไม่จำเป็นสำหรับฉันเพราะมันจะเป็นค่าเดียวกันที่เก็บไว้กับทุกเรคคอร์ด ดังนั้นฉันคิดว่าฉันสามารถข้ามสิ่งนี้ได้หรือให้เอนทิตีของฉันคืนสตริงมาตรฐานสำหรับบันเดิล ฉันเข้าใจผิดหรือเปล่า? บันเดิลต้องถูกนำมาใช้เสมอและนำไปใช้ที่ระดับตารางฐานข้อมูลหรือไม่?
11 7  entities 

2
แก้ไข hook_field_formatter_view หรือไม่
วิธีที่ดีที่สุดในการแก้ไขเอาต์พุตฟิลด์คืออะไร ฉันพบ " hook_field_formatter_view " แต่ดูเหมือนว่าไม่มีอะไรเหมือน "hook_field_formatter_view_alter" อยู่ ในกรณีของฉันฉันมีช่องที่อยู่ (โมดูลที่อยู่) ซึ่งใช้ในบานหน้าต่าง "การจัดส่ง" และ "การเรียกเก็บเงิน" ในหน้าเช็คเอาต์ของDrupalCommerce ฉันต้องการเพิ่ม js บางส่วนลงในช่องเหล่านี้ควรใช้แบบฟอร์ม API ของ Drupal "#attached"
11 entities 

1
เหตุใดวิดเจ็ตฟิลด์จึงไม่รวมองค์ประกอบ
องค์ประกอบของแบบฟอร์มมักจะแยกจากวิดเจ็ตฟิลด์ แต่ก็ใช้งานฟังก์ชันที่คล้ายกันมาก บางครั้งการทำงานของพวกเขาก็คืบคลานข้ามทั้งสอง apis เช่นในคำถามนี้: การแสดงฟอร์ม Field Widget Form ที่ทำงานด้วยตัวเองเป็นไปได้หรือไม่? มันดูเหมือนว่าตรรกะกับผมว่าสนามวิดเจ็ตได้หรือไม่ว่าจะเป็นองค์ประกอบฟอร์มที่ยังเกิดขึ้นกับแผนที่โดยตรงกับการจัดเก็บพื้นฐานโดยเฉพาะอย่างยิ่งตั้งแต่รูปแบบ API ที่มีอยู่แล้วในสถานที่เมื่อข้อมูล API มาเกี่ยวกับ ฉันสงสัยว่าทำไมถึงไม่เป็นเช่นนั้น แก้ไข: ตามที่ kiamlaluno ชี้ไว้ด้านล่างตามเอกสารอย่างเป็นทางการวิดเจ็ตเป็นองค์ประกอบของแบบฟอร์ม API ซึ่งหมายความว่าฉันต้องแก้ไขคำถามของฉันเล็กน้อย ฉันสงสัยเกี่ยวกับสิ่งนี้เพราะฉันต้องการใช้วิดเจ็ตการแท็กหลักเป็นองค์ประกอบแบบฟอร์ม อย่างไรก็ตามเพื่อความรู้ที่ดีที่สุดของฉันไม่มีวิธีง่าย ๆ ในการทำเช่นนั้น แม้จะมีเอกสารที่อ้างว่าวิดเจ็ตเป็นองค์ประกอบ แต่ดูเหมือนจะไม่จริง หากวิดเจ็ตถูกประกาศเป็น function hook_widget_info() { return array('my_widget' => array( 'base element' => 'some_form_element_machine_name', )) } ดังนั้นนิยามองค์ประกอบจะแยกจากวิดเจ็ตเพื่อให้สามารถใช้ได้ทั้งสองวิธี แต่ขณะนี้ไม่ใช่กรณี แก้ไข 2: เปิด คำขอคุณสมบัติแล้ว
11 entities 

5
วิธีพิมพ์ฟิลด์ใน node.tpl.php
ฉันต้องการพิมพ์แต่ละฟิลด์จาก$contentตัวแปรในnode.tpl.phpไฟล์ในdivแท็กแยกกัน ฉันจะทำสิ่งนั้นได้อย่างไรและฉันจะทราบได้อย่างไรว่าชื่อของฟิลด์คืออะไร
11 nodes  entities 


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