2010-02-26 21 views
9

Estoy tratando de lograr lo siguiente. Necesito usar Drupal 6 como un requisito del proyecto, pero quiero usarlo con mis propias hojas de estilo HTML y CSS para cada nodo/vista/panel, etc.¿Cómo deshacerse de las hojas de estilos de Drupal CSS?

El problema es que, sea cual sea el tema, siempre encontré que Drupal aplica a mi contenido HTML tanto mis hojas de estilo CSS como el CSS relacionado con el tema elegido. También he intentado, sin éxito, usar el módulo de modulador de estilos (instalado en sites/all/modules). No importa lo que haga, hojas de estilos CSS adicionales se aplican a mis páginas, destruyendo por completo mi diseño.

¿Cuál es la forma correcta de lograrlo? ¿Por qué StyStripper no funciona en absoluto? ¿Hay un tema completamente en blanco disponible? He intentado basic, mothership, zen, etc., pero siempre veo hojas de estilo CSS adicionales aplicadas a mis páginas.

Esto me está volviendo loco, Drupal fue elegido por otra persona por su flexibilidad. Gracias de antemano.

Respuesta

6
<?php 
/** 
* Helper function to allow easy CSS excludes + includes 
*/ 
function _phptemplate_get_css($exclude = array(), $include = array()){ 
$css = drupal_add_css(); 
foreach ($css['all']['module'] as $k => $path) { 
    $file = substr($k, strrpos($k, '/') + 1); 
    if (in_array($file, $exclude)){ 
    unset($css['all']['module'][$k]); 
    } 
} 
foreach ($include as $file){ 
    $css['all']['theme'][path_to_theme() .'/'. $file] = true; 
} 
return drupal_get_css($css); 
?> 

Lea más en drupal.org.

Actualización:
El lugar adecuado para poner esta función, es decir en el archivo template.php de su tema. En realidad, en su caso necesita pasar una matriz de nombres de archivo css que desea excluir.
La llamada a drupal_add_css() sin argumentos pasados, proporcionará $css con una matriz de archivos CSS que se adjuntarán a su tema. ¡Así que este es el momento adecuado para entrar!

Como se ve, en el primer bucle foreach simplemente buscan la matriz $css para nombres de archivo que se existían en el $exclude matriz pasada, para su eliminación estilo. Y hacemos el mismo trabajo en el segundo ciclo para la inserción de estilo. Y al final de esto, devolvemos una representación temática de todos los estilos que deben adjuntarse al tema haciendo uso de la función drupal_get_css(). (tal vez nada en su caso)

Bueno, ¿a dónde llamar a esta función? Puede llamar a esta función auxiliar en _phptemplate_variables() para D5 o YOUR_THEME_preprocess() para D6. Como vemos esto en acción para D6 (no probado):

function YOUR_THEME_preprocess(&$vars, $hook){ 
    // Stylesheet filenames to be excluded. 
    $css_exclude_list = array(
     'lightbox.css', 
     'lightbox_lite.css', 
    ); 

    // Making use of previously defined helper function. 
    $vars['styles'] = _phptemplate_get_css($css_exclude_list); 
} 

Estoy seguro de que sabe cómo excluir a verlas;)

+0

Gracias, esto parece ser perfecto. ¿Puede agregar los detalles faltantes necesarios para utilizar realmente la función? ¿En qué archivo debo poner la función? ¿Cómo llamarlo para excluir todas las hojas de estilo CSS? –

+0

De nada, voy a 'actualizar la respuesta;) – sepehr

+0

¡Excelente! ¡Esto era exactamente lo que estaba buscando! ¡Gracias por compartir esto! –

0

yo no esto va a funcionar, pero creo que sólo eliminar la siguiente línea en page.tpl.php de su tema

<?php echo $styles ?> 

y luego Drupal no cualquiera de sus propios estilos ..
esto puede ser un trabajo para usted.


Nitz

1

Si define los archivos CSS y/o JavaScript en archivos .info de su tema utilizando nombres de archivos que coinciden con los archivos principales a continuación que los redefina, y si no existen las sustituciones entonces no estás incluido .

See the .info file for the Tao theme for an example

+0

¡Respuesta interesante! – sepehr

Cuestiones relacionadas