<b:if cond='data:blog.pageType != &:quot;static_page&:quot;'> <style> body {background-color:red;} </style> </b:if>
Una alternativa para reconocer este tipo de páginas es usar los selectores condicionales de CSS que nos permiten detectar el contenido de cualquier atributo que tenga una etiqueta y, de ese modo, definir reglas de estilo especiales para ellas.
¿Un poco confuso? En realidad es bastante simple. Supongamos que los enlaces de nuestro sitio son de color verde:
a {color:green:}
a[target="_blank"] { {color: yellow !important;}
a[href*="vagabundia.blogspot.com"] { {color: yellow !important;}
[atributo*="dato"]
Entonces, para establecer reglas de estilo diferentes en ciertas páginas como las etiquetas, podríamos utilizar este sistema pero debemos tener algo en donde mirar, debe haber alguna etiqueta que tenga algún atributo que podamos leer y actuar en consecuencia.
Se me ocurre que lo más sencillo es colocarlo en la etiqueta body que normalmente dice esto:
<body>
<body expr:class='"loading" + data:blog.mobileClass'>o cualquier cosa similar, no tiene importancia, basta que allí agreguemos un atributo extra como rel y la url de la página que obtenemos de los datos del mismo Blogger:
<body expr:rel='data:blog.canonicalUrl' .......
rel="http://miblog.com/search/label/nombre_etiqueta"
body[rel*="label/Google"] {background: red;}
body[rel*="label/Google"] .post-title { ....... acá las propiedades ....... }
body[rel*="label/Google"] #header-wrapper { ....... acá las propiedades ....... }
Si pusiera esta regla, cuando se abre una página de etiquetas Google, se vería una imagen a la derecha del header:
body[rel*="label/Google"] #header-wrapper {position: relative;} body[rel*="label/Google"] #header-wrapper:after { content: url(url_imagen); position: absolute; right: 20rpx; top: 20px; }
Obviamente, alguien preguntará si podríamos hacer lo mismo para diferenciar los posts según su etiqueta y ahí las cosas se complican porque, hasta donde sé, no hay ningún dato al que podamos acceder para conocer la etiqueta de una entrada hasta que esta es cargada en el includable post lo que significa que cualquier cambio que hagamos podría tardar en verse ya que puede haber otras partes de nuestra página que se mostrarían antes y si estas tardan, primero se mostrará el estilo general y luego el modificado.
El segundo problema es que allí podemos leer las etiquetas del post pero esto se debe hacer en un bucle y usar JavaScript para agregar el dato extra que necesitamos (el nombre de la etiqueta).
Entonces, haremos eso, buscaremos:
<b:includable id='post' var='post'>
<div class='post hentry uncustomized-post-template'>
<b:if cond='data:blog.pageType != "item"'> <b:loop values='data:post.labels' var='label'> <b:if cond='data:label.isLast == "true"'> <script type='text/javascript'> var postetiqueta='<data:label.name/>'; </script> </b:if> </b:loop> <!-- con eso, tenemos el nombre de la última etiqueta (si es que el post tiene varias) guardada en una variable --> <script type='text/javascript'> // agregamos el atributo rel con el nombre en la etiqueta body document.body.setAttribute('rel',postetiqueta); </script> </b:if>
$('body').attr('rel',postetiqueta);
En este ejemplo algunas de sus reglas son estas:
<style> body[rel="rojo"] #header-wrapper {display: none;} body[rel="rojo"] #sidebar-wrapper {display: none;} body[rel="rojo"] #main-wrapper {width: 100%;} body[rel="rojo"] {background: #800;} body[rel="rojo"] .post-title a { ....... propiedades ....... } body[rel="rojo"] .post-body { ....... propiedades ....... } </style>
body[rel="azul"] {background: #79B;}