किसी फ़ील्ड के माध्यम से नोड्स से संबंधित फ़ाइल ऑब्जेक्ट्स को पकड़ना आसान है EntityMetadataWrapper
:
$wrapper = entity_metadata_wrapper('node', $node);
$images = $wrapper->field_images;
तो यह बहुत अच्छा है। हालाँकि, मैं मानक फ़ाइल ऑब्जेक्ट के कुछ गुणों का उपयोग करना चाहता हूं, और वे उपलब्ध नहीं हैं। जब मैं $images[0]->file
उपरोक्त कोड का उपयोग करने पर उपलब्ध गुणों को देखता हूं, तो मैं इन्हें देखता हूं:
- खूंटी
- नाम
- अंगविक्षेप
- आकार
- यूआरएल
- टाइमस्टैम्प
- मालिक
सबसे विशेष रूप से, uri
गायब है, और इसके स्थान पर एक url
संपत्ति है, जो छवि फ़ाइल के लिए पूर्ण बाहरी URL है। मैं इन चित्रों को उनके URI (अंगूठे आदि बनाना) के माध्यम से हेरफेर करना चाहता हूं, इसलिए मैं ऐसा करना छोड़ रहा हूं:
$fid = $images[0]->file->fid->value();
$uri = file_load($fid)->uri;
जो EntityMetadataWrapper
पहली जगह में उपयोग करने के पूरे बिंदु को नकारात्मक लगता है।
मुझे किसकी याद आ रही है? लिपटे फ़ाइल ऑब्जेक्ट पर URI कहां है? यदि यह उपलब्ध नहीं है, सभी चीजों के प्यार के लिए अच्छा और शुद्ध, क्यों नहीं ?!
मुझे पता है कि मैं URL को एक URI में वापस आ सकता हूं, लेकिन यह भी बहुत अनावश्यक लगता है।
hook_entity_property_info_alter()
" तो उस के ठीक, बस जानना चाहता था
entity_metadata_system_entity_property_info()
, जहां नई संपत्तियों का एक गुच्छा मिलता है $info['file']['properties']
। अगर file_entity में है तो मैं शर्त लगाने के लिए तैयार हूं कि सरणी में पहले से ही इकाई गुण मौजूद होंगे। मैं बाद में या कल को एक उत्तर लिखने की कोशिश करूंगा यदि कोई पहले से नहीं करता है
uri
file_entity के साथ है।