Solved

using different stylesheet for IE browser   in the smarty

Posted on 2009-05-06
9
1,093 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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

On Demand Webinar - Networking for the Cloud Era

This webinar discusses:
-Common barriers companies experience when moving to the cloud
-How SD-WAN changes the way we look at networks
-Best practices customers should employ moving forward with cloud migration
-What happens behind the scenes of SteelConnect’s one-click button

Question has a verified solution.

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

CSS is a visual language used to classify objects and define rules about how they should be displayed. CSS skills aren’t restricted to developers anymore, there is a big benefit to having a basic understanding of the language, regardless of your occ…
This article discusses four methods for overlaying images in a container on a web page
In this tutorial viewers will learn how to style elements, such a divs, with a "drop shadow" effect using the CSS box-shadow property Start with a normal styled element, such as a div.: In the element's style, type the box shadow property: "box-shad…
In this tutorial viewers will learn how to style a decorative dropcap for the first letter in a paragraph using CSS. In CSS, create a new paragraph class by typing "p.fancy": Then, to style only the first letter of the first sentence, include the ps…

752 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