web-dev-qa-db-ja.com

データベースからブロックを直接削除-Drupal 7

ブロックを作成し、無効なPHPコードを挿入すると、サイト全体にまったくアクセスできなくなりました。

私はDrupalにかなり慣れており、私もバックエンドプログラマではありません。その特定のブロックを直接削除する方法について明確なステップバイステップガイドを提供できれば非常に感謝しますデータベース(PhpMyAdmin)から。

5
kyooriouskoala
  • PHPMy Adminに管理者の資格情報でログインします。
  • blockテーブルを検索します。このテーブルで、作成したブロックを検索します
  • ステータス列フォーム1の値を0に変更します。
  • cache_bootstrapテーブルからすべてのコンテンツを削除します
7
Mohammad Anwar

Database APIを使用してプログラムでブロックを削除するには、次のことを試してください。

$module = 'block';
$delta = 1;

// Get the block id (bid) required to delete the correct block from table 'block_custom'
$result = db_select('block', 'b')
         ->fields('b', array('bid'))
         ->condition('module', $module)
         ->condition('delta', $delta)
         ->execute();
$bid = $result->fetchField();

db_delete('block_custom')
  ->condition('bid', $bid)
  ->execute();

db_delete('block')
  ->condition('module', $module)
  ->condition('delta', $delta)
  ->execute();

db_delete('block_role')
  ->condition('module', $module)
  ->condition('delta', $delta)
  ->execute();

DrupalブロックUIを使用してカスタムブロックを作成する場合、モジュール名はblockで、delta値は整数です。必ず正しいデルタ値を使用してください目的のブロックを削除します。

10

この単純なクエリを使用して、ブロックを削除します。

delete from block where module = 'MODULE' and title = 'TITLE'

[〜#〜] module [〜#〜]をブロックを作成するモジュールの名前に置き換え、[〜#〜] title [〜#〜]をブロックタイトル。

ブロックにタイトルがない場合は、delete from block where module = 'MODULE'

3
AjitS

Eriksの例に答えて、私はそれが機能するためにここで配列を使わなければなりませんでした:

$result = db_select('block', 'b')
         ->fields('b', array('bid'))
         ->condition('module', $module)
         ->condition('delta', $delta)
         ->execute();
1
steev

delta = 'DELTA'のブロックから削除します。

プログラムでブロックを作成した場合は、作成に使用したのと同じロジックでデルタ値を再作成できるはずです。これは、KEYとしてブロック配列に渡した値です(例:$ blocks ['myblock']-myblockは、デルタに格納されている値です)。

余談ですが、個人的には、この名前の前にモジュールの接頭辞を付けることをお勧めします。ブロックテーブルを確認すると、デルタのmymodule_myblockがあり、あいまいさはありません。

0
Daniel Lefebvre