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


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.