ホームページ > バックエンド開発 > PHPチュートリアル > PHPマスター|新しいDrupalノードタイプの作成

PHPマスター|新しいDrupalノードタイプの作成

William Shakespeare
リリース: 2025-02-24 08:34:10
オリジナル
313 人が閲覧しました

PHPマスター|新しいDrupalノードタイプの作成

Drupalは、Webサイトを構築するための非常に柔軟なコンテンツ管理システムです。これは、PHPコードを記述せずに包括的なサイトを構築できるようにするために、多くの優れた機能を箱から出して提供します。また、モジュールを使用してより多くの機能を追加する機能も提供します。 デフォルトでは、Drupalノードタイプは記事とページです。これは基本的なサイトに適しているかもしれませんが、より複雑なWebサイトを作成する予定がある場合は、さまざまなノードタイプを追加する必要があります。モジュールを書くことでそれらを定義することもできます! この記事では、DrupalフックとAPIを使用して新しいノードタイプをインストールするカスタムDrupalモジュールの作成方法を確認します。

キーテイクアウト

  • Drupalは、カスタムモジュールを作成して新しいノードタイプを作成できる柔軟なコンテンツ管理システムです。これは、デフォルトの記事とページノードタイプを超えて、より複雑なWebサイトを構築するのに有益です。
  • 新しいノードタイプの作成には、.info(モジュールに関する情報が含まれている)、.install(モジュールのインストールまたはアンインストールの詳細)、および.module(実装コードを含む)の3つのファイルを使用してモジュールを作成することが含まれます。モジュールで使用されるdrupalフック)。
  • 新しいノードタイプは、DrupalフックとAPIを使用してインストールされ、タイトル、説明などのフィールドが定義されています。モジュールには、アンインストールされたときに追加されたデータまたはタイプをクリーンアップするためのコードも含める必要があります。 モジュールの.installファイルにフィールドとフィールドインスタンスを作成することにより、
  • 追加のフィールドを新しいノードタイプに追加できます。これにより、製品ノードタイプの製品価格や数量など、よりカスタマイズされたコンテンツが可能になります。
  • モジュールの作成
  • まず、新しいコンテンツタイプを作成するモジュールの基本構造を作成することから始めましょう。 モジュールを作成するには、Drupalインストールのサイト/ALL/MODULESディレクトリで、ProductCustomTypeという名前の新しいディレクトリを作成します。そのフォルダーで、3つのファイルを作成します。

ProductCustomType.Info - モジュールに関する情報が含まれているため、Drupalがそれを認識してリストに表示します。

ProductCustomType.Install - モジュールのインストールまたはアンインストールについての詳細があります。
    ProductCustomType.Module - モジュールで使用されているDrupalフックを実装するコードが含まれます。
  • ディレクトリを作成したら、ProductCustomType.infoを開き、次のコードを追加します。
  • 上記は、モジュールのパラメーターをいくつか定義しているため、Drupalはそれを使用してモジュールに関する情報を表示できます。これが完了したら、以下に示すようにモジュールリストにモジュールが表示されるはずです。しかし、まだ有効にしないでください。次のステップの後にそれを行います。
  • ノードのインストールとアンインストール

    モジュールの基本ファイルを配置したら、カスタムノードタイプをインストールするためのコードの書き込みを開始できます。実装する必要がある最初のフックは、hook_node_infoです。このフックを使用して、モジュールはDrupalの1つ以上のノードタイプを定義できます。フックの実装は、モジュールが追加する新しいノードタイプを定義する配列を返します。 このフックを実装するには、次のコードをProductCustomType.moduleに追加します。
    name = productcustomtype
    description = A new content type of Product
    package = Product Custom node Type
    core = 7.x
    files[] = productcustomtype.install
    files[] = productcustomtype.module
    ログイン後にコピー
    ログイン後にコピー
    実装は、タイトル、ベース(このコンテンツタイプの異なるフックで使用される)がある場合、その名前、説明、その名前など、そのプロパティの一部とともに新しいノードタイプ製品を定義する配列を返します。 このノードタイプにはタイトルがあると定義したように、このノードのフォームがコンテンツを追加するために表示されるときに、タイトルテキストフィールドを表示する必要があります。これを行うには、フックhook_formを実装する必要があります。 hook_formフックは、ノードの作成/編集に使用されるフォームを表示するために使用されます。フックは、次のようにProductCustomType.moduleに実装されています。
    <span><span><?php
    </span></span><span><span>/**
    </span></span><span><span> * Implements hook_node_info()
    </span></span><span><span> */
    </span></span><span><span>function productcustomtype_node_info() {
    </span></span><span>    <span>return array(
    </span></span><span>        <span>'product' => array(
    </span></span><span>            <span>'name' => t('Product'),
    </span></span><span>            <span>'base' => 'product',
    </span></span><span>            <span>'description' => t('You can define new Products here'),
    </span></span><span>            <span>'has_title' => TRUE,
    </span></span><span>            <span>'title_label' => t('Product title')
    </span></span><span>         <span>)
    </span></span><span>    <span>);
    </span></span><span><span>}</span></span>
    ログイン後にコピー
    ログイン後にコピー
    hook_formの実装を提供するDrupal APIを使用するだけです ノード定義にhas_title属性セットがある場合、タイトルフィールドを追加します(この場合はセットします)。 これを完了したら、hook_installフックを実装して、新しいノードタイプにボディフィールドを追加する必要があります。 次のように、ProductCustomType.installに実装を追加します。
    <span><span><?php
    </span></span><span><span>/**
    </span></span><span><span> * Implement hook_form()
    </span></span><span><span> */
    </span></span><span><span>function product_form($node, $form_state) {
    </span></span><span>    <span>return node_content_form($node, $form_state);
    </span></span><span><span>}</span></span>
    ログイン後にコピー
    ログイン後にコピー
    最初に、Drupal API node_types_rebuild()関数を呼び出すことにより、さまざまなモジュール(当社を含む)によって作成されたすべての新しいノードタイプを保存します。次に、すべてのノードタイプを取得し、ボディフィールドを追加するために型にnode_add_body_field()を呼び出します。 これを行ったら、新しいノードタイプをインストールするモジュールを有効にすることができます。次に、次のようにコンテンツを追加すると、新しいタイプを見ることができるはずです。

    PHPマスター|新しいDrupalノードタイプの作成 新製品を追加すると、Drupalのホームページにも表示されます。

    PHPマスター|新しいDrupalノードタイプの作成Drupalのすべてのモジュールは、データベースで作成したデータまたはユーザーがアンインストールしたときに追加したタイプをクリーンアップする必要があります。これをサポートするには、次のようにfool_uninstallをfoolcustomtype.installファイルに実装する必要があります。

    name = productcustomtype
    description = A new content type of Product
    package = Product Custom node Type
    core = 7.x
    files[] = productcustomtype.install
    files[] = productcustomtype.module
    ログイン後にコピー
    ログイン後にコピー
    最初に、インストールされているコンテンツタイプのノードであるすべてのノードIDを見つけます。 IDSを収集したら、API関数node_delete_multiple()を使用して複数のノードを削除します。次に、node_type_delete()関数を使用して、ノードタイプを削除します。 これで、モジュールをアンインストールすると、タイプのすべてのノードとタイプ自体を削除する必要があります。

    余分なフィールドの作成

    新しいノードタイプを追加すると、ノードの機能と同様の機能があります。しかし、ノードタイプに応じてフィールドを追加したい場合はどうなりますか?たとえば、製品タイプの場合は、価格と数量など、さらに2つのフィールドを追加する必要があります。 このために、最初にフィールドを作成し、次にノードタイプにフィールドインスタンスを作成する必要があります。 ProductCustomType.installファイルに2つの新しい関数を書き込み、フィールドとフィールドインスタンスを定義します。
    <span><span><?php
    </span></span><span><span>/**
    </span></span><span><span> * Implements hook_node_info()
    </span></span><span><span> */
    </span></span><span><span>function productcustomtype_node_info() {
    </span></span><span>    <span>return array(
    </span></span><span>        <span>'product' => array(
    </span></span><span>            <span>'name' => t('Product'),
    </span></span><span>            <span>'base' => 'product',
    </span></span><span>            <span>'description' => t('You can define new Products here'),
    </span></span><span>            <span>'has_title' => TRUE,
    </span></span><span>            <span>'title_label' => t('Product title')
    </span></span><span>         <span>)
    </span></span><span>    <span>);
    </span></span><span><span>}</span></span>
    ログイン後にコピー
    ログイン後にコピー
    次に、Adray add_custom_fields()in productcustomtype.installを作成し、配列を読み取り、フィールドとインスタンスを作成します。
    <span><span><?php
    </span></span><span><span>/**
    </span></span><span><span> * Implement hook_form()
    </span></span><span><span> */
    </span></span><span><span>function product_form($node, $form_state) {
    </span></span><span>    <span>return node_content_form($node, $form_state);
    </span></span><span><span>}</span></span>
    ログイン後にコピー
    ログイン後にコピー
    これで、Moduleのインストール時にフィールドとフィールドインスタンスがインストールされるように、ProductCustomType_Install()のadd_custom_fields()関数を呼び出すことができます。
    <span><span><?php
    </span></span><span><span>/**
    </span></span><span><span> * Implements hook_install().
    </span></span><span><span> */
    </span></span><span><span>function productcustomtype_install() {
    </span></span><span>    <span>node_types_rebuild();
    </span></span><span>    <span>$types = node_type_get_types();|
    </span></span><span>      <span>node_add_body_field($types['product']); 
    </span></span><span><span>}</span></span>
    ログイン後にコピー
    また、ProductCustomType_uninStall()関数を更新して、フィールドとフィールドインスタンスを削除する必要があります。
    <span><span><?php
    </span></span><span><span>/**
    </span></span><span><span> * Implements hook_uninstall().
    </span></span><span><span> */
    </span></span><span><span>function productcustomtype_uninstall() {
    </span></span><span>    <span>$ournewtype = 'product';
    </span></span><span>    <span>$sql = 'SELECT nid FROM {node} n WHERE n.type = :type';
    </span></span><span>    <span>$result = db_query($sql, array(':type' => $ournewtype));
    </span></span><span>    <span>$nodeids = array();
    </span></span><span>    <span>foreach ($result as $row) {
    </span></span><span>        <span>$nodeids[] = $row->nid;
    </span></span><span>    <span>}
    </span></span><span>    <span>node_delete_multiple($nodeids);
    </span></span><span>    <span>node_type_delete($ournewtype);
    </span></span><span><span>}</span></span>
    ログイン後にコピー
    モジュールをもう一度インストールし、製品をクリックして新しい製品を追加すると、次のように2つのフィールドが表示されます。

    PHPマスター|新しいDrupalノードタイプの作成

    ノードを保存してプレビューで表示した後、次のようにフィールドが表示されます。

    PHPマスター|新しいDrupalノードタイプの作成

    結論

    Drupal CMSは、さまざまなカスタマイズを実行できる多くの便利なフックと強力なAPIを提供します。この記事では、Drupalのコンテンツセクションに表示されるまったく新しいノードタイプを作成することができました。また、DrupalのAPIを使用して、この新しいノードタイプにフィールドを添付して、誰でも新しいノードタイプを使用してコンテンツを簡単に追加できるようにします。 Drupalサイトの次の新しいノードタイプを作成して楽しんでください。 Fotoliaを介した画像 新しいDrupalノードタイプの作成に関するよくある質問

    drupalノードタイプとは何ですか?それが重要なのはなぜですか?

    コンテンツタイプとも呼ばれるDrupalノードタイプは、互いに関連する事前定義されたデータ型(フィールド)のコレクションです。情報コンテキストによって。これは、簡単なブログ投稿、記事、ニュース記事、フォーラムのトピック、またはチュートリアルなどです。ノードタイプは、Drupalのコンテンツを入力、表示、および管理するための構造化された方法を提供するため、重要です。データ入力、検証、および表示設定のカスタマイズを可能にします。これにより、ユーザーエクスペリエンスとDrupalサイトの全体的な機能を大幅に向上させることができます。 >

    Drupalで新しいノードタイプを作成することは、簡単なプロセスです。まず、Drupal管理ダッシュボードの「構造」メニューに移動し、[コンテンツタイプ]を選択します。 [コンテンツタイプの追加]ボタンをクリックします。新しいノードタイプの名前、説明、および設定に記入するように求められます。必要な情報を入力したら、「フィールドの保存と管理」ボタンをクリックして、新しいノードタイプにフィールドを追加します。 🎜>はい、Drupalノードタイプのフィールドをカスタマイズできます。新しいノードタイプを作成した後、必要に応じてフィールドを追加、編集、または削除できます。これにより、特定のコンテンツのニーズに合わせてノードタイプを調整できます。たとえば、記事の要約にテキストフィールド、注目画像の画像フィールド、または公開日の日付フィールドを追加することができます。

    Drupalは、各ノードタイプの「ディスプレイの管理」タブを提供します。これにより、ノードが表示されたときに各フィールドの表示方法を制御できます。各フィールドのラベル、フォーマット、および順序を調整できます。また、ティーザービューや完全なコンテンツビューなどのカスタムディスプレイモードにフィールドをグループ化することもできます。

    DrupalのノードAPIを使用して、プログラムでノードを作成できますか?ノードをプログラム的に作成、更新、削除する強力な方法。これは、別のシステムからコンテンツのインポート、テストデータの生成、カスタムワークフローの作成などのタスクに役立ちます。ノードAPIはDrupalのコアシステムの一部であるため、すべてのDrupalインストールで使用できます。

    Drupalのコアノードタイプは何ですか?

    ​​

    Drupalには、記事、基本ページ、ブログエントリ、フォーラムトピック、投票など、いくつかのコアノードタイプが付属しています。これらは、Drupalでコンテンツを管理するための出発点を提供します。ただし、特定のニーズに合わせて独自のカスタムノードタイプを作成することもできます。

    Drupalノードへのアクセスを制御するにはどうすればよいですか?ユーザーロールに基づいてアクセス許可を設定して、各タイプのノードを表示、作成、編集、削除できる人を制御できるようにします。 DrupalのノードアクセスAPIを使用して、より複雑なアクセスルールを作成することもできます。

    Drupalのビューモジュールを使用してノードを表示できますか? 。ノードタイプ、出版ステータス、著者など、さまざまな基準に基づいてノードを表示するカスタムビューを作成できます。ビューのディスプレイ形式、並べ替え、ページネーションをカスタマイズすることもできます。ノードの感触。各ノードタイプのカスタムテンプレートを作成できます。DrupalのTheme APIを使用して、カスタムCSSとJavaScriptをノードに追加できます。 >はい、Drupalのモジュラーアーキテクチャを使用すると、ノードの機能をモジュールで拡張できます。イメージギャラリー、コメント、評価、ソーシャルメディアの統合などの機能をノードに追加できる数千の寄稿モジュールがあります。利用可能なモジュールで満たされていない特定のニーズがある場合は、独自のカスタムモジュールを作成することもできます。

以上がPHPマスター|新しいDrupalノードタイプの作成の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート