ماژول Entity Reference فیلدی برای ارتباط با همه چیز در دروپال

ماژول Entity Reference فیلدی برای ارتباط با همه چیز در دروپال

 مفهوم Entity و فیلد را در مقاله «مفهوم Entity، Bundle و Field در دروپال» توضیح دادم. گفته شد که Entity یک مفهوم انتزاعی در دروپال 7 است که به بعضی از اشیاء مثل محتوا، دسته بندی ها، فایل ها، نظرات و کاربران اطلاق می شود. ا بیشترین محتوای سایت های دروپالی را Entity ها در بر می گیرند و این Entity ها هستند که می توانند فیلد داشته باشند. مثلا برای یک نوع محتوا یا یک دسته بندی و یا نظرات می توانید فیلد های جدیدی درست کنید. البته همه Entity ها در دروپال قابلیت توسعه با فیلد ها را ندارند مثل فایل.

در واقع یک Entity type مانند نوع محتوا را می توانیم با افزودن فیلد های جدیدی توسعه بدهیم. می توانیمد فیلد های عددی یا متنی اضافه کنیم. فیلدی اضافه کنیم که محتوا را با یک دسته بندی مرتبط کند. فیلدی برای آپلود فایل و یا آپلود تصویر به محتوا بیافزاییم. با نصب ماژول های دیگر از سایت دروپال، فیلد هایی مثل لینک، نقشه گوگل و یا ویدئو اضافه کنیم.

در تصویر زیر فرم افزودن فیلد جدید به یک نوع محتوا را مشاهده می کنید که می توانیم فیلد هایی از انواع مختلفی که توسط هسته دروپال و یا ماژول های دیگر تعریف شده است، اضافه کنیم.

مدیریت فیلد های یک نوع محتوا در دروپال

فیلدی برای ارتباط با entity های دیگر

به صورت معمول در دروپال می توانید یک فیلد تعریف کنید که بین یک Entity با یک دسته بندی (Taxonomy Vocabulary) ارتباط برقرار کند. این ویژگی این امکان را به ما می دهد که محتوا را دسته بندی کنیم. همانطور که می دانیم Taxonomy Term ها خود یک نوع Entity هستند. بنابراین از این راه ارتباطی بین دو Entity یعنی محتوا و دسته بندی ایجاد شده است.

ولی دسته بندی ها تنها Entity هایی نیستند که می خواهیم با آن ها ارتباط برقرار کنیم. ممکن است بخواهیم یک محتوا را به یک یا چند کاربر (user)  مرتبط کنیم. یا بالعکس یک کاربر را به محتوایی در سایت مرتبط کنیم. یا اینکه یک دسته (Taxonomy Term)  را به کاربری در سایت مرتبط کنیم. یا اصلا یک محتوا را به یک یا چند محتوای دیگر ارتباط بدهیم.

به صورت کلی می خواهیم این توانایی را داشته باشیم که بین همه Entity type های موجود در سایت ارتباط برقرار کنیم. چنین امکانی به صورت پیش فرض در هسته دروپال ارائه نشده است.

ماژول Entity Reference

ماژول Entity Reference امکان تعریف فیلد برای ارتباط با entity های دیگر سایت را به دروپال اضافه می کند. با به کارگیری این ماژول به راحتی می تواند بین همه چیز در دروپال ارتباط برقرار کنید.

این ماژول چهار ویجت (widget) نیز برای فیلد entity reference ارائه می کند. دو ویجت به صورت انتخابی هستند که پیاده سازی یکی به صورت select و دیگری به صورت Radio یا checkbox است. دو ویجت دیگر به صورت Autocomplete هستند. یکی از آنها به صورت متن های جدا از هم و دیگری به استایل Tag ها در دروپال که با کاما از هم جدا می شوند.

این ماژول دو عدد فورمتر (Formatter) برای نوع فیلد entity referenceارائه می کند. یکی (Label) برای نمایش لینک entity که می خواهیم با آن ارتباط برقرار کنیم. دیگری (Rendered Entity) به صورت کامل entity که به آن ارتباط برقرار می کنیم را لود کرده و نمایش می دهد.

ماژول Entity Reference به ماژول Views امکاناتی را برای استفاده بهتر از فیلد های Entity Reference می افزاید.

نصب ماژول Entity Reference

نصب این ماژول مانند همه ماژول های دیگر آسان است. اول فایل فشرده این ماژول را از سایت دروپال دانلود کرده و در فولدر ماژول های سایت خود که احتمالا sites/all/modules است، آن را extract کنید.

باید دقت کنید که این ماژول وابستگی هایی دارد که باید پیش از نصب آنها را فراهم کنید. این ماژول به دو ماژول دیگر به نام های Ctools و Entity API نیز وابسته است. بنابراین پیش از نصب ماژول باید آنها را نیز فراهم کنید. ماژول Ctools با توجه به اینکه یکی از وابستگی های ماژول Views است، احتمالا از قبل آن را دریافت کرده اید. ولی ممکن است ماژول Entity API را از قبل در سایت خود نداشته باشید.

وقتی دو ماژول مورد نظر را فراهم کردید می توانید به صفحه مدیریت ماژول های دروپال (admin/modules) رفته و این ماژول را در گروه Fields یافته و فعال کنید.

نصب ماژول entity reference در دروپال

استفاده از ماژول Entity Reference در دروپال

چون این ماژول یک نوع فیلد جدید به دروپال اضافه می کند، بنابراین جایی که باید به دنبال استفاده از آن بگردیم، مدیریت فیلد های محتوا، دسته ها، کاربران و ... است.

برای نمونه می خواهیم به هر محتوای بلاگ یک کاربر را مرتبط کنیم. مثل کاربری است که متن را برایمان ارسال کرده است.باید به نوع محتوای بلاگ در دروپالیکا یک فیلد اضافه کنیم که از طریق آن بتوانیم یک کاربر را انتخاب کنیم. با توجه به اینکه کاربر یا user یک Entity است با ایجاد یک فیلد از نوع Entity reference می توانیم این کار را انجام بدهیم.

افزودن یک فیلد از نوع Entity Reference به دروپال

به صفحه مدیریت فیلد های نوع محتوای بلاگ می رویم و یک فیلد جدید به صورتی که در شکل زیر می بینید، از نوع Entity Reference ایجاد می کنیم. از میان ویجت های موجود نیز Autocompelete را انتخاب می کنیم. البته ویجت های دیگر نیز قابل استفاده هست. برای اینکه فیلد به نوع محتوا اضافه شود دکمه Save را نیز کلیک می کنیم.

افزودن یک فیلد از نوع Entity Reference در دروپال

سپس وارد صفحه تنظیمات فیلد می شویم. که به شکل زیر است:

تنظیمات فیلد entity reference در دروپال

از قسمت Target type باید نوع entity را مشخص کنیم. با توجه به اینکه می خواهیم ارتباط با یک کاربر ایجاد کنیم بنابراین باید نوع entity برابر User قرار بگیرد. پس از انتخاب User فرم پایین آن قدری تغییر می کند. در صورتی که فیلد ما ارتباط با محتوا بود گزینه Content را انتخاب می کردیم که در ذیل آن می توانستیم نوع محتوا (bundle) را محدود کنیم. با توجه به اینکه User هیچ bundle ای ندارد، دکمه ذخیره تنظیمات فیلد را می زنیم تا به مرحله بعدی برویم.

در مرحله بعد، مانند سایر فیلد های تنظیمات عمومی و خصوصی فیلد را می بینید که می توانیم آنها را تغییر بدهیم. با توجه به اینکه همه مقادیر پیش فرض نیاز ما را برآورده می کند، به گزینه های این صفحه نیز کاری نداریم و دکمه ذخیره را می زنیم.

تا اینجا فیلد مورد نظر ما به همراه تنظیماتی که انجام دادیم، ذخیره شده و به نوع محتوا اضافه می شود.

انتخاب ویجت مناسب برای نمایش فیلد Entity Reference

قبلا ویجت های فیلد Entity Reference را معرفی کردیم. اکنون برای تعیین نمایش فیلدی که اضافه کرده ایم به صفحه مدیریت نمایش فیلد های نوع محتوای بلاگ می رویم تا از بین ویجت های ارائه شده گزینه مناسب را انتخاب کرده و تنظیمات آن را انجام بدهیم.

انتخاب ویجت مناسب برای نمایش فیلد entity reference در دروپال

همانطور که دیده می شود 3 ویجت داریم که دو مورد را قبلا معرفی کرده بودیم. در حالت Label می توانیم عنوان entity مورد نظر را ببینیم. ولی به صورت پیش فرض به entity مورد نظر لینک نیست. با کلیک روی علامت تنظیمات در سمت راست نوع ویجت، ، فرم تنظیمات ویجت را مشاهده می کنیم. می توانیم در صورت نیاز چک باکس Link label to the referenced entity را علامت زده و دکمه updateرا بزنیم تا لینکی به صفحه entity مورد نظر در سایت نمایش داده شود. در اینجا چون میخواهیم یک کاربر را نمایش دهیم لینک صفحه پروفایل آن کاربر نمایش داده می شود.

تنظیمات ویجت لیبل در فیلد entity reference

بعد از انجام تمام تنظیمات لازم در مدیریت نمایش فیلد ها باید دکمه ذخیره انتهای صفحه را نیز بزنید.

در صورتی که ویجت Renderede Entity را انتخاب کنیم، entity مورد نظر به صورت کامل لود و نمایش داده می شود البته می توانیم از بین View mode های مختلف نیز نحوه نمایش فیلد های آن entity را تعیین کنیم.

مشاهد نتیجه افزودن فیلد Entity Reference در عمل 

حالا در فرم افزودن محتوای بلاگ در سایت فیلد جدید را می بینیم:

فیلد entity reference در محتوای دروپال

با نوشتن بخشی از نام یک کاربر، پیشنهاداتی در زیر آن ظاهر می شود، که می توانیم کاربر مورد نظر را پیدا کرده و انتخاب کنیم.

نمایش فیلد Entity referenceدر یک محتوا

در شکل بالا مشاهده می کنید که نام کاربر به صفحه پروفایلش لینک شده است.

به این صورت با استفاده از ماژول Entity Reference می توانیم فیلد هایی به Entity های فیلدپذیر سایت اضافه کنیم که قابلیت اتصال به Entity های دیگر را فراهم کنند. در اینجا ما یک محتوا را به یک کاربر مرتبط کردیم یعنی یک Node را به یک User ارتباط دادیم. 

نظرات

از مطلب زیبا و آموزشی شما بهره بردم، بسیار متشکر

ارسال نظر