ساخت و ویرایش یک node با برنامه نویسی در دروپال

ساخت و ویرایش یک node با برنامه نویسی در دروپال
گاهی در روال ساخت ماژول در یک پروژه نیاز داریم که یک node را با php بسازیم و یا node خاصی را ویرایش کنیم. در ادامه روش این کار را برای شما شرح میدهیم. توجه داشته باشید که این مقاله تنها برای دروپال 7 نوشته شده است.

ساخت یک node

برای ساخت یک node می بایست ابتدا یک کلاس ایجاد کنید و پس از پر کردن property های آن که برخی از آنها همانند تیتر و زبان و ...، جزو مشخصات پایه پیش فرض هر node ای است و برخی دیگر که همان اسم فیلدهای ساخته شده توسط شماست؛ آن را ذخیره کنید:

  $body_text = 'This is the body text I want entered with the node. www.asrepayesh.com';
 
  $node = new stdClass();
  $node->type = 'article';
  node_object_prepare($node);
 
  $node->title    = 'Node Created Programmatically on ' . date('c');
  $node->language = LANGUAGE_NONE;

  $node->body[$node->language][0]['value']   = $body_text;
  $node->body[$node->language][0]['summary'] = text_summary($body_text);
  $node->body[$node->language][0]['format']  = 'filtered_html';
 
  $path = 'content/programmatically_created_node_' . date('YmdHis');
  $node->path = array('alias' => $path);

  node_save($node);
  • استفاده از تایع node_object_prepare مزایایی دارد:
    • مقادیر پیش فرض را برای فیلدهایی نظیر status, promote, sticky, revision ها پر می کند. این مقادیر براساس $node->type تعریف میشوند و بعدها قابل تغییر هستند. در زیر می توانید ساختار کلی این مقادیر پیش فرض را ببینید:
    stdClass Object
    (
        [type] => article
        [status] => 1
        [promote] => 1
        [sticky] => 0
        [uid] => 0
        [created] => 1283285249
        [revision] => 
        [comment] => 2
        [menu] => Array
            (
                [link_title] => 
                [mlid] => 0
                [plid] => 0
                [menu_name] => main-menu:0
                [weight] => 0
                [options] => Array
                    (
                    )
                [module] => menu
                [expanded] => 0
                [hidden] => 0
                [has_children] => 0
                [customized] => 0
                [parent_depth_limit] => 8
            )
    )
  • کاربر فعلی را با تنظیم $node->uid بعنوان مالک node قرارا میدهد.
  • هوک های hook_prepare و hook_node_prepare را روی شیء اجرا می کند.

 

  • مقدار LANGUAGE_NONE با مقدار ثابت und جایگزین می شود.
  • تابع node_save تمامی هوک ها را صدا می زند. بنابراین اگر شما هوکی نوشته باشید بدون نگرانی از اجرای آنها اطمینان داشته باشید.

ویرایش یک node

برای این کار همان روش بالا را پی می گیریم ولی این بار کلاس node را از خود دروپال میخواهیم. برای این کار از node_load استفاده می کنیم:

  $nid = 1;
  $node = node_load($nid);
  $node->title = 'Updated Title Text';
  node_save($node);

به همین راحتی! اگر سوال و یا مشکلی در اجرای این کد ها داشتید از بخش دیدگاه ها ما را مطلع کنید.

کد خبر: 287 | 19:30، 1395-05-11 نسخه چاپی ارسال به