23

自分のセクションをumbracoダッシュボードに追加して、自分の管理部分を既存のログイン/管理構造に統合できるようにしたいと思います。これは、umbracoソース自体を編集および再コンパイルせずに可能ですか?お勧めですか?もしそうなら、誰かがこれを始めるためのリソースを持っていますか?

4

2 に答える 2

42

はい、これは可能です。

バックエンドは、ダッシュボード、セクション、およびコンテンツ ツリーの両方で拡張できます。

新しいダッシュボード セクションを定義するために使用できる構成ファイルがあります。構成ファイルは、次のフォルダーにあります。/config/dashboard.config

通常、dashboard.config ファイルには、次のような構造にする必要がある XML の例が含まれています (より多くの機能を表示するために少し拡張しました)。

<dashBoard>
    <section>
        <areas>
            <area>default</area>
            <area>content</area>
            <area>member</area>
        </areas>

        <tab caption="Last Edits">
            <control>/usercontrols/dashboard/latestEdits.ascx</control>
        </tab>
        <tab caption="Latest Items">
            <control>/usercontrols/dashboard/newestItems.ascx</control>
        </tab>
        <tab caption="Create blog post">
            <control>/usercontrols/umbracoBlog/dashboardBlogPostCreate.ascx</control>
        </tab>
    </section>
    <section>
        <areas>
            <area>media</area>
        </areas>

        <tab caption="Last Edits">
            <control>/usercontrols/dashboard/latestEdits.ascx</control>
        </tab>
    </section>
</dashBoard>

セクション ノードを使用すると、さまざまな管理セクションにさまざまなタブ グループを設定できます。上記の例では、最新の編集、最新のアイテム、およびブログ投稿の作成タブが、デフォルト、メンバー、およびコンテンツ セクションに適用されます。デフォルトは、ユーザーがセクションを選択する前にバックエンドにログインしたときに最初に表示されるものです。

さまざまなセクションに表示される内容を制御するには、新しいセクション ノードを設定し、それが適用される領域と表示するタブを定義します。上記の例では、2 番目のセクションはメディア セクションにのみ適用されます。

タブに表示されるのは、通常の .NET ユーザー コントロールです。これは、レガシー アプリケーションを統合するか、単に umbraco を拡張するかに応じて、Umbraco から完全に分離することも、umbraco 固有のコードを含めることもできます。

新しいセクション (umbraco バックエンドの左下隅に表示されるアイコンの 1 つ) を作成する場合は、手を少し汚す必要があります。

セクションを追加するには、いくつかのデータベース エントリを追加する必要があります。最初に、umbracoApp テーブルでアプリを定義する必要があります。

次に、管理ユーザー (0) のエントリを umbracoUsers2App に追加します。

次に、新しいコンテンツ ツリーを定義し、サポートするユーザー コントロールを作成する必要があります。

これを設定する方法の詳細については、http: //www.geckonewmedia.com/blog/2009/8/3/how-to-create-a-custom-section-in-umbraco-4を参照してください。

最初のアプローチ (いくつかの新しいタブを定義するだけ) は、新しいセクションを追加するよりもかなり簡単なので、そこから始めることをお勧めします。その後、より快適になったら、すぐに飛び込んで、まったく新しいセクションとコンテンツ ツリーを作成できます。

于 2009-06-09T08:25:51.063 に答える
2

わお!7年前の投稿が今もグーグル検索でトップ。

それでは、答えを更新しましょう:

ここでは、ダッシュボードの拡張に関するドキュメントを見つけることができます: ダッシュボード

ダッシュボード

/config ディレクトリ内の他の .config ファイルと同様に、Dashboard.config ファイルを使用すると、Umbraco エクスペリエンスの一部をカスタマイズできます。この場合、Dashboard.config ファイルは、サイトのセクションが読み込まれたときに UI のダッシュボード セクションに表示される内容を制御します。ダッシュボードは、UI の右側にある領域で、ほとんどのデータ入力と機能的相互作用が行われます。

デフォルトでは、Umbraco は新しいセクションが読み込まれると空白のダッシュボードを表示し、セクション内でアクションを実行するときにのみフォームを表示します (つまり、コンテンツ セクションのノードをクリックすると、ダッシュボードはそのノードのデータを更新するフォームを表示します)。しかし、ノードをクリックする前であっても、UI ユーザーにいくつかのオプションを提示したい場合はどうでしょうか? それが、Dashboard.config でできることです。

レイアウト

他の .config ファイルと同様に、Dashboard.config は、以下に示すように、非常に単純なレイアウトのシンプルな XML ファイルです。

<?xml version="1.0" encoding="utf-8" ?> 
<dashBoard> <!-- root of the dashboard xml tree -->
   <section>  <!-- defines a dashboard layout for a group of sections -->
        <areas> <!-- Declares which sections (i.e. content,media,users,[your own]-->
            <area>[area name]</area> <!-- A section to apply this to -->
            ...
        </areas>

        <tab caption="[caption]"> <!-- Creates a tab in the Dashboard with the assigned Caption -->
            <control>[path]</control> <!-- What control to load in that tab -->
        </tab>
        ...
   </section>
   ...
</dashBoard>

セクション (Umbraco UI セクションとは異なります) ダッシュボード情報を区切り、1 つ以上のセクションに適用します。Dashboard.config には、複数のセクションが含まれる場合があります。

エリア

ダッシュボード情報のサブセットを適用する Umbraco UI のセクションを定義します。area - 常に小文字!

ユーザー コントロールを表示する Umbraco UI セクションの名前* (例: コンテンツ、メディア、開発者、設定、メンバー、またはカスタム セクション名)。複数のノードを追加することで、複数のセクションにコントロールを追加できます。

「デフォルト」という名前の領域は、ユーザーがどのセクションにアクセスできるかに関係なく、ユーザーがログインしたときに表示される最初のダッシュボードです!

ちょっとした問題ですが、アプリの名前を小文字で含めるようにしてください。

タブ

ユーザー コントロールを追加するページ タブを定義します。属性「キャプション」は、タブに表示されるテキストを定義します。ダッシュボードの「ページ」コントロールごとに複数のタブが存在する場合があります

タブに表示するユーザー コントロールへのパスを定義します。

この要素を使用すると、セクション、タブ、およびコントロールにアクセス許可を設定でき、特定のユーザー タイプのアクセスを許可または拒否できます。

またはノードの<access/>下にノードを追加することで機能します。あなたの子供として、追加することができます<section /><tab/><control />

<grant />これらのタイプのユーザーにアクセス許可を付与します (そして、そこにいないユーザーへのアクセスを自動的に拒否します!)

<grantBySection />これにより、特定のセクションにアクセスできるユーザーに権限が付与されます。これは、より詳細なアクセス許可に役立ちます

<deny />これらのタイプのユーザーへのアクセス許可を拒否します (さらに、他のすべてのユーザーに自動的に許可します)

設定に関係なく、root ユーザー (id:0) はすべてを見ることができるので、管理者に拒否権限を設定してもすべてを見ることができても慌てる必要はありません ;-)

パーミッションの例:

<tab caption="Last Edits">
    <access>
        <grant>writer</grant>
        <grant>editor</grant>
        <grantBySection>content</grantBySection>
    </access>
    <control>/usercontrols/dashboard/latestEdits.ascx</control>
</tab>

カスタマイズ

Umbraco でダッシュボードをカスタマイズするには、いくつかのことを行う必要があります。1 つまたは複数の UserControl を作成する

ダッシュボードは 1 つ以上の UserControls をロードし、一連のタブに表示します。したがって、コントロールをカスタマイズするには、最初にページに表示される UserControls を作成する必要があります。これらが個人的に使用する場合は、Umbraco がアクセスできるサイト上の場所に UserControls を配置するだけです。/usercontrol ディレクトリ、できれば独自のサブフォルダに配置することをお勧めします。他のユーザーが使用するパッケージを作成する場合は、残りのパッケージ コンテンツと共にインストールするパッケージにユーザー コントロールを含める必要があります。Dashboard.config を更新する

セクションのロード時にロードする UserControls を作成したら、Dashboard.config を更新して、ユーザーが新しいセクションに入ったときに UserControls をロードするように Umbraco に指示する必要があります。繰り返しますが、これを自分で行う場合は、サイトの Dashboard.config を編集してコントロールを追加するだけです。ただし、パッケージにセクションを追加する場合は、パッケージ アクションを含めて、インストール中に Dashboard.config を更新する必要があります。パッケージ アクションの詳細については、ここをクリックしてください。サンプル

以下は、有効な Dashboard.config の例です。

<?xml version="1.0" encoding="utf-8" ?> 
<dashBoard>
    <section>
        <areas>
            <area>content</area>
        </areas>        
        <tab caption="Last Edits">
            <access>
                <deny>editor</deny>
            </access>
            <control>/usercontrols/dashboard/latestEdits.ascx</control>
        </tab>
        <tab caption="Latest Items">
            <control>/usercontrols/dashboard/newestItems.ascx</control>
        </tab>
        <tab caption="Create blog post">
            <control>/usercontrols/umbracoBlog/dashboardBlogPostCreate.ascx</control>
        </tab>
    </section>
</dashBoard>

ユーザーが Umbraco UI のコンテンツ セクション (セクションは画面の左下にあります) をクリックするたびに、「最終編集」、「最新アイテム」、「ブログの作成」という 3 つのタブを含むページが読み込まれます。役職"。タブごとに UserControl が読み込まれ、開発者がそれらのタブ用に作成した機能が提供されます。UI は、提供されたパスを介して UserControls を見つけます。

于 2016-10-13T08:58:09.703 に答える