Plone portal-personaltools メニューのマークアップを置き換えようとしていますが、いくつかの問題に遭遇しています。最初の問題は、XSL 変換が実行されているかどうかわからないことです。タグ内に配置しています。私の rules.xml ファイルは次のとおりです。
<?xml version="1.0" encoding="UTF-8"?>
<rules xmlns="http://namespaces.plone.org/diazo"
xmlns:css="http://namespaces.plone.org/diazo/css"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<rules css:if-content="#visual-portal-wrapper">
<theme href="theme.html" />
<!-- Head elements -->
<replace css:theme="html head title" css:content="html head title" />
<after css:theme-children="html head" css:content="html head base" />
<after css:theme-children="html head" css:content="html head script" />
<!-- Logo -->
<copy attributes="href" css:theme="#brand" css:content="#portal-logo" />
<!-- Tabs -->
<replace css:theme-children="#tabs" css:content-children="#portal-globalnav" />
<!-- Personal tools -->
<replace css:theme="#account-info" css:content="#portal-personaltools" />
<!-- This is not a complete XSL transfomation code. I was trying to follow someone elses code. -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/*">
<ul class="list-inline navbar-btn navbar-right" id="account-info">
<xsl:apply-templates select="dt"/>
</ul>
</xsl:template>
<xsl:template match="dt">
<li>
<xsl:apply-templates select="following-sibling::dd[1]"/>
</li>
</xsl:template>
</xsl:stylesheet>
<!-- Search -->
<copy attributes="action" css:theme="#searchbox" css:content="#portal-searchbox form" />
<copy attributes="name" css:theme="#searchbox .search-query" css:content="#portal-searchbox form .searchField" />
<!-- Edit bar -->
<before css:theme-children="#content" css:content="#edit-bar" />
<!-- Main columns -->
<replace css:content-children="#content" css:theme-children="#content" />
<replace css:content-children="#portal-column-one" css:theme-children="#left-column" />
<replace css:content-children="#portal-column-two" css:theme-children="#right-column" />
<!-- Footer -->
<replace css:theme-children="#footer" css:content-children="#portal-footer" />
<after css:theme-children="#footer" css:content="#portal-siteactions" />
</rules>
</rules>
正解です?XSL 変換が実行されているかどうかさえわからないため、私の XSL 変換は完了していませんが、変換しようとしているコードは次のとおりです。
<dl id="portal-personaltools" class="actionMenu deactivated">
<dt class="actionMenuHeader">
<a href="#/useractions" id="user-name">admin</a>
</dt>
<dd class="actionMenuContent">
<ul><li id="personaltools-dashboard">
<a href="#/dashboard">Dashboard</a>
</li>
<li id="personaltools-preferences">
<a href="#/@@personal-preferences">Preferences</a>
</li>
<li id="personaltools-plone_setup">
<a href="#/@@overview-controlpanel">Site Setup</a>
</li>
<li id="personaltools-logout">
<a href="#/logout">Log out</a>
</li>
</ul>
</dd>
</dl>
これに:
<ul class="list-inline navbar-btn navbar-right" id="account-info">
<li><a class="btn btn-primary" href="login.html">Sign In</a></li>
<li class="btn btn-primary dropdown">
<a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">Account<b class="caret"></b></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
<li role="presentation"><a role="menuitem" tabindex="-1" href="dashboard.html">Dashboard</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="preferences.html">Preferences</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="site.html">Site Setup</a></li>
<li class="divider" role="presentation"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="index.html">Log Off</a></li>
</ul>
</li>
</ul>
アップデート:
Plone がサインイン ボタンとユーザー アクション メニューをどのように表示するかについて、2 つ目の質問があります。ユーザーがログインしていないときにサインイン ボタンを表示し、ユーザーがログインしている間はユーザー アクション メニューのみを表示するようにルールを変更するにはどうすればよいですか? 私が修正した rules.xml は、この投稿の最後にある、追加のメモ/情報の後にあります。
Dan の修正に基づくスクリーンショット
ダンによって提供されたソリューションにいくつかのわずかな変更を加えた後、ユーザーがログインしている間にユーザー アクション メニューを示すドロップダウンと共にユーザー名を表示するユーザー アクション メニューを用意しました。ユーザーがログオフしている間、私が今持っているのはサインイン ボタンのない空の Twitter Bootstrap ボタン。
ログアウトしたスクリーンショット
ログイン中のスクリーンショット
ユーザーがログに記録されていない場合、HTML マークアップを次のように表示したいと考えています。
<ul id="account-info" class="list-inline navbar-btn navbar-right">
<li>
<a href="login.html" class="btn btn-primary">Sign In</a>
</li>
</ul>
しかし、私の HTML マークアップは現在、ユーザーがログインしていないときに表示されます。
<ul id="account-info" class="list-inline navbar-btn navbar-right">
<li></li>
<li class="btn btn-primary dropdown">
<ul aria-labelledby="drop1" role="menu" class="dropdown-menu"></ul>
</li>
</ul>
最後に、変更した rules.xml
<replace css:content="#portal-personaltools">
<ul class="list-inline navbar-btn navbar-right" id="account-info">
<li>
<!--Sign out Form-->
<!--<li><a href="#" class="btn btn-primary">Sign In</a></li>-->
</li>
<li class="btn btn-primary dropdown">
<xsl:apply-templates select="./dt/a" />
<!--<a id="drop1" href="#" role="button" class="dropdown-toggle" data-toggle="dropdown">Account<b class="caret"></b></a>-->
<ul class="dropdown-menu" role="menu" aria-labelledby="drop1">
<xsl:apply-templates select="./dd/ul/li" />
</ul>
</li>
</ul>
</replace>
<replace css:content="#portal-personaltools dt a">
<a>
<!--<xsl:attribute name="class">btn btn-primary</xsl:attribute>-->
<xsl:attribute name="role">button</xsl:attribute>
<xsl:attribute name="class">dropdown-toggle</xsl:attribute>
<xsl:attribute name="data-toggle">dropdown</xsl:attribute>
<xsl:copy-of select="@*|node()" />
<b class="caret"></b>
</a>
</replace>
<replace css:content="#portal-personaltools dd li">
<li role="presentation">
<xsl:apply-templates select="./a" />
</li>
</replace>
<replace css:content="#portal-personaltools dd li a">
<a role="menuitem" tabindex="-1">
<xsl:attribute name="href">
<xsl:value-of select="@href" />
</xsl:attribute>
<xsl:value-of select="node()" />
</a>
</replace>
前もって感謝します!