0

したがって、これは暗闇でのショットである可能性がありますが、Drupal を少し知っていて、Ch の annotate モジュールを実装したことがある人向けです。Pro Drupal 7 開発の 2

すべてのユーザーが注釈を付けられるように注釈モジュールを変更する方法を知っていますか? 現在、管理者のみが注釈を付けることができ、編集の拡張機能として提示されています。

使用されている特定のコードは、このリポジトリにあります (本からほぼそのまま): http://github.com/dsharkey/Drupal-Module-Development--Annotate-Module

さらに、注釈モジュールがどのように提示されるように指示されているのか、実際にはわかりませんか? PHPの次の行(annotate.admin.incから)によると思います:

$instance = array(
          'field_name' => 'annotation',
          'entity_type' => 'node',
          'bundle' => $key,
          'label' => t('Annotation'),
          'widget_type' => 'text_textarea_with_summary',
          'settings' => array('display_summary' => TRUE),
          'display' => array(
            'default' => array(
              'type' => 'text_default',
            ),
            'teaser' => array(
              'type' => 'text_summary_or_trimmed',
            ),
        ),
      );
$instance = field_create_instance($instance);

しかし、それがインスタンスを作成してノードにアタッチする以上のことをどのように行うのかはわかりません。表示される場所が表示されるのはなぜですか (編集の隣のオプションとして)?

皆さんありがとう!

4

1 に答える 1

1

「編集の次のオプションとして」と言ったときに何を指しているのかわかりませんが、アップロードしたコード(および本自体、使用されたコードを再確認)はそれを引き起こしません. 実際、注釈を有効にしてノードを編集すると、body フィールドの下にフィールドが表示されるはずです。

注釈の場所

既存のノードを編集するときにのみ表示される(新しいノードを作成するときではない)理由は、すべてのユーザーがノードに注釈を付けることを許可しないという最初の質問に関連しています。hook_node_load()実装では、ユーザーがノードの編集は、ノードの所有者と同じです。そうでない場合は、注釈フィールドを非表示にします。

/**
* Implements hook_node_load()
*/
function annotate_node_load($nodes, $types) {
  global $user;
  // Check to see if the person viewing the node is the author. If not then
  // hide the annotation.
  foreach ($nodes as $node) {
    if ($user->uid != $node->uid) {
      unset($node->annotation);
    }
  }
}

したがって、注釈フィールドを表示する必要があるのは所有者だけです。編集アクセス権を持つすべてのユーザーがノードに注釈を付けられるようにする場合は、その機能を削除します。

ノード自体を編集するための別の機能として、誰でもノードに注釈を付けることができるようにすることについては、それは例の内容ではなく、使用されているコードとは完全に別のものです。その方法については、他の場所を探して、Drupal.org プロジェクトの Annotateなどの例を参照する必要があります。基本的に、注釈は、コメントが機能するのとほぼ同じように、ノードを参照する独自の個別のエンティティになります。

しかし、私が大胆に言うと、Pro Drupal 7 Developmentは以前の版ほど開発の参考にならないという点で大きな問題に遭遇したことになります。 Drupal 7 で導入されたものの大部分を完全に見逃しています。代わりにDrupal 7 Module Developmentをチェックすることをお勧めします。

于 2011-02-16T08:26:54.357 に答える