質問

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

役に立ちましたか?

解決

はい、これは可能です。

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

新しいダッシュボード セクションを定義するために使用できる構成ファイルがあります。構成ファイルは次のフォルダーにあります。 /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

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

他のヒント

おお!7 年前の投稿が依然として Google 検索のトップにあります。

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

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

ダッシュボード

/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 のどのセクションに適用するかを定義します。エリア - 常に小文字です。

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

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

ちょっと注意が必要ですが、アプリの名前は必ず小文字で入力してください。

タブ

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

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

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

を追加することで機能します <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 つ以上の UserControl をロードし、それらを一連のタブに表示します。したがって、コントロールをカスタマイズするには、まずページに表示される UserControl を作成する必要があります。これらが個人使用の場合は、Umbraco がアクセスできるサイト上の場所に UserControls を配置するだけで済みます。これらを /usercontrol ディレクトリ、できれば独自のサブフォルダーに配置することをお勧めします。他の人が使用できるパッケージを作成している場合は、残りのパッケージ内容とともにインストールするパッケージにユーザー コントロールを含める必要があります。Dashboard.config を更新する

セクションのロード時にロードする UserControl を作成したら、Dashboard.config を更新して、ユーザーが新しいセクションに入ったときに UserControl をロードするように 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 は、提供されたパスを介して UserControl を見つけます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top