2016-11-03 4 views
0

シルバーストライプのウェブサイトにニュースとアナウンスを組み込む必要があります。ニュースとアナウンスは全く同じ構造であり、どちらもhttps://github.com/nyeholt/silverstripe-newsです。 htmlテンプレートには、ニュース用とアナウンス用の2つのセクションがあります。同じsilverstripeニュースモジュールを使ってニュースや記事を作る方法は?

この実装するための適切な方法です:

  • は、私はちょうどコピー/ニュースモジュールフォルダ過去と発表のためのニュースや他のための1つを使用する必要があります。
  • を追加するか、これがニュース記事かアナウンス記事かを指定するフラグとして別のdbフィールドを追加しますが、cmsでは毎回これを確認する必要があります。
  • またはそこには何か、私はヤウドは新しいものの側には、すべてのクラスの名前を変更しない限り、あなたが期待する結果を持っていないフォルダを複製
+1

必ずコピー/ペーストしないでください。プログラミングのルール:あなた自身を繰り返さないでください!あなたは、コピー/貼り付けのコードを持っていることを前にしたいと思う。あなたがプロジェクトに参加しているときにそれを維持することは本当に悪く、ほとんど不可能です。 – Twinfriends

+0

は、サムネイルがニュースに必要であり、アナウンスのためではないというルールがある場合、それらを分離するべきではありません。その他の規則。 – osama7901

+1

これらは常に分離する必要があります。あなたは本当に自分自身を繰り返す必要はありません...あなたが使いたいソリューションのような完成したソリューションの問題は、コードに入って自分が望むように変更することが非常に難しいことです。あなたのスキルがどれほど優れているか分かりませんが、簡単なIF条件でニュースにのみ必要なサムネイルのこの単純なルールも... – Twinfriends

答えて

1

分からないです。

基本的に、フォルダはクラスが実際にニュース記事をリクエストするときにアクセスするものではなく、SilverStripesルートを使用します。

スタティックアセットは、モジュールフォルダから読み込まれるものです。

拡張機能に新しい動作を追加する最もよい方法は、DataExtensionを使用することです。

は、モジュールが「ニュースホルダー」を配置するためのsitetreeを使用している場合https://docs.silverstripe.org/en/3.4/developer_guides/extending/extensions/

他の方法は次のようになります参照してください。次に、名前の異なる2人のホルダーを作成し、正しいホルダーに関連するparentIdをフィルターにして、paricular parentのリストを表示する場合もオプションがあります。

第3のオプションは、モジュールクラスを拡張し、メソッドのうちのいくつかをあなたのニーズに合わせてオーバーライドするmysiteの下に新しいクラスを追加することだけです。

+0

私はニュースフォルダを新しいモジュール、私はコードを読んで、それは非常に簡単に変更するようです。私はクラス(ちょうど2つのクラス)の名前を変更します(NewsArticle - > AnnouncementArticle ... etc)。私はこれが私の要件から最も良い、最も簡単な方法だと思っています。ニュースとアナウンスは何らかの形で違うでしょうし、私はこことかそこにIFステートメントを使いたくありません。 – osama7901

+0

私はそれをすべきだと強く提案しています..コンテンツが99%同じなら、拡張機能名をニュースからannousmentsに変更する必要はありません。もしあなたがそのルートを下るならば、2つの異なる拡張機能への更新を管理する必要があります。 –

+0

私の答えに第3のオプションを追加しました –

関連する問題