Как преобразовать блок контента из плона, вставляемого в тему диазо

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

В моей теме 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 ответ

Решение

Итак, следующее работает. Причина, по которой он не работал раньше, заключалась в том, <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="..."> Диазо, так встроенный <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

Другие вопросы по тегам