「フロントページへの昇格」および「スティッキー」オプションを無効にする方法


15

私が検討した2つの可能な方法:

hook_form_alterを使用して、ノード編集フォームの両方のオプションを設定解除します。ただし、メインの管理コンテンツページでは、[更新オプション]ドロップダウンの下にオプションが表示されます。

[ ノードオプションのオーバーライド]モジュールを使用します。これにより、きめ細かな制御が可能になりますが、「コンテンツの管理」権限を無効にすることを意味します。この場合、ユーザーは「更新オプション」をまったく見ることができません。これは、公開や削除などを一括で行うためにまだ必要です。

回答:


16

これらのオプションを見ることができる3つの場所があります。

  • admin / structure / types / manage / article、「Article」コンテンツタイプ用

    スクリーンショット

  • node / 2 / editで、IDが2のノード用

    スクリーンショット

  • admin / contentの「更新オプション」の間

    スクリーンショット

これらの設定/管理ページからオプションを削除する必要がある場合は、次のフォームビルダーを変更する必要があります。

node_admin_nodes()admin / contentのノード管理概要のフォームビルダーです。このページには、フロントページからノードを昇格/降格し、ノードをスティッキーにする適切な権限を持つユーザーを許可する[更新オプション]フィールドが含まれます。このフィールドには、モジュールによって実装されるすべてのノード操作がリストされます。得られた操作のリストに$operations = module_invoke_all('node_operations')、これらの操作は、以下から表され$operations['promote']$operations['demote']$operations['sticky']、および$operations['unsticky']


13

Drupal 7用に作成したカスタムモジュールは、ノードの追加/編集フォーム、コンテンツタイプの追加/編集フォーム、および管理/コンテンツドロップダウンの「フロントページへの昇格」と「リストの上部に固定」を削除します。このモジュールはデータベース設定を変更しないため、既存のコンテンツは変更されません。いつでも無効にしてオプションを取り戻すことができ、すべてが以前と同じように機能します。

このコードをhide_sticky_promote.moduleに貼り付け、対応するhide_sticky_promote.infoファイルを作成し、モジュールとwallahを有効にします。これ以上スティッキーを使用せず、チェックボックスまたはドロップダウン選択をプロモートします。

/**
 * Remove sticky/promote entirely from add and edit content type forms.
 *
 * Implements hook_form_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_type_form_alter(&$form, &$form_state, $form_id) {
  // Remove sticky/promote entirely from add and edit content type forms.
  $options = array('promote', 'sticky');
  foreach ($options as $key) {
    unset($form['workflow']['node_options']['#options'][$key]);    
  }
}

/**
 * Remove sticky/promote entirely from node/X/edit & node/X/add forms.
 * 
 * Implements hook_form_BASE_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_form_alter(&$form, &$form_state, $form_id) {
  $options = array('promote', 'sticky');
  foreach ($options as $key) {
    $form['options'][$key]['#access'] = FALSE;
  }
}

/**
 * Remove some sticky/promote update options on admin/content.
 *
 * Implements hook_form_FORM_ID_alter().
 */
function hide_sticky_promote_form_node_admin_content_alter(&$form, &$form_state, $form_id) {
  $options = array('demote', 'promote', 'sticky', 'unsticky', );
  foreach ($options as $key) {
    unset($form['admin']['options']['operation']['#options'][$key]);
  }
}

または、ここからモジュール形式で入手してくださいhttps : //github.com/StudioZut/hide-sticky-promote


3

以下を使用します。

/**
 * Implements hook_form_alter().
 * This is remove the promote to frontpage, and make sticky options from node edit pages
 */
function alter_drupal_form_alter(&$form, &$form_state, $form_id) {
  if (strpos($form_id, '_node_form') !== FALSE) {
    unset($form['options']['sticky']);
    unset($form['options']['promote']);
  }

  if (strpos($form_id, 'node_admin_content') !== FALSE) {
    //$opt[''] = '- Select -';
    $opt['publish'] = 'Publish selected content'; 
    $opt['unpublish'] = 'Unpublish selected content'; 
    $opt['delete'] = 'Delete selected content'; 
    $opt['pathauto_update_alias'] = 'Update URL alias'; 
    $form['admin']['options']['operation']['#options'] = $opt;


    // print_r($form['admin']['options']['operation']['#options']);
  }
}

2

Drupal 8では、コンテンツタイプごとにオプションを無効にできます。

/admin/structure/types/manage/page/form-display

/ node / contentから対応するアクションを削除するには、管理コンテンツビューの「ノード操作バルクフォーム」フィールドも変更する必要があります。

/admin/structure/views/view/admin_content

たとえば、カスタムビューで使用するために、コンテンツタイプを促進するコンテンツタイプを保持する場合は、フロントページページを生成するビュー「frontpage」も変更できます。

/admin/structure/views/view/frontpage

たとえば、「昇格に等しくない」という追加のフィルターを追加し、「結果なしの動作」を削除すると、そのビューは結果を返しません。


1

コンテンツタイプを編集することで、「フロントページへの昇格」を無効にできます。非表示にしたり、「スティッキー」オプション、リビジョンなどを非表示にしたりするには、Drupal 7のJammerモジュールを確認してください。


0

フロントページにのみ表示される別のテンプレート領域を作成し、そのページの['content']領域を削除しないのはなぜですか?

フォームの要素は、cssまたはhook_preprocess_form()を使用して非表示にできます


0

これには「無効化を促進」モジュールを使用します

[構成]-> [コンテンツの作成]-> [無効化の昇格]でコントロールを作成し、すべてのコンテンツタイプの選択リストを提供します。リスト内のアイテムをCtrl /複数選択して、プロモートオプションを完全に削除します。


0
function HOOK_form_node_form_alter(&$form, FormStateInterface $form_state) {
  if (isset($form['promote'])) {
    unset($form['promote']);
  }

  if (isset($form['sticky'])) {
    unset($form['sticky']);
  }
}

上記のみ必要


-1

私はあなたが実装できると思う hook_node_presaveをそれらを0に設定できる思います。これは、これらを設定するための可能な方法をオーバーライドするはずです。

またhook_form_alter、その管理ページで使用されているフォームを試して、それらのオプションを削除することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.