Как преобразовать блок контента из плона, вставляемого в тему диазо - PullRequest
3 голосов
/ 22 апреля 2011

Я использую диазо (в настоящее время plone.app.theming 1.0b1-r48205) с Plone 4.1.Я хочу использовать именно HTML-код Plone для виджета поиска, за исключением того, что я хочу заменить элемент <input>, используемый для кнопки поиска в виджете поиска, на <button>. diazo docs , кажется, предлагают вам сделать это.

В моем HTML-файле темы у меня есть пустой <div id="portal-searchbox"></div>.В моем rules.xml есть следующее:

<rules if-content="$enabled">
    <replace css:theme="div#portal-searchbox">
        <xsl:apply-templates css:select="div#portal-searchbox" />
    </replace>    
    <xsl:template css:match="div#portal-searchbox input.searchButton">
        <button type="submit"><img src="images/search.png" alt="Search" /></button>
    </xsl:template>
</rules>

Я пробовал множество вариантов этого, но безуспешно.Любая помощь приветствуется.

1 Ответ

6 голосов
/ 22 апреля 2011

Хорошо, так работает следующее.Причина, по которой он не работал раньше, заключалась в том, что <xsl:template> не было в теге правил корневого уровня (там есть ошибка документации).<xsl:template> должен быть в теге правил корневого уровня, поскольку в настоящее время нет способа применить условия правила к <xsl:template>.

<xsl:template css:match="div#portal-searchbox input.searchButton">
     <button type="submit"><img src="images/search.png" alt="Search" /></button>
</xsl:template>

<replace css:theme="div#portal-searchbox" css:content="div#portal-searchbox"/>

Обновление: Я добавил поддержкудля <replace content="..."> в Diazo, поэтому встроенные <xsl:template> считаются устаревшими.Вместо этого используйте:

<replace css:content="div#portal-searchbox input.searchButton">
    <button type="submit"><img src="images/search.png" alt="Search" /></button>
</replace>
<replace css:theme="div#portal-searchbox" css:content="div#portal-searchbox"/>

Документация по http://diazo.org/advanced.html#modifying-the-content-on-the-fly

...