現在、出力にノードオブジェクトを必要とするフィルターを含むカスタムモジュールに取り組んでいます。
元々、フィルターはarg(1)からNIDをプルし、それを使用してノードオブジェクトにロードしていましたが、残念ながらフィルターキャッシュがフラッシュされ、ノードがノードページ自体arg(1)以外の場所から出力を再構築した場合NIDが含まれないため、フィルターが機能しなくなります。
フィルターが変換するトークンにNIDを入れることを検討していますが、ノードの作成中は明らかにNIDがわかりません。 NIDを挿入するためにhook_nodeapi()
を介してトークンを変更することはそれほど難しくありませんが、非常に手間がかかるようです。
フィルターに何らかのコンテキストを提供して、どのノードがそれを呼び出したかを認識できるようにする簡単な方法はありますか?
フィルターモジュールはコメントに対しても呼び出されますが、フィルターに渡される引数のいずれも、ノードのコンテンツまたはコメントを変更するために呼び出されるタイミングを理解できません。
hook_nodeapi()
を実装して、レンダリング前にノードを組み立てているときにノードのコンテンツを変更できます。 $op
の値が"view"
であることを確認してください。
これは、一部のノードフィールドのコンテンツに基づいてノードのコンテンツを変更するサードパーティのモジュールが実際に行うことです。
モジュールを置き換える文字列をノードを編集するユーザーが入力できる場合(ユーザーはこの可能性を知っている必要がある場合)、たとえば、編集フォームのノード本体フィールドに指定された説明を次のように変更する必要があります。モジュールが置き換える「トークン」の説明を含めます。