কাস্টম ড্রুপাল আকারে কীভাবে ট্যাক্সোনমি শব্দ রেফারেন্স ক্ষেত্র যুক্ত করবেন


9

একটি মেনু আইটেম drupal_get_formকলব্যাক ফাংশন এবং কল ব্যাক ফাংশন থেকে ফর্ম ফিরে সঙ্গে সংজ্ঞায়িত করা হয় । taxonomy_term_referenceএই ফর্মটিতে আমি কীভাবে ক্ষেত্র যুক্ত করতে পারি ?

$items['files/add'] = array(
      'title' => 'Add file',
      'description' => 'Allows users to add files',
      'type' => MENU_CALLBACK,
      'page callback' => 'drupal_get_form',
      'page arguments' => array('mymodule_add_file'),
      'access callback' => TRUE,
    );
function mymodule_add_file($form, &$form_state) {
    drupal_set_title("Add file");
    $form['mymodule_form'] = array(
      '#type' => 'fieldset',
      '#tree' => TRUE,
      '#collapsable' => FALSE,
      '#title' => 'Adding file to locker room',
    );

    $form['mymodule_form']['file'] = array(
      '#type' => 'managed_file',
      '#title' => 'Upload file',      
    );

    $form['mymodule_form']['tag'] = array(
      '#type' => 'taxonomy_term_reference',
      '#title' => 'Tags',
    );  

    return $form;
}

আমি কিভাবে ট্যাক্সনমি_মিটার_সংশ্লিষ্ট ক্ষেত্র যুক্ত করব তা নিশ্চিত নই $form['mymodule_form']['tag']। আমি এই ক্ষেত্রটি একটি শব্দভাণ্ডারের শর্তাদি থেকে স্বয়ংক্রিয়ভাবে সম্পূর্ণ একটি পাঠ্য ক্ষেত্র হতে চাই এবং যখন প্রবেশকৃত শব্দটি পাওয়া যায় না তখন নতুন শব্দ যুক্ত করা হয়

উত্তর:


5

ড্রুপাল For এর জন্য কোডটি হ'ল এই জাতীয় কোড যেখানে field_tagsউইজেটের প্রকারের স্বতঃপূরণ সহ নোডের একটি কর অঞ্চল ক্ষেত্র।

<?php
   $node=node_load($nid);
    $tags = array();
    foreach ($node->field_tags['und'] as $item) {
      $tags[$item['tid']] = isset($item['taxonomy_term']) ?  $item['taxonomy_term'] : taxonomy_term_load($item['tid']);
    }
    $form['tags'] = array(
      '#type' => 'textfield',
      '#default_value' => taxonomy_implode_tags($tags),
      '#title' => 'Add Tags',
      '#autocomplete_path' => 'taxonomy/autocomplete/field_tags',
      '#maxlength' => 1024,
      '#element_validate' => array('taxonomy_autocomplete_validate')
    );
?>

pageআপনার কোড শেষে কি করছে? আমার পছন্দ মতো অবৈধ পিএইচপি কোডে সীমস?
— ফ্লাই করুন

এটি কেবল একটি টাইপো বলে মনে হয়। আপনি এটি নিরাপদে উপেক্ষা করতে পারেন, আমি বিশ্বাস করি।
— ব্রায়ানভি

উপরের কোডটির $ ফর্ম অংশের সাথে, আমি ফর্মটিতে দেখানোর জন্য কর বিভাগের ক্ষেত্র পাই। স্বতঃপূরণও কাজ করে। তবে আমি কীভাবে নোডের বিভাগের ক্ষেত্রে জমা দেওয়া মানগুলি সংরক্ষণ করব? $submitted_tags = $form_state['values']['tags']; $node->field_tags[LANGUAGE_NONE][0]['value'] = $submitted_tags;আমার জন্য কাজ করে না। শুধু আমাকে ত্রুটি দেয়।
— deinqwertz

0

আপনার ভোকাবুলারি আইডি অন্তর্ভুক্ত করা দরকার - আপনার এটি অন্যথায় হার্ডকোড করতে সক্ষম হওয়া উচিত

$form['mymodule_form']['tag'][$vocabulary->vid] = array(
  '#type' => 'textfield',
  '#default_value' => $typed_string,
  '#maxlength' => 100,
  '#autocomplete_path' => 'taxonomy/autocomplete/'. $vocabulary->vid,
  '#required' => $vocabulary->required,
  '#title' => $vocabulary->name,
  '#description' => t('Some description ...").')

);

বা ভোকাব আইডি 5 এর জন্য

$form['mymodule_form']['tag']['5'] = array(
  '#type' => 'textfield',
  '#default_value' => $typed_string,
  '#maxlength' => 100,
  '#autocomplete_path' => 'taxonomy/autocomplete/5',
  '#required' => $vocabulary->required,
  '#title' => $vocabulary->name,
  '#description' => t('Some description ...").')
);

পরীক্ষিত নয়, তবে এটি কাজ করা উচিত। অন্য এখানে একটি গেন্ডার আছে: http://drupal.org/node/854216


আপনি কি নিশ্চিত যে এটি ডি 7 এর জন্যও কাজ করে? আমি এটি কাজ করতে পারে না। এটি
— ট্যাক্সনোমি.মডিউলে

হুঁ, হ্যাঁ এটি কাজ করে, তবে ঠিক এটির মতো নয়।
— টেকজাম

1
এটি কাজ করবে না। ড্রুপাল 7 এর শ্রমশক্তি_আউটোকম্পম্পিউলের ক্ষেত্রে একটি ক্ষেত্রের নামটি আর্গুমেন্ট হিসাবে পাস করা দরকার। এই উদাহরণটিতে দ্রুপাল 6 এর ট্যাক্সনোমি স্বতঃসম্পূর্ণ সিনট্যাক্স ব্যবহার করা হয়েছে।
— ব্রায়ানভি

0

আমি এটি ব্যবহার করেছি এবং আমি স্বতঃপূরণ কলব্যাকগুলি পেয়েছি, তবে নির্দিষ্ট শ্রেণিবদ্ধের ভোকাবের জন্য নয়। পরিবর্তে এটি সমস্ত ভোকাবাস থেকে ফলাফল ফেরত দিয়েছে

  $element['test'] = array(
      '#type' => 'textfield',
      '#default_value' => isset($items[$delta]['test']) ? $items[$delta]['test'] : NULL,
      '#maxlength' => 100,
      '#autocomplete_path' => 'taxonomy/autocomplete/37',
   );

কেন এটি সত্য বলতে হবে তা আমি পুরোপুরি নিশ্চিত নই।


আমি অনুরূপভাবে চেষ্টা করেছি এবং এর ব্যতিক্রম নীচের অংশে বেছে বেছে t.tid দেওয়া হয়েছে, নাম হিসাবে F নাম {ট্যাক্সোনমি_মিটার_ডাটা WH t যেখানে (t.vid IN ()) এবং t.name লাইক: db_condition_placeholder_0 এসকেপ & # 039; \\ & # 039;) সীমাবদ্ধ 10 অফফেস 0; অ্যারে ([: db_condition_ placeholder_0] = & gt;% ইম্যাগ%) এবং মাইএসকিএল & # 039; \\ & # 039; এর কাছাকাছি ব্যতিক্রম দিচ্ছে;) সীমাবদ্ধ অফ 0 এবং # 039;
— শ্রীহিতা নারারা

0

@ টেকজাম ড্রুপাল For এর জন্য, আপনি এটি প্রায় পেয়েছিলেন। আপনাকে যা করতে হবে তা হ'ল ভোকাব আইডির পরিবর্তে ক্ষেত্রের নাম ব্যবহার করা।

এটার মত:

 $element['test'] = array(
 '#type' => 'textfield',
  '#default_value' => isset($items[$delta]['test']) ? $items[$delta]['test'] : NULL,
  '#maxlength' => 100,
  '#autocomplete_path' => 'taxonomy/autocomplete/field_name',
);

আপনার ক্ষেত্রের নামের সাথে ক্ষেত্রের নামটি প্রতিস্থাপন করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.