بررسی چند تابع مفید taxonomy در برنامه نویسی دروپال (بخش سوم)

بررسی چند تابع مفید taxonomy در برنامه نویسی دروپال (بخش سوم)

در بخش اول مقاله، توضیحاتی درباره سیستم دسته بندی دروپال یا Taxonomy دادیم. همین طور دو تابع مفید برای ذخیره و بازیابی دسته ها (term) معرفی کردیم. گفتیم که تابع taxonomy_term_save برای ذخیره یا به روز رسانی یک دسته در دیتابیس و تابع taxonomy_term_load برای بازیابی اطلاعات یک دسته از دیتابیس به کار می رود.

در بخش دوم سه تابع مفید دیگر را بررسی کردیم. از تابع taxonomy_get_parents برای یافتن والد های یک دسته، از تابع taxonomy_get_term_by_name برای یافتن دسته ها بر اساس نام و از تابع taxonomy_term_delete برای حذف یک دسته بر اساس شناسه آن استفاده می کنیم. برای یافتن تمام والد های سطح بالاتر یک دسته تابع taxonomy_get_parents_all را به کار می بریم.

در این مقاله چند تابع مفید دیگر در کار با دسته بندی دروپال را معرفی می کنیم.

تابع taxonomy_get_children برای یافتن زیر دسته های یک دسته

با این تابع می توانید، زیر دسته های یک دسته مشخص را بیابید. تعریف این تابع به صورت زیر است:

taxonomy_get_children($tid, $vid = 0)

همانطور که دیده می شود، ورودی اول این تابع شناسه عددی یکتای دسته (tid) ای اس که به دنبال زیر دسته های آن می گردیم. این ورودی اجباری است، پس باید حتما در هنگام فراوانی این تابع یک عدد به آن بدهید. ورودی دوم این تابع شناسه vocabulary است. به این صورت می توانید دامنه جستجوی این تابع را محدود کنید که فقط در یک vocabulary به جستجوی زیر دسته ها بپردازد.

دسته بندی سایت مثال ما که در بخش های گذشته این مقاله نیز دیدید، به صورت زیر است:

تابع taxonomy_get_children برای یافتن زیر دسته های یک دسته

می خواهیم برای نمونه زیر دسته های Toys را پیدا کنیم. برای استفاده از تابع taxonomy_get_children باید شناسه عددی یکتای دسته Digital را بدانیم. اکنون ما می دانیم که شناسه این دسته 5 است. بنابراین می توانیم زیر دسته های آن را با فراخوانی تابع taxonomy_get_children به دست بیاوریم.

نمونه کدی که می نویسیم به صورت زیر است:

$tid = 5;
$child_terms = taxonomy_get_children($tid);
dpm($child_terms);

خط دوم این کد حاوی فراخوانی تابع مورد نظر ما است. در خط سوم خروجی تابع را به dpm داده ایم تا محتوای آن را روی صفحه به ما نشان بدهد به این شکل:

تابع taxonomy_get_children برای یافتن زیر دسته های یک دسته

در هر صورت اطلاعات زیر دسته ها بعد از فراخوانی تابع در آرایه ای است که بر می گرداند (در اینجا $child_terms).

تابع taxonomy_get_tree برای بازیابی درختی سلسله مراتب دسته بندی

با امکانی که سیستم دسته بندی دروپال در اختیار ما قرار می دهد می توانیم دسته بندی را به صورت سلسله مراتبی و درختی داشته باشیم. حال اگر در کد بخواهیم به این درخت دسترسی داشته باشیم، تابع taxonomy_get_tree راه چاره ما است. این تابع می تواند اطلاعات تمام دسته های موجود در یک سیستم دسته بندی (Vocabulary) را به همراه اطلاعاتی درباره محل قرارگیری آنها در درخت دسته بندی، به ما بدهد.

البته شاید ساختار آرایه خروجی این تابع چندان مورد پسند ما نباشد ولی به هر صورت اطلاعاتی که لازم داریم تا از این درخت دسته بندی استفاده کنیم، در اختیار ما قرار می دهد.

تعریف این تابع در دروپال 7 به صورت زیر است:

taxonomy_get_tree($vid, $parent = 0, $max_depth = NULL, $load_entities = FALSE)

ورودی اول آن شناسه vocabulary است که می خواهیم به درخت دسته بندی آن برسیم. این ورودی اجباری است. سه ورودی دیگر این تابع اختیاری هستند. ورودی دوم مشخص می کند که درخت دسته بندی ذیل چه دسته ای مد نظر قرار بگیرد. به این صورت می توان جستجو را محدود کرد که درخت کامل دسته بندی را تولید نکند و فقط به زیر دسته های یک دسته مشخصی اکتفا کند. ورودی سوم حداکثر عمق جستجو برای زیر دسته ها را تعیین می کند.

تابع taxonomy_select_nodes برای یافتن محتوای یک دسته

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

تعریف این تابع به صورت زیر است:

taxonomy_select_nodes($tid, $pager = TRUE, $limit = FALSE, $order = array('t.sticky' => 'DESC', 't.created' => 'DESC'))

ورودی اول آن همان طور که انتظار می رود شناسه عددی یکتای دسته یا tid است. این ورودی اجباری است. خروجی این تابع آرایه ای از شناسه محتوا (node) ها است.

مثل کد زیر:

$tid = 10;
$nodes = taxonomy_select_nodes($tid);
dpm($nodes);

که با dpm نتیجه آن را نمایش داده ایم:

تابع taxonomy_select_nodes برای یافتن محتوای یک دسته

ارسال نظر