2016-07-06 13 views
2

私はどの私は、これらのpagetypesのコードをコアに埋め込まれていると仮定していSilverStripeの非表示デフォルトpagetypes

例えばSilverStripeのデフォルトpagetypesを隠すベストプラクティス方法を理解することが仮想ページをしようとしていますむしろ手放す。そこで私は、この方法が動作することが分かってきました:これはクリーンかつ少なくともハック解決策になると思われるが、誰もがより良い方法を持っている場合、私はまだ疑問に思う

class HidePageType_VirtualPage extends Page implements HiddenClass { static $hide_ancestor = 'VirtualPage'; }

。また、このメソッドは、クラス名に基づいて新しいデータベース列を作成していますが、のページタイプを隠すという目標を考えると意味がありません

答えて

2

もっと良い解決策があるかもしれませんが、私はcanCreateメソッドでfalseを返す拡張を作成しています。例:

class CantCreateExtension extends DataExtension 
{ 
    public function canCreate($member) 
    { 
     return false; 
    } 
} 

次に、あなたの_config.ymlに以下を追加することで、あなたが作成することにしたくないページに適用します:

VirtualPage: 
    extensions: 
    - CantCreateExtension 
+0

乾杯、これは作成から同じジョブ(非表示ページタイプを行います-page-dropdown)を使用してデータベースを追加する必要はありません。私は同じことを試みましたが、 'DataExtension'の代わりに' VirtualPageExtension'を書いて500エラーがありました。 – Faloude

+0

フォローアップの質問:管理者にエラーページを表示、作成、編集できるようにしたいが、通常のユーザーである 'content_authors'のCMS SiteTreeから完全に非表示にする。私は同じことを試みましたが、 'canView'を使っていましたが、ページはSiteTreeにまだ見えています。私は 'canView'は実際にページを開くことを無効にすると信じています(これは奇妙なことに、今度は500エラーになり、canViewはfalseにセットされます)。 – Faloude

+0

@Faloude "canView"と "canEdit" ...の両方をオーバーライドする必要があります。 – bummzack

関連する問題