0

Drupal7インストール用のカスタムブロックを次のように作成しました。

/*
 * Implements hook_block_info
 * To create a block to display the information for planB in the footer.
 */

function planb_block_info() {
  $blocks['planb_footer'] = array(
    'info' => t('PlanB Footer'),
    'status' => true,
    'weight' => 0,
    'visibility' => 1,
  );
  return $blocks;
}

function planb_block_view($delta = '') {
  switch($delta) {
    case 'planb_footer':
      $block['subject'] = NULL;
      $block['content'] = footer_block_content($delta);
      return $block;
      break;
  } 
}

function footer_block_content($delta) {
  return array('#markup' => theme('footer'));
}

これで、ローカルのテスト環境でフッターが正しく表示されます。ただし、モジュールファイルを実稼働環境にアップロードすると、フッターがどこにも表示されません。ブロックページにも表示されません。まるでフックがDrupalに登録されていないかのようです。誰かが私が見落としているかもしれないことを知っていますか?

キャッシュをクリアしました。

4

3 に答える 3

1

これの何が問題だったのかはまだわかりませんが、代わりに Drupal 管理の GUI を介してフッターを作成することに戻りました。

于 2012-03-07T00:51:44.337 に答える
0

別の環境にカスタム モジュールをインストールするときに、同じ問題が発生することがよくあります。ブロックに領域が設定されていない場合にのみ発生するため、回避策として、モジュールをインストールして有効にした後、Drush でブロックを移動します。リージョンが設定されると、ブロックが管理ビューに表示されます。

drush block-configure --module=MY_MODULE --delta=BLOCK_DELTA --region=TARGET_REGION chdir="/PATH/TO/DRUPAL"

デルタ名を変更すると、欠落しているブロックも表示される傾向がありますが、複数の環境にデプロイする場合は明らかに面倒です。

ETA: block-configure は drush_extras パッケージに含まれており、Drush 7 で利用できます。

于 2015-12-02T07:13:43.690 に答える
-2

キャッシュの問題である可能性があります。本番サーバーのキャッシュをクリアしましたか? Drupal が新しいブロックを登録するには、少なくともクラス レジストリを空にする必要があります。

于 2012-02-10T10:04:22.313 に答える