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

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

2
แทนที่เทมเพลตฟิลด์ด้วยโมดูลที่กำหนดเอง
แทนการเพิ่มไฟล์ tpl (ในกรณีนี้ media-youtube-video.tpl.php) ให้กับธีม ฉันจะลบล้างเทมเพลตฟิลด์จากโมดูลที่กำหนดเองได้อย่างไร รวมถึงเมื่อใช้ฟิลด์ในมุมมอง
13 7  entities  theming 

4
ฉันจะรับ URL ดิบเป็นฟิลด์ใน Views ได้อย่างไร
ในมุมมองฉันต้องส่งคืน url ดิบที่มีให้เป็นค่า href ไปยังฟิลด์ชื่อ (เมื่อเป็นลิงค์) หรือค่า Content: ลิงค์ ฉันคิดว่าเดิมฉันสามารถเลือกเนื้อหา: ลิงค์และตัด HTML ในการเขียนใหม่ แต่ไม่ต้องไป ฉันต้องการ URL แบบเต็มเพื่อที่ฉันจะได้ผ่านเป็นพารามิเตอร์ในการเขียนฟิลด์ใหม่ คิดว่าจะทำอย่างนี้ได้อย่างไร?
13 7  views  entities 

5
ลบรายการหนึ่งโดยทางโปรแกรมจากเขตข้อมูลหนึ่งโดยทางโปรแกรมหนึ่ง
วิธีใดที่เหมาะสมในการลบรายการฟิลด์หนึ่งรายการสำหรับฟิลด์หลายรายการโดยทางโปรแกรม (นั่นคือฟิลด์เฉพาะและเอนทิตีเฉพาะไม่ใช่ประเภทฟิลด์หรืออินสแตนซ์และประเภทเอนทิตี) นี่คือความเป็นไปได้บางอย่างที่ฉันได้พิจารณาแล้วว่าไม่ได้ผล: โหลดนิติบุคคลที่มีentity_load()การตั้งค่ารายการสนาม = โมฆะหรือ = array () field_attach_update()แล้วประหยัด มันเป็นเรื่องที่ใกล้เคียงที่สุดที่ฉันได้พบ แต่ใบรายการฟิลด์ผีดิบ null ในฐานข้อมูลซึ่งแสดงให้เห็นถึงเป็นแถวว่างเปล่าในรูปแบบจนกว่าฟอร์มถูกบันทึกไว้และhook_field_is_empty()สามารถเตะใน ( hook_field_is_empty()มีการกำหนดค่าดังกล่าวว่า = โมฆะหรือ = array () จะธง ว่างเปล่า) โหลดนิติบุคคลที่มีentity_load(), unsetting field_attach_update()รายการข้อมูลโดยคีย์แล้วประหยัด ดูเหมือนว่าจะไม่ทำอะไรเลย - ดูเหมือนว่า Drupal จะตีความรายการที่ไม่ได้มีไว้เป็นสัญญาณเพื่อไม่แก้ไข (แปลกบางครั้งฉันยังได้รับเวลาหมดเวลาสอบถามสูงสุดเมื่อลองวิธีนี้) field_attach_delete() - นี่มันทื่อมากเกินไป: มันฆ่าทุกฟิลด์สำหรับเอนทิตี field_purge_data() - ดีกว่า แต่ก็ยังทื่อเกินไป: มันฆ่ารายการทั้งหมดของฟิลด์ไม่ใช่เฉพาะรายการ เพื่อชี้แจงฉันได้รับรหัสที่พบ (และโหลด) เอนทิตีที่มีฟิลด์ที่มีหลายรายการและค้นหารายการเฉพาะในฟิลด์นั้นที่จำเป็นต้องลบออก ฉันต้องการลบรายการนั้นอย่างสมบูรณ์โดยไม่ต้องแตะรายการอื่นใดหรือฟิลด์อื่น ๆ ในเอนทิตี
13 7  entities 

3
มีความปลอดภัยที่จะตัดทอนตารางการแก้ไขฟิลด์หรือไม่?
ฉันสังเกตว่า D7 สร้างตาราง field_revision สำหรับทุกฟิลด์และทำซ้ำเนื้อหาจากสำเนาของฟิลด์ตารางแม้ว่าจะมีการปิดการแก้ไข ฉันมีตารางข้อความขนาดใหญ่และใช้พื้นที่มาก (หลาย GB) การตัดทอนตารางการแก้ไขจะปลอดภัยหรือไม่ PS: ในขณะที่ผมยังได้รายงานว่าเป็นปัญหา
13 7  entities  database  nodes 

1
ประเภทฟิลด์: ข้อความกับข้อความยาว
อะไรคือความแตกต่างระหว่าง 'ข้อความ' และ 'ข้อความยาว' ใน Drupal 7 ถ้าเป็นเพียงความยาวฐานข้อมูลอักขระจะดีกว่าถ้าใช้ความระมัดระวังและเป็นค่าเริ่มต้นในการใช้ข้อความแบบยาวในสถานการณ์ที่โดเมนที่มีค่าที่เป็นไปได้นั้นไม่เป็นที่ทราบแน่ชัด?
13 7  entities 

4
การอัพเดตฟิลด์โดยทางโปรแกรม hook_node_update
ขณะนี้พยายามอัปเดตฟิลด์ทุกครั้งที่มีการสร้างหรืออัปเดตโหนด อย่างไรก็ตามค่าไม่ได้ถูกบรรจุภายในโหนดฉันจะสามารถเข้าถึงวัตถุโหนดด้วยเบ็ดนี้โดยเฉพาะหรือไม่? ฉันจะพลาดอะไรได้บ้าง function vbtoken_node_update($node) { entity_get_controller('node')->resetCache(array($node->nid)); $types = node_type_get_types(); //What are the current Node Content Types? $yes = ($types['volunteer_project']->type); if($node->type === $yes){ $hash = md5($node->title . $node->nid . $node->nid); $hashed = substr($hash, 0, 6); $node = node_load($node->nid); $node->tcode[$node->language][0]['value'] = $hashed; node_save($node); watchdog('vbtoken', 'Added a new Token code to %nid', …
13 7  entities 

3
จะรับค่าฟิลด์ย่อหน้าได้อย่างไร
ฉันต้องการสร้างรายการผลิตภัณฑ์ใน drupal และส่งไปที่เว็บเซอร์ สำหรับสิ่งนี้ฉันสร้างประเภทเอนทิตีพร้อมย่อหน้าสำหรับแต่ละผลิตภัณฑ์ ฉันจะโหลดย่อหน้าและเข้าถึงฟิลด์ได้อย่างไร จนถึงตอนนี้ฉันเห็นเฉพาะ target_id และ target_revision_id ของผลิตภัณฑ์ ขอบคุณ! $nodestorage = \Drupal::entityManager()->getStorage('node'); $productslist = $nodestorage->loadUnchanged(9)->toArray(); foreach($productslist['field_products'] as $prod) { debug($prod); } ผลลัพธ์: Array ( [target_id] => 1 [target_revision_id] => 3 )

4
ทำไมฉันไม่สามารถเพิ่มนามสกุลไฟล์อื่นที่อนุญาตลงในฟิลด์รูปภาพ Drupal 7 ได้
ฉันได้เพิ่มนามสกุลไฟล์ SVG สำหรับการอัปโหลดภาพผ่านadmin/structure/types/manage/image/fields/gallery_imageตามที่คุณเห็นด้านล่าง: แต่เมื่อฉันไปอัปโหลดภาพฉันยังคงไม่ได้รับอนุญาตให้อัปโหลด SVG ฉันกด "บันทึก" ในหน้าผู้ดูแลระบบและฉันล้างแคชและฉันเห็นการตั้งค่าตามที่ฉันต้องการในฐานข้อมูลเมื่อฉันตรวจสอบfield_config_instanceตาราง ต้องมีตารางหรือแคชอื่นที่ไม่ได้อัปเดต ความคิดใด ๆ

7
การตรวจจับฟิลด์ที่ถูกเปลี่ยนแปลงโดยทั่วไปในรูปแบบที่กำหนดเองก่อนที่จะบันทึกโหนด
ฉันเพิ่มเขตข้อมูลบางอย่างจากประเภทเนื้อหาลงในแบบฟอร์มที่กำหนดเองโดยใช้ field_attach_form () เมื่อส่งแบบฟอร์มฉันกำลังประมวลผลฟิลด์เหล่านั้นโดยการเรียก field_attach_form_validate () และ field_attach_submit () จาก #validate และ #submit callbacks ณ จุดนั้นฉันต้องการเปรียบเทียบออบเจกต์ post-submit ที่เตรียมไว้กับโหนดเดิมและรำคาญกับ node_save () ถ้ามีฟิลด์ใดฟิลด์หนึ่งเปลี่ยนไป entity_load_unchanged()ดังนั้นผมจึงเริ่มต้นด้วยการโหลดโหนดเดิมใช้ น่าเสียดายที่อาร์เรย์ฟิลด์ในวัตถุโหนดดั้งเดิมไม่ตรงกับอาร์เรย์ฟิลด์ในวัตถุโหนดที่เตรียมไว้ซึ่งกำลังรอการบันทึกแม้ว่าจะไม่มีการเปลี่ยนแปลงใด ๆ ในฟิลด์ดังนั้น "$ old_field == $ new_field ที่เรียบง่าย "การเปรียบเทียบเป็นไปไม่ได้ ตัวอย่างเช่นฟิลด์ข้อความธรรมดาจะปรากฏเช่นนี้ในต้นฉบับ: $old_node->field_text['und'][0] = array( 'value' => 'Test', 'format' => NULL, 'safe_value' => 'Test', ); ในขณะที่โหนดที่จัดเตรียมปรากฏเป็นเช่นนี้ $node->field_text['und'][0] = array( …
12 7  entities 

3
การเข้าถึงค่าประเภทเขตข้อมูลที่ไม่รู้จักเมื่อใช้ entity_metadata_wrapper
ฉันได้มองหาการใช้คลาสเอนทิตี้เมตาดาต้าแรปเปอร์ (กำหนดโดยโมดูลเอนทิตีใน Drupal 7) เพื่อเข้าถึงค่าของฟิลด์เนื่องจากนี่เป็นวิธีที่สะอาดในการทำเช่นนั้น มีสองสิ่งที่ทำให้เรื่องนี้ค่อนข้างน่าอึดอัดใจ สมมติว่าฉันมี wrapper สำหรับประเภทเนื้อหาที่กำหนดฟิลด์ชื่อfield_somethingเช่น: $wrapper = entity_metadata_wrapper('node', node_load($nid)); $value = $wrapper->field_something->value(); ปัญหาแรกที่ฉันมีคือฉันไม่มีทางรู้ล่วงหน้าว่าสิ่งที่ฉันได้รับคือค่าจริง (สตริง, เอนทิตี้, ฯลฯ ), ตัวห่อโครงสร้างของเมทาดาทาอื่น (เมื่อเขตข้อมูลมีหลายค่า) หรืออาร์เรย์ (เมื่อ เขตข้อมูลมีคุณสมบัติหลายอย่าง) ฉันพบวิธีที่จะตอบคำถามเหล่านั้นโดยใช้info()วิธีการ: $info = $wrapper->field_something->info(); $is_multi_value = (strpos($info['type'], 'list<') === 0); $has_multiple_properties = isset($info['property info']]); อย่างไรก็ตามมันก็ใช้งานได้จริง เมื่อใดก็ตามที่ฉันต้องการใช้เขตข้อมูลโดยไม่ทราบว่ามันเป็นคำนิยามก่อนมือฉันต้องคำนึงถึงหลายกรณี ทำให้รหัสของฉันค่อนข้างหนัก เพื่อจัดการกับเรื่องนี้ฉันได้เขียนโค้ดบางอย่างที่: มั่นใจได้ว่าเราจะได้รับอาร์เรย์คืนเสมอแม้ว่าจะเป็นเขตข้อมูลค่าเดียว เมื่อมีคุณสมบัติหลายอย่างให้ส่งคืนค่าของคอลัมน์แรก จุดที่ 1 ที่นี่จะใช้งานได้เสมอเว้นแต่ผู้โทรต้องการทราบว่านี่เป็นเขตข้อมูลค่าเดียวหรือไม่ จุดที่ …
12 entities 

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

2
วิธีที่ยั่งยืนที่สุดในการรับข้อมูลโดยรวมในทุ่งนาคืออะไร?
EntityFieldQuery ไม่ได้มีวัตถุประสงค์เพื่อใช้ในการเรียกใช้ฟังก์ชั่นรวม (SUM, AVG, ฯลฯ ) ในข้อมูลภาคสนามเพราะเป็นผู้ไม่เชื่อเรื่องพระเจ้า SQL ที่กล่าวว่าการดำเนินการดังกล่าวถูกต้องตามกฎหมายจะต้องเรียกใช้เป็นครั้งคราว ตามฟังก์ชั่น SQL กับ EntityFieldQueryและEntityFieldQueryโดยเฉพาะและวิธีการใช้ฟังก์ชั่นรวม SUM, ARG และ MAXแบบสอบถาม SQL จำเป็นต้องใช้และวิธีการที่เหมาะกับกรณีการใช้งานของฉันที่ดีที่สุด ฉันกำลังพูดกับ @chx เมื่อวานนี้และเขาแนะนำให้ใช้ฟังก์ชันภายในสองอย่างเพื่อค้นหาชื่อฟิลด์และชื่อคอลัมน์ ฉันแค่สงสัยว่าสิ่งนี้จะยั่งยืนหรือไม่และถ้ามันเหมาะสมที่จะทำใน codebase ที่ฉันอาจปล่อยให้เป็นเวลานาน ถ้ามันเป็นวิธีที่ดีที่สุดมันก็เป็นวิธีที่ดีที่สุด ฉันไม่ต้องการที่จะทำก่อนที่ฉันจะแน่ใจอย่างแน่นอนเพราะมันรู้สึกยุ่ง
12 7  entities  database 


3
“ Entity API” เพิ่มอะไรให้กับ Drupal API และทำไมโมดูลถึงขึ้นอยู่กับมัน
Entity APIโมดูลขยาย API นิติบุคคลที่กำหนดไว้ใน Drupal โมดูลใดที่ควรใช้ API ที่มีให้จากโมดูลนั้น โมดูลที่ใช้เอนทิตีใหม่ง่ายกว่าที่จะเขียนหรือไม่หากขึ้นอยู่กับโมดูลEntity API โดย "ง่ายต่อการเขียน" ผมหมายความว่าโมดูลที่ใช้Entity APIจะต้องมีรหัสน้อยที่จะถูกเขียนขึ้นเมื่อเทียบกับโมดูลที่ไม่ได้ใช้Entity API ฉันอ่านหน้าโครงการ แต่ฉันก็ยังไม่เข้าใจเหตุผลที่ต้องการสร้างโมดูลที่ขึ้นอยู่กับโมดูลEntity APIแทนที่จะเป็นโมดูลที่ขึ้นอยู่กับรหัสหลักของ Drupal เท่านั้น ฉันเข้าใจว่าโมดูลที่ขยายกฎและการใช้งานเอนทิตีควรใช้โมดูลEntity API ในกรณีแรกเหตุผลก็คือการที่กฎโมดูลขึ้นอยู่กับEntity APIโมดูล
12 entities 

5
ฉันจะรับเลเบลชนิดโหนดจากอ็อบเจ็กต์โหนดได้อย่างไร?
ฉันกำลังพยายามรับป้ายผนึก (โหนดประเภทป้ายกำกับ) ของโหนดจากวัตถุโหนดใน Drupal 8 ใช้งานได้ แต่ดูเหมือนยืดยาว: $node_type = \Drupal::entityManager()->getStorage('node_type')->load($node->getType())->get('name'); จะมีวิธีอื่นในการรับป้ายกำเป็นไปได้ในวิธีที่ซับซ้อนน้อยลงหรือไม่
12 8  entities 

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