Jump to content

Changement de Theme ( Utilisateur )


Recommended Posts

deux thèmes ,

l'un 1000px de large , l'autre 800px ,

en fonction de la résolution écran du client ,

 

La détection de résolution n'est possible qu'avec le navigateur du client.

 

Une première solution serait un script JS de  détection de la résolution du navigateur client qui exécuterait finalement une sélection automatique de la bonne CSS.

 

Pas besoin donc d'un template différent par résolution mais simplement d'une feuille de style pour chacune d'entre elles.

 

Une autre solution serait l'utilisation de feuille de style adaptable à la résolution (utilisation de % pour les valeurs), mais en pratique c'est asses complexe...

Link to comment
Share on other sites

Bonjour et Bon Dimanche , tout le Monde ..

 

J'ai essayer de cette manière , mais ca ne fonctionne pas ici !

peut etre un conflit Ajax / .js ?

 

Nom de header.tpl et appel du fichier JS :

 

<link href="{$css_dir}style.css" rel="stylesheet" type="text/css" title="style1"/><!-- Nom de la Css 1 -->

<script type="text/javascript" src="{$base_dir}js/stylewitcher.js"></script><!-- JS changement Css  -->

<script type="text/javascript" src="{$js_dir}layer.js"></script>

<script type="text/javascript" src="{$base_dir}js/attributesFront.js"></script>

<link rel="alternate stylesheet" href="{$css_dir}style2.css" type="text/css" title="style2"><!-- Nom de la Css 2 -->

 

En suite , un lien classique vers la feuille css 2 :

 

<a href="#" onclick="setActiveStyleSheet('style2'); return false;">Activer la skin "NOM 2"</a>

 

Une erreur ou d autres solutions ?

le contenu de stylewitcher.js en dessous

 

Link to comment
Share on other sites

function setActiveStyleSheet(title) {

  var i, a, main;

  for(i=0; (a = document.getElementsByTagName("link")); i++) {

    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title")) {

      a.disabled = true;

      if(a.getAttribute("title") == title) a.disabled = false;

    }

  }

}

 

function getActiveStyleSheet() {

  var i, a;

  for(i=0; (a = document.getElementsByTagName("link")); i++) {

    if(a.getAttribute("rel").indexOf("style") != -1 && a.getAttribute("title") && !a.disabled) return a.getAttribute("title");

  }

  return null;

}

 

function getPreferredStyleSheet() {

  var i, a;

  for(i=0; (a = document.getElementsByTagName("link")); i++) {

    if(a.getAttribute("rel").indexOf("style") != -1

      && a.getAttribute("rel").indexOf("alt") == -1

      && a.getAttribute("title")

      ) return a.getAttribute("title");

  }

  return null;

}

 

function createCookie(name,value,days) {

  if (days) {

    var date = new Date();

    date.setTime(date.getTime()+(days*24*60*60*1000));

    var expires = "; expires="+date.toGMTString();

  }

  else expires = "";

  document.cookie = name+"="+value+expires+"; path=/";

}

 

function readCookie(name) {

  var nameEQ = name + "=";

  var ca = document.cookie.split(';');

  for(var i=0;i < ca.length;i++) {

    var c = ca;

    while (c.charAt(0)==' ') c = c.substring(1,c.length);

    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);

  }

  return null;

}

 

// hier eventueel cookiename veranderen in een andere naam voor het cookie.

window.onload = function(e) {

  var cookie = readCookie("cookiename");

  var title = cookie ? cookie : getPreferredStyleSheet();

  setActiveStyleSheet(title);

}

 

window.onunload = function(e) {

  var title = getActiveStyleSheet();

  createCookie("cookiename", title, 365);

}

 

var cookie = readCookie("cookiename");

var title = cookie ? cookie : getPreferredStyleSheet();

setActiveStyleSheet(title);

Link to comment
Share on other sites

Bonjour Mr Lucas !

 

J e vais refaire un essai lundi ,

 

j'ai aussi installé le sript Mootools ,

dans le haut de la page Header ,

il y a conflit , page blanche ....

 

les scripts eux meme fonctionne .

il y a un conlit de Nom ou , je sais pas !

 

Sous Xoops c'est pareil ,

depuis un theme , si on appel un script ajax et qu il ne fonctionne pas ,

il faut l'appeler avant ou apres un autre !

 

c'est un peut du hazard ....

 

J'ai vu que ,

pour changer un module de colonne ,

on change le nom ('rightColumn') dans son fichier php ?

 

ce serait bien de le faire dans l'admin !

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...