web-dev-qa-db-ja.com

削除メッセージ「この操作は元に戻せません」を変更するにはどうすればよいですか。特定のコンテンツタイプで?

バージョンdrupal 6があり、コンテンツを削除するときに表示される次のメッセージを変更する必要があります。

「この操作は元に戻せません。」

このメッセージを変更する必要があるのは、一部ではなく一部のコンテンツタイプのみです。

ご協力いただきありがとうございます。

1
cabita

このコードを試してください(私にとってはうまくいきます-Drupal 6):

function module_change_default_messages_form_alter(&$form, $form_state, $form_id) {
if (arg(0) == 'node' && is_numeric(arg(1)) && arg(2) == 'delete') {
      $node = node_load(arg(1));   
          if ($form_id == 'node_delete_confirm') {
              if($node->type == 'story'){
                $form['description'] = array('#value' => "here replace to \"this action cannot be undone\"");
              } else if($node->type == 'page'){
                $form['description'] = array('#value' => "this action cannot be undone");
              }
          }
      }
}

または、より多くのコンテンツタイプにPHP switch ステートメントを使用できます。

2
cigotete

Drupal 6で行う方法は次のとおりです。

http://drupal.org/node/736352

メッセージを変更するコンテンツタイプが複数ある場合は、そのリンクのコードを、タイプごとの複数の関数ではなく、1つの関数に統合することをお勧めします。

お役に立てば幸いです。解決できたかどうかをお知らせください。

1
Daniel Tome

必要がある:

  • hook_menu_alter()を実装して、「node /%node/delete」メニュー項目に関連付けられたメニューコールバックを変更します
  • 新しいメニューコールバックを実装する

    _function mymodule_menu_alter(&$items) {
      if (isset($items['node/%node/delete'])) {
        $items['node/%node/delete']['page arguments'] = array('mymodule_node_delete_confirm', 1);
        $items['node/%node/delete']['file path'] = drupal_get_path('module', 'mymodule');
        $items['node/%node/delete']['file'] = 'mymodule.admin.inc';
    
        // If the function is defined in the module file, you can use the following line instead of the last two lines.
        // unset($items['node/%node/delete']['file']);
      }
    }
    
    function mymodule_node_delete_confirm(&$form_state, $node) {
      $form['nid'] = array(
        '#type' => 'value', 
        '#value' => $node->nid,
      );
    
      return confirm_form($form, 
        t('Are you sure you want to delete %title?', array('%title' => $node->title)), 
        isset($_GET['destination']) ? $_GET['destination'] : 'node/' . $node->nid, 
        t('This action cannot be undone.'), // Change this message with the one you prefer. 
        t('Delete'), 
        t('Cancel')
      );
    }
    
    function mymodule_node_delete_confirm_submit($form, &$form_state) {
      if ($form_state['values']['confirm']) {
        node_delete($form_state['values']['nid']);
      } 
    
      $form_state['redirect'] = '<front>';
    }
    _

mymodule_node_delete_confirm()がノードオブジェクトを取得すると、_$node->type_を使用してそのノードのコンテンツタイプを確認できます。そのプロパティの値に基づいて、確認フォームの値を変更できます。

0
kiamlaluno

drupal 7では、メッセージを上書きするのは簡単です。次のフォーム変更コードを使用してください。

 function modulename_form_node_delete_confirm_alter(&$ form、&$ form_state、$ form_id){
 $ form ['description'] ['#markup'] = 'よろしいですか?いったん削除すると、この物語のコンテンツを復元することはできません。 '; 
 return $ form; 
} 
0
purab