প্রোগ্রামগতভাবে কোনও বৈশিষ্ট্য উপাদানকে ফিরিয়ে দিন


21

আমি একটি ইনস্টলেশন প্রোফাইল ব্যবহার করে একটি বৈশিষ্ট্য ইনস্টল করা আছে। তবে আমাকে সর্বদা যেতে হবে এবং একটি নির্দিষ্ট উপাদানটিকে রিভার্ট করতে হবে যাতে এটি আর ওভাররাইড না হয় (যাতে উদাহরণস্বরূপ, বৈশিষ্ট্যের ব্লকগুলি উপস্থিত হয়)। আমি কেবলমাত্র জানতে চেয়েছিলাম ইনস্টলেশন প্রোগ্রামে কোডটি নিজেই কোড ব্যবহার করে আমি এই পদক্ষেপ নিতে পারি কিনা।

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

স্ক্রিনশট


আপনার প্রশ্নের উত্তর আমার কাছে নেই, তবে আমি বাজি রাখতে ইচ্ছুক যে আপনি যদি ইস্যু সারিতে কিছুটা সময় ব্যয় করেন তবে এটি কেন উল্টানো হিসাবে শুরু হবে তা আপনি খুঁজে পাবেন । যদি কোনও প্যাচ উপলব্ধ না হয় তবে কমপক্ষে আপনি যেখানে সমস্যাটি আক্রমণ করতে হবে তা বোঝার কাছাকাছি চলে যাবেন।
লেথারিয়ন

@ লেথারিওন - তবে এগুলি সমস্ত কাস্টম ব্লক এবং দেখানো বিকাশ।
হ্যাকার

এই সংজ্ঞা অনুসারে, আপনার রপ্তানি করা সমস্ত কিছুই "কাস্টম" হবে, যাতে এটি আমার কাছে বোধগম্য হয় না।
লেথারিয়ন

উত্তর:


20

প্রোগ্রামগতভাবে আপনার বৈশিষ্ট্যগুলি পুনরায় সেট করতে বা অ্যাড-অন ইনস্টল স্ক্রিপ্ট হিসাবে কিছু ধারণা এখানে।

আপনি বৈশিষ্ট্যটি পুনরায় সেট করতে ড্রশ ব্যবহার করতে পারেন :

drush features-revert [feature name]

আর একটি ধারণা হ'ল ইনস্টল প্রক্রিয়া চলাকালীন বৈশিষ্ট্যগুলি পুনর্বিবেচনা () ব্যবহার করতে হবে :

features_revert(array('module' => array('component')));

Strongarm হিসাবে ভাল মডিউল উপযোগী হতে পারে জোর আপনার বৈশিষ্ট্য তার ডিফল্ট রাষ্ট্র আমার মনে হয় ধরে রাখা।

আপনার লিখিত বিবরণে আমাকে @ লেটারিওনের সাথে একমত হতে হবে। আমি জানতে চাই যে অন্যান্য গুরুত্বপূর্ণ বিষয়গুলি ইনস্টল প্রক্রিয়া চলাকালীন ভুলভাবে সংশোধন করা হচ্ছে না।


16

সমস্ত বৈশিষ্ট্যে ফিরিয়ে দিন

$feature = features_get_features('my_feature_machine_name');
$components = array_keys($feature->info['features']);
features_revert(array('my_feature_machine_name' => $components));

4
আমি মনে করি বৈশিষ্ট্য_সামগ্রী_মডিউল ('আমার_মডিউল'); এই সমস্ত পদক্ষেপ না।
এলিজা লিন


5
features_revert(array('module' => array('component')));

যেখানে 'মডিউল' নির্দিষ্ট বৈশিষ্ট্যগুলির মডিউলের নাম (যেমন আপনি বৈশিষ্ট্যটি ডাউনলোড করার সময় তৈরি করা মডিউল) এবং 'উপাদান' এই বৈশিষ্ট্যগুলির উপাদান। সুতরাং আপনি যদি বৈশিষ্ট্যের সাথে সংজ্ঞায়িত ক্ষেত্রগুলিকে সরিয়ে নিতে চান তবে আপনি উপাদানটির জন্য 'ক্ষেত্র' ব্যবহার করতে পারেন।


4

আমি হুক ফাংশনটি ব্যবহার করে সমস্যার সমাধান করতে পারলাম fe_block_settings_features_revert('basic_site')যেখানে fe_ block_settings হুক অর্থাৎ এখানে উপাদান এবং বেসিক_সাইটটি বৈশিষ্ট্য / মডিউলটির নাম।


3
আপনি আরও কিছু ব্যাখ্যা করতে পারেন? আপনি এই ফাংশনটি। প্রোফাইলে বা। ইনস্টলগুলিতে কীভাবে ব্যবহার করবেন?
লেজার

4

features_revert()বাক্যবিন্যাস কেবল যেখানে নির্দিষ্ট উপাদানগুলিকে ফিরিয়ে আনতে ব্যবহার করুন :

features_revert(array($module => $components));

উদাহরণ স্বরূপ:

features_revert(array('module_name' => array('taxonomy', 'node')));

পুরো মডিউলটি (তার সমস্ত উপাদান সহ) ফিরিয়ে আনতে, তার features_revert_module()পরিবর্তে ব্যবহার করুন, উদাহরণস্বরূপ:

features_revert_module('module_name');

বিধি

নিয়মের জন্য, এই পদ্ধতিটি আরও দ্রুত (একক নিয়মকে ফিরিয়ে আনার জন্য):

$rule_name = 'my_custom_rule';
if ($rule = rules_config_load($rule_name)) {
  $rule->delete();
}

সমস্ত নিয়ম ফিরিয়ে দিতে, এটি:

if ($rules = rules_config_load_multiple(FALSE)) {
  foreach($rules as $rule) {
    if ($rule->hasStatus(ENTITY_OVERRIDDEN) && !$rule->hasStatus(ENTITY_FIXED)) {
      $rule->delete();
    }
  }
}

দেখুন: ড্রাশের নিয়ম যুক্ত করুন-রিভার্ট করুন [# 2474577] | Drupal.org


2

আপনার ইনস্টলেশন প্রোফাইলে সমস্ত বৈশিষ্ট্যগুলির সমস্ত ওভাররাইড হওয়া উপাদানগুলিকে ফিরিয়ে আনতে, আপনার। প্রোফাইল প্রোফাইলের hook_profile_tasks () এ নিম্নলিখিতগুলি যুক্ত করুন:

/**
 * Rebuild & Revert all enabled features.
 */
features_rebuild();
features_revert();

0
    /**
     * Reverts all components of a feature.
     */
    function YOURMODULE_helpers_install_features_revert($module, $component = NULL) {
      module_load_include('inc', 'features', 'features.export');
      features_include();
      if (($feature = feature_load($module, TRUE)) && module_exists($module)) {
        $components = array();
        if (is_null($component)) {
          // Forcefully revert all components of a feature.
          foreach (array_keys($feature->info['features']) as $component) {
            if (features_hook($component, 'features_revert')) {
              $components[] = $component;
            }
          }
        }
        else {
          // Use the $component argument of this function.
          $components[] = $component;
        }
        foreach ($components as $component) {
          features_revert(array($module => array($component)));
        }

        drush_print(format_string('Reverted "!module" feature components !components.', array(
          '!module' => $module,
          '!components' => implode(', ', $components),
        )));
      }
      else {
        drush_print(format_string('Unable to revert "!module" feature.', array('!module' => $module)));
      }
    }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.