コンポジットC1は、サイトとページのツリーをコンテンツパースペクティブで表示するときにページタイトルプロパティをノードラベルとして使用します。これは、特にページが異なる文化に翻訳されている場合は、常に快適なわけではないので、あなたはそれらのタイトルを読んでも、あなたが探しているページをすばやく見つけることはできません。 アイデアはUrlTitleをラベルとして使用することで、すべてのツリーノードがページURLの一部を表すようになります。 下記の解決策をご覧ください。複合C1:タイトル(解決策)の代わりにUrlTitleを表示するページツリーを作成する方法
答えて
私はアセンブリを再コンパイルしたくないので、私のハックは醜いですが、javascriptとaspxにのみ影響します。
編集/Composite/scripts/compressed/top.js。
そこ
SystemTreeNodeBinding.prototype.onBindingAttach=function(){
を見つけ、この関数の先頭に次のコードを挿入:それが表示される前にif(window.treeNodeProcessor)window.treeNodeProcessor(this.node);
は今、あなたは、ツリーのノードを変更することができます。グローバル関数
treeNodeProcessor
を作成するだけです。編集/Composite/top.aspx(top.aspx.csも影響を受けますので、一緒に保存してください)。
はあなたのJavaScriptを追加します。head
要素の終わりに<script type="text/javascript"> function byKey(key) { return function(p) { return p.Key == key; } } window.treeNodeTitles = { <% WriteTreeNodeTitles(); %> "": "" }; window.treeNodeProcessor = function(node) { if(node._data.PropertyBag) { var uri = node._data.PropertyBag.find(byKey('Uri')).Value; node._data.Label = window.treeNodeTitles[uri] || node._data.Label; } } </script>
は残念ながら、
treeNodeProcessor
に渡されたnode
オブジェクトにはUrlTitleありません。しかし、すべてのページnode
は、キーウリの下で〜/ページ(a9d30645-02f7-4412-bd4e-6f3a02782481)のような値を格納するPropertyBag
を持っています。したがって、UrlTitleを独自にクエリする必要があります。これは、メソッドWriteTreeNodeTitles(以下を参照)で行われます。編集/Composite/top.aspx.cs。だから、今、あなたのtop.aspxは、ページのマッピングのGUIDのような含まれてい
using System.Linq; using Composite.Data; using Composite.Data.Types;
:あなたはもちろん、いくつかのusingsを追加する必要が
protected void WriteTreeNodeTitles()
{
using (var conn = new DataConnection())
{
foreach(string line in conn.Get<IPage>().Select(p => " \"~/page(" + p.Id.ToString().ToLower() + ")\": \"" + p.UrlTitle + "\",\r\n"))
{
Response.Write(line);
}
}
}
:
新しいメソッドを追加します。 UrlTitlesへのURL、およびそのマッピングを使用してページツリーを変更するtreeNodeProcessor関数が含まれています。
確かに非常に醜い。製品の変更を真剣に検討している場合は、リポジトリをフォークし、文書化された方法で変更を維持する必要があります。これはアップグレード時に保存することができます。 –
それはちょうど(私の)時間の問題です。あなたが描いた方法は明らかに正しいものですが、私はそうではありません。私には15分かかりますが、あなたの時間は私が今は自分では余裕がありません。 – JustAndrei
- 1. 表示ビューでパッチの代わりにフォームにアクションを作成する方法
- 2. 解決策が必要このエラーを解決する方法?
- 3. DBでこの解決策を解決する方法
- 4. 「Object」の代わりにコンストラクタ名を表示する方法は?
- 5. フルデバイス名の代わりにネットワークアダプタ名を表示する方法
- 6. Eclipseクラスファイルの代わりにJavaファイルを表示する方法
- 7. このクエリを解決する方法グループの代わりに結合を使用する
- 8. 円グラフのタイトルの代わりに値を表示
- 9. ウェブサイトのタイトルの代わりに画像を表示
- 10. ページの代わりにナビゲーションバーでログインを作成する方法
- 11. www.domain.com/somethingの代わりにアドレスバーwww.domain.comに表示する方法
- 12. ユーザ名の代わりに表示名を表示する方法#
- 13. 良い解決策ですか?タブの表示/非表示
- 14. サーブレットでレジスタの成功を表示する代わりにダウンロード
- 15. は、複数のTCPClientsを作成する代わりに、1
- 16. 複雑なデータを表示する代わりに?
- 17. メガフォーマルを作成する代わりに
- 18. 矢印の代わりにタイトルを使用してスライダーを作成する方法
- 19. JTableの列タイトルが表示されず、代わりに 'A'、 'B'、
- 20. UITableViewCellのxibを作成する代わりにクラスを登録する方法
- 21. htmlを実行する代わりにページに表示する方法は?
- 22. 重複するキーを挿入するための解決策
- 23. 解決策構成を決定する(Visual Studio)
- 24. ダウンロードする代わりに私のサーバでPDFを作成する方法
- 25. クラスを使用する代わりにファクトリ関数を作成する方法
- 26. 解決するためにObservable.flatMapを作成する方法
- 27. 複数行のダイアログのタイトルを表示する方法は?
- 28. Apache2を修正する方法Ubuntu Gitlabの代わりにデフォルトページを表示
- 29. テキストの代わりにドロップダウンボックス内に画像を表示する方法
- 30. 各投稿に「user_id」の代わりに「user_first_name」を表示する方法
ページを翻訳するときには、URLもローカライズする必要があります。また、urlもその言語で人間が読めるようにする必要があります。 –
@PauliØsterø、私はあなたが話していることを知っていると思います。サイトのローカリゼーションでのあなたの経験は何ですか?どの言語をURLに翻訳しましたか? – JustAndrei
@PauliØsterø、フランス語、ドイツ語、イタリア語、スペイン語、トルコ語、ロシア語、アラビア語の経験があります。 ロシア語とアラビア語で人間が判読できるURLを作ることは難しいですが、そのabcsはラテン語に基づいていません。しかし、フランス語、ドイツ語、スペイン語のようなヨーロッパの言語でさえ、ASCIIには存在しない特定の文字があります:ç、ß、ñなど URLを読みやすくするにはどうすればよいですか? – JustAndrei