4

タイプのインスタンスを作成するためにツールを使用すると、portal_factoryオーバーライドするように指定したビューが無視されるようbase_editです。

これが私がセットアップしたものです:

  1. 型ツールのエイリアスからからeditへ。base_edit
  2. ビューをレンダリングするビュー クラス。
  3. ビュー クラスを適切なインターフェイスにフックする ZCML。
  4. 適切なインターフェースを実装するコンテンツ クラス。

レンダリングされるため、オーバーライドさbase_editれたビューが機能することはわかっています。

  1. オブジェクトが作成されると、レンダリングされます。
  2. portal_factoryタイプのツールを無効にすると。

custom_editツールでタイプが有効になっているにもかかわらず、別の名前を使用すると、オーバーライドされたビューもレンダリングされportal_factoryます。

4

2 に答える 2

3

をカスタマイズする必要はありませんbase_edit.cpt。単に という名前の新しい CMF スキン テンプレートを作成する必要がありますyourtypenamenormalized_edit.pt。ここで、「yourtypenamenormalized」は、小文字の portal_type 名で、スペースは入れません。元の Archetype base_edit.cptは、すべてのデフォルト マクロを適用する前に、この方法で呼び出されたテンプレートを探します。

その後、デフォルトのテンプレート ( edit_macro.pt ) 内にあるすべてのコードをこの新しいテンプレートに入力してから、変更の適用を開始することをお勧めします。

通常、上書きしたい唯一のマクロはbodyマクロです。

于 2013-08-17T10:37:31.730 に答える
3

エイリアスを @@base_edit に変更しても機能します。この方法では、zope traversing は属性アクセスの代わりにアダプタ ルックアップを作成し、編集ビューが使用されます。

知る限り、@@ はアダプタのルックアップを強制します。@@ なしでは、取得を介して最初のオブジェクトが呼び出され、次にアダプタが呼び出されます。

cc @juriejan

于 2013-09-05T20:51:37.677 に答える