Переключатель раскладки (не только CSS) - PullRequest
0 голосов
/ 11 июня 2011

Я искал все выше и ниже, но я не могу найти переключатель раскладки, который позволял бы мне не только переключать CSS, но и HTML-код, а также сохранял выбранные пользователем настройки в файле cookie.

Я хочу иметь возможность иметь несколько макетов и функций сайта и позволить пользователю выбирать, какой он / она предпочитает. Содержание, т. Е. Текст, будет одинаковым независимо от того, какой макет задает пользователь.

Кто-нибудь знает код на основе jquery, который позволяет это? Я предпочитаю jquery, но php тоже будет приемлемым.

1 Ответ

1 голос
/ 12 июня 2011

Храните контент в формате XML в любом формате. Что-то вроде следующего

page.xml

Должен быть проанализирован как PHP

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<?xml-stylesheet type="text/xsl" href="Layout-<?php echo $_COOKIE['layout'] ?>.xslt"?>
<page>
    <title> ... </title>
    <main-content> ... </main-content>
    <articles>
        <article>
            <title> ... </title>
            <content> ... </content>
        </article>
        <article> ... </article>
        <article> ... </article>
        <article> ... </article>
    </articles>
</page>

layout- [имя] .xslt

<?xml version="1.0"?>

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" encoding="utf-8" indent="yes" />
    <xsl:template match="/page">
        <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text>
        <html>
            <head>
                <xsl:value-of select="title" />
            </head>
            <body>
                ...
                <!-- copy node as HTML -->
                <xsl:copy-of select="main-content/node()" />
                ...
                <xsl:apply-templates match="articles/article" />
            </body>
        </html>
    </xsl:template>
    <xsl:template match="article">
        <div>
            <h2><xsl:copy-of select="title" /></h2>

            <!-- copy node as HTML -->
            <xsl:copy-of select="content/node()" />
        </div>
    </xsl:template>
</xsl:stylesheet>

Вы можете просто доставить XML-страницу клиенту, и их браузер выполнит преобразование!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...