Solved

using different stylesheet for IE browser   in the smarty

Posted on 2009-05-06
9
1,109 Views
Last Modified: 2013-11-10
i have a style sheet which uses the following code for css
<link href="{$smarty.const._URL}/templates/{$template_dir}/style.css" rel="stylesheet" type="text/css" />

i want to create seperate style sheet for IE
<!--[if  IE 6]>
<link rel="stylesheet" type="text/css" href=Iestyle.css">
<![endif]-->
it doesnt i dont know how i can do this in smarty
0
Comment
Question by:mattibutt
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
  • 2
9 Comments
 
LVL 14

Expert Comment

by:EMB01
ID: 24319599
You may want to consider this, a free plugin for the SmartyPHP templating engine that aims to provide multibrowser CSS-support. Ergo, with it you should be able to integrate multiple stylesheets:
http://phpinsider.com/smarty-forum/viewtopic.php?t=13635
0
 
LVL 42

Expert Comment

by:David S.
ID: 24321961
Conditional comments are far superior to user-agent-string sniffing.

Can't you just do this?
<link href="{$smarty.const._URL}/templates/{$template_dir}/style.css" rel="stylesheet" type="text/css" />
<!--[if  IE 6]>
<link rel="stylesheet" type="text/css" href="{$smarty.const._URL}/templates/{$template_dir}/Iestyle.css" />
<![endif]-->

Open in new window

0
 
LVL 11

Author Comment

by:mattibutt
ID: 24323549
hi guys
thanks for your reply, EMB01i see the plugin question is how do i configure it.
Kravimir i have tried that but thing is i dont have IE 6 if i want to use the same statement for IE7 how do i use it?
0
Don't Cry: How Liquid Web is Ensuring Security

WannaCry is just the start. Read how Liquid Web is protecting itself and its customers against new threats.

 
LVL 42

Expert Comment

by:David S.
ID: 24323660
If you want to use it for IE7 and older versions, then you can do this:
<link href="{$smarty.const._URL}/templates/{$template_dir}/style.css" rel="stylesheet" type="text/css" />
<!--[if lte IE 7]>
<link rel="stylesheet" type="text/css" href="{$smarty.const._URL}/templates/{$template_dir}/Iestyle.css" />
<![endif]-->

Open in new window

0
 
LVL 11

Author Comment

by:mattibutt
ID: 24323715
its not making a different
0
 
LVL 11

Author Comment

by:mattibutt
ID: 24323716
i dont think its picking the stylesheet
0
 
LVL 14

Accepted Solution

by:
EMB01 earned 300 total points
ID: 24328267
The instructions for the plugin are at the address posted above. All you do is create the file with the attached code and include it into your PHP page. Then, in your PHP page, just replace your HTML body tag with this:
<body class="{insert name="browser_body_style"}">

Good luck!
<?php 
/** 
 * Smarty plugin 
 * @package Smarty 
 * @subpackage ewtplugins 
 */ 
 
/* 
 * Smarty {browser_body_style} insert plugin 
 * 
 * File:     insert.browser_body_style.php<br> 
 * Type:     insert 
 * Name:     browser_body_style 
 * Date:    July 16, 2008 
 * Purpose:  generate browser/os-specific class names for the body tag to facilitate browser-specific CSS 
 * @author   Jason Habbley <jason at edgeworkstech dot com> 
 * @version  0.2 
 */ 
 
 
function smarty_insert_browser_body_style($params, &$smarty) 
{ 
 
    $browser = array ("IE","OPERA","MOZILLA","NETSCAPE","FIREFOX","SAFARI"); 
    $os = array ("WIN","MAC"); 
    $info['browser'] = "OTHER"; 
    $info['os'] = "OTHER"; 
  
    foreach ($browser as $parent) 
        { 
        $s = strpos(strtoupper($_SERVER['HTTP_USER_AGENT']), $parent); 
        $f = $s + strlen($parent); 
        $version = substr($_SERVER['HTTP_USER_AGENT'], $f, 5); 
        $version = preg_replace('/[^0-9,.]/','',$version); 
        if ($s) 
            { 
            $info['browser'] = $parent; 
            $info['version'] = $version; 
            } 
        } 
  
    foreach ($os as $val) 
    { 
        if (eregi($val,strtoupper($_SERVER['HTTP_USER_AGENT']))) $info['os'] = $val; 
    } 
    
   $output = array(); 
   //os_browser_version 
   $output[] = join("_", array($info['os'], $info['browser'], (int)$info['version'])); 
   //os_browser 
   $output[] = join("_", array($info['os'], $info['browser'])); 
   //browser_version 
   $output[] = join("_", array($info['browser'], (int)$info['version'])); 
   //os 
   $output[] = $info['os']; 
   //browser 
   $output[] = $info['browser']; 
 
   return strtolower(join(" ", $output)); 
} 
?>

Open in new window

0
 
LVL 42

Assisted Solution

by:David S.
David S. earned 200 total points
ID: 24329911
> i dont think its picking the stylesheet

Perhaps I should mention that IE7 will use both stylesheets. The second one will override the first one where there are conflicts though.

Do you have a live page that we could look at?
0
 
LVL 11

Author Closing Comment

by:mattibutt
ID: 31578380
i still havent tried your smarty code but i am hopeful they will work
0

Featured Post

Secure Your WordPress Site: 5 Essential Approaches

WordPress is the web's most popular CMS, but its dominance also makes it a target for attackers. Our eBook will show you how to:

Prevent costly exploits of core and plugin vulnerabilities
Repel automated attacks
Lock down your dashboard, secure your code, and protect your users

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Build an array called $myWeek which will hold the array elements Today, Yesterday and then builds up the rest of the week by the name of the day going back 1 week.   (CODE) (CODE) Then you just need to pass your date to the function. If i…
Password hashing is better than message digests or encryption, and you should be using it instead of message digests or encryption.  Find out why and how in this article, which supplements the original article on PHP Client Registration, Login, Logo…
In this tutorial viewers will learn how to style transparent/translucent elements using alpha transparency in CSS Start with a normal styled element, such as a div.: Define its "background-color" property as "rgba (255, 255, 255, .5): The numbers in…
In this tutorial viewers will learn how to customize the background color and font color of highlighted text using the ::selection element in CSS Begin by defining the selected text as an element in CSS by typing "::selection": Style the ::selection…

630 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question