1

カスタム モジュールのメニュー コールバックに基づいて、簡単なサンキュー ページ (例: /product/3/thankyou) を作成しました。コンテンツは通常のページ レイアウトで問題なく表示されますが、領域とブロックを表示したいのですが、表示されません。提案?

// menu callback
function custom_menu() {
  $items = array();
  $items['product/%/thankyou'] = array(
      'page callback' => 'custom_product_thankyou',
      'access arguments' => array('access content'),
      'type' => MENU_CALLBACK
   );
  return $items;
}

// theme function
function custom_theme() {
  return array(
    'product_review_thankyou' =>  array(
      'variables' => array('node' => NULL),
      'template' => 'product_review_thankyou',
    ),
  );
}

// page callback
function custom_product_thankyou() {
  $node = node_load(arg(1));
  $output = theme('product_review_thankyou', array('node' => $node));
  return $output;
}
4

2 に答える 2

1

drupal インストールでコードを試してみましたが、ブロックの欠落に問題はありません。ブロックを特定のページにのみ表示するように設定できますか?

于 2011-12-17T22:09:15.620 に答える
0

(ブロックの可視性の設定に関係なく) まだ表示できなかった 1 つのブロックは、「メニュー ブロック」でした。問題は、このブロックにサンキュー ページへのリンクがなかったことです。そのため、構成ページに のようなパスを使用してリンクを追加する必要がありproduct/[node_id]/thankyou、リンクが表示されないようにリンクを無効にしました。ページを更新すると、ブロックが表示されました。

私はこれを動的にして製品ノード ID に書き込む必要がないようにしたかったので、これは少し面倒です。しかし、いずれにせよ、問題は解決しました。

于 2011-12-19T15:54:52.150 に答える