1

私はアドバイスが必要なdrupalの初心者です...

View Moduleで作成されたホームページにニュースリストブロックがあります。追加されたすべてのニュースのタイトルとリンクを一覧表示しています。これまでのところすべてがクールです。ここで、ホームページのニュース ブロックのオン/オフ オプションを管理者側に追加する必要があります。設定がONの場合はそのまま動作します。OFFの場合、ニュース詳細ページへのリンクはなく、タイトルのみが一覧表示されます。

では、この ON/OFF オプションをどこに追加すればよいでしょうか。ニュースごとにページを追加/編集/削除するだけで、そのようなオプションを追加する共通のニュース ページはありません。そのようなオン/オフオプションを含む管理ページを作成する必要がありますか? また、この ON/OFF 状態を維持するために db テーブルを作成する必要があると思います。この値が 1 または 0 の場合は、ホームページ ブロックでこの値を制御し、db 値に従ってリンクを表示します:/

遠すぎるように見える

  1. データベーステーブルを作成
  2. でON/OFFできるページを作る
  3. 管理者が選択したデータベースを更新するためのphpコードを追加します
  4. リンクなどを表示するために、ホームページ ブロックの db 値を取得します。

私が必要とすることを行うためのより短く、より良い方法はありますか?

感謝はとても役立ちます!!! どうもありがとう!!

4

3 に答える 3

3

そのようなもののためにデータベーステーブルを作成する必要はまったくありません。ただし、基本的な管理ページが必要な場合は、単純なモジュールを作成する必要があります。まず、このクイック スタートガイドに従って、基本モジュールをセットアップします。(注: これらのデータベース クエリを .install ファイルに追加する必要はありません)

モジュールを有効にしたら...

1) mynewmodule.module ファイルに、メニュー エントリを追加して、Drupal に管理ページにアクセスできる場所を伝えます。


function mynewmodule_menu() {
  return array(
    'admin/settings/mynewmodule' => array(
      'title' => 'My New Module',
      'description' => 'Change settings for news display.',
      'page callback' => 'drupal_get_form',
      'page arguments' => array('mynewmodule_admin_form'),
      'acces callback' => 'user_access',
      'access arguments' => array('administer site configuration'),
    ),
  );
}

2) また、mynewmodule.module ファイルに、メニュー エントリで参照したばかりのフォームを作成する関数を追加します。


function mynewmodule_admin_form() {
  $form = array();
  $form['mynewmodule-on-off-switch'] = array(
   '#type' => 'checkbox',
   '#title' => t('Enable news links'),
   '#description' => t('Control whether news items are linked to stories'),
   '#default_value' => variable_get('mynewmodule-on-off-switch', 1),
  );
  return system_settings_form($form);
}

3) キャッシュをクリアして、Drupal が管理ページを認識できるようにします (mynewmodule_menu() に変更を加えるたびにクリアする必要があります)。ここでクリアできます: admin/settings/performance

4) admin/settings/mynewmodule にアクセスして、管理フォームを表示します。仕組みとしては、構成を保存すると、Drupal は「mynewmodule-on-off-switch」という変数 (フォームの配列キーと同じ名前) をデータベースの変数テーブルに保存します。variable_get() を使用すると、この値をどこからでも取得できます。

于 2010-06-15T03:44:08.480 に答える
1

Drupal の弱点である IMHO は、サイトを立ち上げるために構成する管理者設定の数が非常に多いことであり、それを追加したくはありません。

私がすることは、ビューに 2 つの異なるブロックを表示させることです。1 つは完全なビューで、もう 1 つは省略されたビューです。その後、すべての構成をブロック インターフェイスを介して行うことができます。これは、長期的にははるかに柔軟になります。たとえば、ブロックの可視性にワイルドカードまたは php コードを使用する。さまざまな役割を持つユーザーにさまざまなビューを表示します。訪問者が表示するビューを制御できるようにする。2 つのビューをよりきれいにテーマ エンジンに公開する。ブロックで動作する他のモジュールとの統合。

于 2010-06-15T03:57:35.397 に答える
1

admin/settings/on-off-switch にフォームを作成します。フォーム送信関数 variable_set('on/off switch', $value) (値にブール値を使用してみてください)。次に、ビューのテーマで、リンクを印刷する前に variable_get('on/off switch', $default_value) を確認します。

于 2010-06-14T19:22:02.913 に答える