1

Plone 4.3.3 で Dexterity ベースの Plone Default Types を有効にした後、問題に遭遇しました。いくつかのサブサイト (INavigationRoot インターフェイスがアクティブ化されたフォルダー) がありました。これらの各サブサイトにはカスタム ロゴがあり、logo.pngナビゲーション ルートとして機能する各フォルダーに格納されています。Dexterity ベースの Plone のデフォルト タイプを有効にするまでは、問題なく動作していました。その時点で、すべてのカスタム ロゴは、ベースの Plone サイトに表示されているものに置き換えられました。

問題を調査したところ、レンダリングされた HTML で、サブサイトのロゴが絶対 URL であることに気付きました。現在のフォルダーまたはportal_skins/custom.

ロゴは、次の場所にある Sunburst テーマのプロパティで定義されます。 buildout_cache/plonetheme.sunburst-1.4.6-py2.7.egg/plonetheme/sunburst/skins/sunburst_styles/base_properties.props

logoName:string=logo.png

logoNameLogoViewletで定義されているように使用されますbuildout_cache/plone.app.layout-2.3.12-py2.7.egg/plone/app/layout/viewlets/common.py

何らかの理由で、カスタム ロゴは無視され、代わりにベース ロゴをレンダリングするサブサイトが表示されます。

大まかな解決策:編集buildout-cache/eggs/plone.app.layout-2.3.11-py2.7.egg/plone/app/layout/viewlets/logo.pt

変化する:

    <img src="logo.jpg" alt=""
    tal:replace="structure view/logo_tag" /></a>

に:

    <img src="logo.png" alt=""  /></a>

logo.pngこれはスキンのプロパティを無視し、サーバー上のすべての Plone サイトとサブサイトと同様にロゴをハードコーディングします。すべてが再び機能しています。

明らかに、問題の回避策がありますが、「適切な」修正とは何ですか?

4

1 に答える 1

1

適切な修正は、ユース ケースを処理する新しいロゴ ビューレットを登録することです。

  • Plone-root を使用している場合は、プロパティで定義されたロゴを使用する必要があります。
  • NavigationRoot のあるサイトの一部にいる場合は、ナビゲーション ルートのすぐ下にあるロゴを使用します。

しかし、開発を始める前に...

ftw.subsiteまさにあなたが望むことをするPloneパッケージとして。

  • サブサイトごとに新しいロゴをアップロードできます (フィールド オン コンテンツ)。
  • サブサイト (コンテンツのフィールド) ごとに新しい CSS を定義できます。
  • 別の言語でサブサイトを提供することもできます。
  • サブサイトも NavigationRoot です。
  • サブサイトには独自の ContactForm があります。
  • もっと...

説明、カスタム ロゴが無視された理由

view/logo_tagナビゲーション ルートではなく、plone ルートであるポータル ルートを取得します。次に、plone ルートを基準にして、base_properties (またはフォールバックとして「logo.png」) で構成されたロゴを取得しようとします。そのため、NavigationRoot を持つフォルダーに単に logon.png を追加することはできません。

リソースに相対パスを使用しない

リソースに相対パスを使用することは悪い考えであると考えられています。この方法では、ブラウザーはロゴをキャッシュできません。パスが異なるため、ブラウザは常に新しいものをロードする必要があります。

于 2014-10-07T06:18:50.973 に答える