4 Replies Latest reply on Sep 1, 2007 8:24 AM by Christian Pietsch

    Themes question

    Eleas Newbie

      Good day,

      How can I realise such functionality:

      I have 2 themes on my site:
      1) Default - with images, CSS etc.
      2) Printable - plain text - suitable for printing

      I want: for human show Default theme, but for crawles (Google, Yahoo etc.) show by default Printable version. How can I do that? May be some filter?

        • 1. Re: Themes question
          Christian Pietsch Newbie

          Basically I have a similar requirement. Not on request.agent but on request.servername.

          How can I automagically make the shown skin dependent on facesContext.externalContext.request.serverName without any user interaction?

          I'm currently developing a multi-user, multi-domain site with seam - seam is unbelievable. Thanks guys for this great piece of software!

          - Chris

          • 2. Re: Themes question
            Christian Pietsch Newbie

            nobody out here who has an idea?

            - Christian

            • 3. Re: Themes question
              Alex Ka Novice

              I guess you could install a custom filter using @Filter:

              Detect the spider. (Chris has given some clues on how to do that)

              Change the theme accordingly, using the themeSelector component. Example:

              ThemeSelector themeSelector;


              • 4. Re: Themes question
                Christian Pietsch Newbie

                I installed a custom filter (@Filter(within = "org.jboss.seam.web.contextFilter")) and the filter is called as expected.

                I can also get and access the ThemeSelector via
                Context ctx = new SessionContext(new ServletRequestSessionMap(sreq));
                ThemeSelector ts = (ThemeSelector) ctx.get(ThemeSelector.class);

                Problem is that I get a NPE when setting a theme. selectTheme throws

                 at org.jboss.seam.theme.ThemeSelector.select(ThemeSelector.java:87)

                The annotations in my custom filter class are:
                @Filter(within = "org.jboss.seam.web.contextFilter")

                Is this ok?

                - Chris