Solved

using different stylesheet for IE browser   in the smarty

Posted on 2009-05-06
9
1,081 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
  • 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
Optimizing Cloud Backup for Low Bandwidth

With cloud storage prices going down a growing number of SMBs start to use it for backup storage. Unfortunately, business data volume rarely fits the average Internet speed. This article provides an overview of main Internet speed challenges and reveals backup best practices.

 
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

NAS Cloud Backup Strategies

This article explains backup scenarios when using network storage. We review the so-called “3-2-1 strategy” and summarize the methods you can use to send NAS data to the cloud

Question has a verified solution.

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

Suggested Solutions

So you have coded your own WordPress plugin and now you want to allow users to upload images to a folder in the plugin folder rather than the default media location? Follow along and this article will show you how to do just that!
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
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…
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

803 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