Solved

using different stylesheet for IE browser   in the smarty

Posted on 2009-05-06
9
1,069 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
 
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
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 
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

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

Suggested Solutions

Title # Comments Views Activity
Instering to MySQL table 5 22
modify h2 4 16
Why does my array not "dump?" 5 19
Printing a Google Form 2 9
Introduction A frequently asked question goes something like this:  "I am running a long process in the background and I want to alert my client when the process finishes.  How can I send a message to the browser?"  Unfortunately, the short answer …
Building a website can seem like a daunting task to the uninitiated but it really only requires knowledge of two basic languages: HTML and CSS.
In this tutorial viewers will learn how to position overlapping items using z-index in CSS. They will also learn the restrictions on the z-index property.  Create a new HTML document with an internal stylesheet.: Create a div in CSS and name it Red.…
The viewer will learn the benefit of using external CSS files and the relationship between class and ID selectors. Create your external css file by saving it as style.css then set up your style tags: (CODE) Reference the nav tag and set your prop…

762 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

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now