এটি কি দ্বিতীয় "সম্পাদনা অ্যাকাউন্ট" পৃষ্ঠা তৈরি করা সম্ভব যা ব্যবহারকারীদের কিছু প্রোফাইল ক্ষেত্র সম্পাদনা করতে পারে?


14

সুতরাং এখানে আমার পরিস্থিতি: আমার সাইটের ব্যবহারকারীদের নিবন্ধকরণের পরিবর্তে একটি বৃহত সংখ্যক ক্ষেত্র পূরণ করতে হবে। তবে, তারা নিবন্ধনের পরে, এই ক্ষেত্রগুলির মধ্যে কেবল চারটি (প্রায় বিশের মধ্যে) নিয়মিত পরিবর্তন করা দরকার to ব্যবহারকারীদের কেবলমাত্র এই চারটি ক্ষেত্রকে জিনিস সহজ রাখার জন্য সংশোধন করার অনুমতি দেওয়ার জন্য আমি একটি পৃথক "সম্পাদনা" পৃষ্ঠা তৈরি করতে চাই।

  • field_checkbox_a
  • field_checkbox_b
  • field_checkbox_c
  • field_checkbox_d

এই ক্ষেত্রগুলি সমস্তই একটি ফিল্ড গ্রুপে অন্তর্ভুক্ত রয়েছে, তাই পৃষ্ঠায় আদর্শভাবে এই ক্ষেত্রের গোষ্ঠীটি দেখা যাবে, এটির ভিতরে চারটি চেকবক্স থাকবে এবং তারপরে একটি জমা দিন এবং বাতিল বোতাম থাকবে, এটাই।

আমি এটিকে পৃথক পৃষ্ঠা হিসাবে করতে চাই, দ্রুত সম্পাদনা মডিউলের মতো জায়গাগুলি সম্পাদনা নয়

ব্যবহারকারীদের এখনও তাদের টাইমজোন, ই-মেইল ঠিকানা ইত্যাদি পরিবর্তন করার জন্য মূল সম্পাদনা অ্যাকাউন্ট পৃষ্ঠাটি অ্যাক্সেস করতে সক্ষম হওয়া দরকার তবে আমি তাদের সর্বাধিক সাধারণ অ্যাকাউন্ট বিকল্পগুলি সম্পাদনা করার জন্য পৃথক স্ক্রিন ব্যবহার করতে পারি।

উত্তর:


8

আমার আগেও একই পরিস্থিতি ছিল এবং পাওয়ার ফুল ড্রুএপল বৈশিষ্ট্য হুক_ফর্ম_াল্টার দিয়ে এটি পরিচালনা করি , আমাদের কাছে ব্যবহারকারী, নিবন্ধকরণ এবং ব্যবহারকারীর সম্পাদনার জন্য ২ টি ফর্ম রয়েছে

  • ব্যবহারকারী_প্রোফাইল_ফর্ম (সম্পাদনায়)
  • user_register_form (নিবন্ধে)

আমাদের কেবল আপনার নির্দিষ্ট ক্ষেত্রগুলি সম্পাদনা পদ্ধতিতে আড়াল করা দরকার সুতরাং আপনার কাস্টম মডিউলটিতে

function yourmodule_form_alter(&$form, &$form_state, $form_id)
{
    global $user;

    if ($form_id == "user_profile_form") {
       // ym($form);
       // you also can perform this action for specified roles 
        //if (!(in_array('blogger', $user->roles) || in_array('administrator', $user->roles))) {
            hide($form['field_mytest']);
            // hide other field with this method
        //}
    }

}

নিবন্ধের পরে সেই ক্ষেত্রটি বিদ্যমান থাকার পরে আপনি নীচে দেখতে পারেন

এখানে চিত্র বর্ণনা লিখুন

এবং সম্পাদনা পদ্ধতিতে (গোপন) উপস্থিত নেই

এখানে চিত্র বর্ণনা লিখুন

এছাড়াও আপনি এগুলি কেবল তাদের সাথে লুকিয়ে রাখার পরিবর্তে পড়তে সেট করতে পারেন$form['field']['#access'] = FALSE;

এবং অন্য সমাধানটি ক্ষেত্রের অনুমতি মডিউলটি ব্যবহার করছে

ক্ষেত্রের অনুমতি মডিউলটি সাইট প্রশাসকদের যেকোন সত্তায় ক্ষেত্র সম্পাদনা করতে, দেখতে এবং তৈরি করতে মাঠ-স্তরের অনুমতিগুলি সেট করার অনুমতি দেয়। বৈশিষ্ট্য:

  • শুধু নোড নয়, কোনও সত্তায় ফিল্ড অনুমতিগুলি সক্ষম করুন।
  • রোল-ভিত্তিক ক্ষেত্রের অনুমতিগুলি ব্যবহারকারীর কাছে কী অ্যাক্সেস পায় তার উপর ভিত্তি করে বিভিন্ন দেখার প্যাটার্নযুক্ত মঞ্জুরি দেয়।
  • লেখক-স্তরের অনুমতিগুলি সত্তার মালিক কে তার উপর ভিত্তি করে ক্ষেত্রগুলি দেখার এবং সম্পাদনার অনুমতি দেয়।
  • প্রতিটি ক্ষেত্রের জন্য অনুমতিগুলি ডিফল্টরূপে সক্ষম হয় না। পরিবর্তে প্রশাসকরা এই বৈশিষ্ট্যগুলির যে ক্ষেত্রগুলি প্রয়োজন সেখানে স্পষ্টভাবে এই অনুমতিগুলি সক্ষম করতে পারবেন।

এই মডিউলটি আমাদের বেনামে ব্যবহারকারীর জন্য যে বৈশিষ্ট্য সরবরাহ করে (অন-নিবন্ধভুক্ত ব্যবহারকারীরা সেই ক্ষেত্রগুলি সম্পাদনা করতে এবং কেবল ব্যবহারকারীকে দেখতে (কেবল পঠনযোগ্য পদ্ধতিতে) নিবন্ধন করতে পারে।


6

দুটি ফর্ম না রেখে, আপনি ডিফল্ট একটি ব্যবহার করতে পারেন এবং নীচের মত একটি "সমস্ত সেটিংস দেখান" চেকবক্স যুক্ত করতে পারেন।

$form['show_all_settings'] = array(
  '#type' => 'checkbox',
  '#title' => t('Show all settings'),
);

তারপরে, আপনি চেকবক্সটি নির্বাচন করার সময় আপনি যে ফর্ম ক্ষেত্রগুলি প্রদর্শন করতে চান তা পরিবর্তন করতে পারেন এবং সেই ফর্ম ক্ষেত্রগুলির জন্য নিম্নলিখিত সম্পত্তি অন্তর্ভুক্ত করতে পারেন।

'#states' => array(
  'invisible' => array(
   ':input[name="show_all_settings"]' => array('checked' => FALSE),
  ),
),

এইভাবে, ব্যবহারকারীরা কোনও পৃষ্ঠা থেকে অন্য কোনও পৃষ্ঠাতে না গিয়ে সমস্ত সেটিংস দেখায় এমন একটি ফর্ম এবং একটি ফর্মের মধ্যে ন্যূনতম সেটিংসের সেট দেখায় এমন ফর্মের মধ্যে টগল করতে সক্ষম হবে।

তথ্যসূত্র


5

আপনি তার জন্য প্রোফাইল 2 মডিউল ব্যবহার করতে পারেন ।

  • একটি প্রোফাইল টাইপ তৈরি করুন বা ডিফল্ট প্রধান প্রোফাইল ব্যবহার করুন।
  • সেই ক্ষেত্রগুলিকে সেই প্রোফাইল টাইপ করুন এবং সেগুলি নিবন্ধকরণ ফর্মে দেখানোর জন্য সেট করুন।

যাতে সেই ক্ষেত্রগুলি ব্যবহারকারীর অ্যাকাউন্ট থেকে অন্যান্য ক্ষেত্রগুলির মধ্যে নিবন্ধকরণ ফর্মটিতে উপলব্ধ হবে । তবে এই ক্ষেত্রগুলি সম্পাদনা করতে ব্যবহারকারীর সম্পাদনা পৃষ্ঠার পরিবর্তে ব্যবহারকারীর প্রোফাইল সম্পাদনা পৃষ্ঠায় যাওয়া উচিত ।


আমি ব্যবহারকারীর সম্পাদনা পৃষ্ঠা এবং তাদের নিজস্ব কাস্টম পৃষ্ঠায় চারটি চেকবাক্স প্রদর্শন করতে চাই; আমি এগুলি মুখ্য ব্যবহারকারীর সম্পাদনা পৃষ্ঠা থেকে সরাতে চাই না।
প্যাট্রিক কেনি

1

ব্যবহার করে দেখুন VBO মডিউল, আপনি, একটি VBO পৃষ্ঠা তৈরি করতে পারেন দৃশ্যতে ব্যবহারকারীর সম্পর্ক জুড়ুন সেই ক্ষেত্র গেলিক ভাষার ব্যবহারকারীর জন্য উপলব্ধ, অনুমতি স্থাপন যোগ করুন। নিশ্চিত হয়ে নিন যে আপনি সামগ্রী কেবলমাত্র CURRENT ব্যবহারকারীর ("প্রাসঙ্গিক ফিল্টারের মাধ্যমে" নির্বাচন করেছেন)


আমি কীভাবে ব্যবহারকারীকে এই ক্ষেত্রগুলি সম্পাদনা করার অনুমতি দিতে পারি? ভিবিও আমাকে মানগুলি প্রদর্শন করতে দেয় তবে এগুলি সম্পাদনাযোগ্য হওয়া দরকার।
প্যাট্রিক কেনি

ভিবিও ক্ষেত্র যুক্ত করুন তারপরে 'সত্তা মানগুলি সংশোধন করুন' এর ক্রিয়াকলাপটি টিক দিন (এর মতো কিছু, একে ঠিক কী বলা হয় তা মনে করতে পারে না)
গিলজারো

ধন্যবাদ, একে বলা হয় সত্তা মান পরিবর্তন করুন । দুর্ভাগ্যক্রমে, এটি আমার ক্ষেত্রে কাজ করে না তবে এটি অন্যদের জন্য কার্যকর সমাধান হতে পারে।
প্যাট্রিক কেনি

1

এই প্রশ্নের করুন এবং zhilevan এর উত্তর ভিত্তিক এই প্রশ্নের এবং drupal.org এই আলোচনা এখানে প্রকৃত কোডটি আমার জন্য কাজ করে:

function MYMODULE_menu() {
  $items = array();
  $items['user/editpurposes'] = array(
    'title' => t('Change your purposes'),
    'page callback' => 'MYMODULE_purpose_edit_form',
    'access callback' => TRUE,
    'access arguments' => array('access content'),
    'description' => t('Purpose Edit Form'),
    'type' => MENU_CALLBACK,
  );
  return $items;
}

function MYMODULE_purpose_edit_form() {
  // Needed to load AJAX.
  module_load_include('inc', 'user', 'user.pages');
  global $user;
  $account = user_load($user->uid); // Load a user object
  $form = drupal_get_form('user_profile_form', $account, 'account', 'purposes');
  return $form;
}

function MYMODULE_form_user_profile_form_alter(&$form, &$form_state) {
  if(isset($form_state['build_info']['args'][2]) && $form_state['build_info']['args'][2] == 'purposes') {

    // Remove name, email, password, etc.
    $form['account']['#access'] = FALSE;
    // Remove language.
    $form['locale']['#access'] = FALSE;
    $form['timezone']['#access'] = FALSE;
    // Remove various custom fields.
    $form['field_acc_displayname']['#access'] = FALSE;
    $form['field_acc_code_agree']['#access'] = FALSE;

    // Needed to load AJAX.
    form_load_include($form_state, 'inc', 'user', 'user.pages');
  }
}

আমি কি আমার জিজ্ঞাসা করতে পারি যে প্রোফাইল 2 কেন একটি বিকল্প ছিল না, কারণ আমি আমার উত্তরে পরামর্শ দিয়েছি?
Елин Й.

0

আমি ফিল্ড গ্রুপ মডিউল দিয়ে উদাহরণস্বরূপ কিছু পরিষ্কার করতে সক্ষম হওয়া উচিত বলে মনে করি , উদাহরণস্বরূপ ক্ষেত্রগুলি বিভিন্ন ট্যাবগুলির নিচে রাখুন। একটি ট্যাবের অধীনে সাধারণ এবং অন্যটি অন্য ট্যাবের নীচে।


এই ধারণার জন্য ধন্যবাদ, তবে আমি ইতিমধ্যে ফিল্ড গ্রুপ মডিউলটি ব্যবহার করছি। এটি ভাল তবে আমি সত্যিই সমস্ত কিছু নয়, ব্যবহারকারীকে চারটি বিকল্প দেখাতে চাই।
প্যাট্রিক কেনি

0

এই কোড চেষ্টা করুন। এবং অন্যান্য ক্ষেত্রগুলি লুকিয়ে রাখুন যা আপনি দেখাতে চান না।

<?php
global $user;
$user=user_load($user->uid);
module_load_include('inc', 'user', 'user.pages');
$user_form = drupal_get_form('user_profile_form', $user);
print(drupal_render($user_form));
?>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.