【问题标题】:How do I load an External CSS Style Sheet UNDER an IF condition in CodeIgniter如何在 CodeIgniter 的 IF 条件下加载外部 CSS 样式表
【发布时间】:2020-10-07 07:48:38
【问题描述】:

这是我知道您可能需要的服务器版本:

  • CodeIgniter 版本:3.1.9
  • PHP 版本:7.3.6

一般来说,我是 php 和网页设计的新手。

对于 CodeIgniter 的 PHP 速记工具来说尤其如此。我的一位朋友由于她的“日常工作”而变得越来越难以联系,他是几年前为本网站编写代码的人。最近,我已经独立使用它一段时间了,我学到了很多东西。但是,我最近遇到了一个小问题,我想知道是否有人可以帮助我:

最初我所有的 CSS 文件都是外部样式表。在这些样式表中,所有这些样式表都在 100% 的时间内加载。因此,我开始思考:“我想知道是否可以在 特定 时间为 特定 页面在 CodeIgniter 中加载单独的样式表。产生这个想法的是我的” main.css" 包含我的大部分网站样式,但现在它已经变成了大约 585 行样式。如果我可以将其中的一些卸载到单独的样式表中以便于编辑,这将使事情变得更容易从更新的角度来看,这将使生活轻松多了。

对于所有听起来很简单的编码人员来说,对吧?好吧,我试图在特定时间加载特定样式的事实有一个小问题。为了更好地解释这一点,我应该注意该站点有两个区域。一是大家都可以看到的公开的一面。另一个是我所说的“管理端”,但实际上只有编辑控制台来添加页面、查看服务器代码版本等。这让我想到了我的问题的核心。如何在 CodeIgniter 的 PHP 框架中添加 在用户“登录”时适用的样式表?这是因为这些样式仅适用于该内容。我已经有一个系统可以加载“仅限管理员的项目”,例如她设置为“如果 $admin ....”的问答/注释导航栏。我不知道这是否有帮助,但这就是重点我希望这个“admin.css”文件加载。

所以,这就是我迷路的地方。我知道你们需要查看一些文件才能提供帮助,但我不知道哪些文件。

我知道您可能需要查看主“站点”控制器,所以这里是一个

网站.php

<?php
class Site extends MY_Controller{

 function __construct() {
  parent::__construct();
   $this->load->helper('url');
   $this->session->set_flashdata('uri', $this->uri->uri_string());
   $this->load->model('page_model');
 }

 function index(){
  $uri = $this->uri->rsegment(3);
  if(!isset($uri) or $uri == ''){
   $uri = 'home';
  }
  else if($uri == 'admin'){
   $this->require_login();
   $uri = 'admin/'.$this->uri->rsegment(4);
  }
  $page = $this->page_model->read($uri);
  if(!isset($page)){
   show_404('page');
   die;
  }
  $data = array(
     'title' => "Shirley's Recipes:".$page['title'],
        'id' => $uri,
   'columns' => array('toc', 'page'),
      'page' => $page,
   'updated' => $this->format_date($page['updated'])
  );
  $this->load->view('includes/template', $data);
 }

 function add(){
  $this->require_login();
  if($this->input->post('submit')){
   $id = $this->input->post('name');
   if($this->input->post('admin') == 'admin'){
    $id = 'admin/'.$id;
   }
   $data = array(
       'id' => $id,
    'title' => $this->input->post('title'),
     'page' => $this->input->post('page')
   );
   $this->page_model->create($data);
   redirect('site/'.$id);
  }
  else{
   $data = array(
      'title' => "Shirley's Recipes:Add New Page ",
    'columns' => array('toc', 'admin/page_edit'),
         'id' => '',
       'page' => array('title' => '', 'page' => ''),
       'edit' => False
   );
   $this->load->view('/includes/template', $data);
  }
 }

 function edit(){
  $this->require_login();
  $uri = $this->uri->rsegment(3);
  if(!isset($uri) or $uri == ''){
   echo 'URI must specify page to be edited: domain.com/site/edit/[pagename]';
   die;
  }
  else if($uri == 'admin'){
   $uri = $this->uri->rsegment(4);
   if(!isset($uri) or $uri == ''){
    echo 'URI must specify page to be edited: domain.com/site/add/admin/[pagename]';
    die;
   }
   else{
    $uri = 'admin/'.$uri;
   }
  }
  if($this->input->post('submit')){
   $data = array(
       'id' => $uri,
    'title' => $this->input->post('title'),
     'page' => $this->input->post('page')
   );
   $this->page_model->update($uri, $data);
   redirect('site/'.$uri);
  }
  else{
   $page = $this->page_model->read($uri);
   $data = array(
      'title' => "Shirley's Recipes:Edit Page : ".$uri,
    'columns' => array('toc', 'admin/page_edit'),
         'id' => $uri,
       'page' => $page,
       'edit' => True
   );
   $this->load->view('/includes/template', $data);
  }
 }

 function delete(){
  $this->require_login();
  $uri = $this->uri->rsegment(3);
  if(!isset($uri) or $uri == ''){
   echo 'URL must specify page to be deleted: domain.com/site/delete/[pagename]';
   die;
  }
  else if($uri == 'admin'){
   $uri = 'admin/'.$this->uri->rsegment(4);
  }
  $this->page_model->delete($uri);
  redirect('/');
  }
 }
// End - site.php
?>

css需要加载的模板页面:

模板.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
 <meta content="en-us" http-equiv="Content-Language" />
 <meta content="text/html; charset=windows-1252" http-equiv="Content-Type" />
 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=2.0, user-scalable=yes" />
 <title><?=$title ?></title>
 <link rel="shortcut icon" href="/assets/images/icons/favicon.ico">
 <link rel="stylesheet" type="text/css" href="/assets/css/main.css" media="screen" />
 <link rel="stylesheet" type="text/css" href="/assets/css/admin.css" media="screen" />
 <!-- <link rel="stylesheet" type="text/css" href="/assets/css/mobile.css" media="screen" /> -->
 <link rel="stylesheet" type="text/css" href="/assets/css/recipe.css" media="screen" /> 
 <link rel="stylesheet" type="text/css" href="/assets/css/calc.css" media="All" />  
 <link rel="stylesheet" type="text/css" href="/assets/css/pagination.css" media="screen" />
 <link rel="stylesheet" type="text/css" href="/assets/css/print.css" media="print" />
 <link rel="stylesheet" type="text/css" href="/assets/css/wmd.css" media="screen"/>
</head>
<body>
 <div id="main-wrapper">
  <div id="parent-container">
   <div id="logo" class="box">
    <a href="/"><img alt="Shirley's Recipes" src="/assets/images/logo/logoh1.png"></a>
   </div>
   <div id="searchform" class="box noprint">
    <?php
     echo form_open('recipe/search', array('class' => 'form'));
     echo form_input(array('name' =>'query','onfocus' => "this.value = '';", 'onblur' => "if(this.value == ''){this.value ='Recipe Search'}", 'value' => 'Recipe Search'));
     echo form_submit('submit', '', 'class="button"');
     echo form_close();
    ?>
   </div>    
   <nav id="topnav" class="box menu horizontal noprint">
    <ul>
     <li style="z-index: 4;"><a href="/">Home</a></li>
     <li style="z-index: 3;"><a href="/contact">Contact</a></li>
     <li style="z-index: 2;"><a href="/site/dedication">Dedication</a></li>
     <li style="z-index: 1;"><a href="/site/bookinfo">Recipe Book Info</a></li>
     <?php 
      if($admin){ 
       echo '<li class="adminbutton"><a href="/logout">Logout</a></li>';  
      }
      else{ 
       echo '<li class="adminbutton"><a href="/login">Admin Login</a></li>';  
      }
     ?>
    </ul>   
     <script>
      var navs = document.getElementById('topnav').getElementsByTagName('a');
       for (var i = 0; i < navs.length; i++) {
        if (navs[i].getAttribute("href") == window.location.pathname) {
         navs[i].className += " active_nav";
        }
       }
     </script>
    </nav>
    <?php 
     if($admin) {
      $this->load->view('admin/notesnav');
     }
    ?>
    <div id="columns">
     <?php 
      if($admin) {
       $start = array_slice($columns, 0, 1);
       $end = array_slice($columns, 1);
       $columns = array_merge($start, $end);
      }
      foreach($columns as $column){
       $this->load->view($column);
      }
     ?>
    </div>
    <div id="footer">
     &copy;copyright <a href=<?=site_url() ?>>Shirley's Recipes</a><br>
     <div id="codeversion" class="noprint">
      <?php 
       if($admin){
        echo '<a href="https://codeigniter.com/">CodeIgniter</a> Version: 3.1.9<br>';
        echo '<a href="http://www.php.net/">PHP</a> Version: 7.3.6<br>';
       }
      ?>
     </div>   
    </div>
   </div>
 </body>
</html>

我不确定您可能还需要看什么。所以,请回复,我会提供其他可能需要的东西。

提前谢谢大家!

乔什

【问题讨论】:

    标签: php css codeigniter


    【解决方案1】:

    在您的viewtemplate.php(此处)中,您只需在检查controller 时检查条件 -

    <?php 
        $uri = $this->uri->rsegment(3);
    
        if(!isset($uri) or $uri == ''){
    
            // All your common stylesheets and scripts 
            echo '<link rel="stylesheet" type="text/css" href="bla bla" />';   
            echo '<link rel="stylesheet" type="text/css" href="bla1 bla1" />';
    
       }else if($uri == 'admin'){ 
    
            // All your specific stylesheets and scripts for admin
            echo '<link rel="stylesheet" type="text/css" href="bla2 bla2" />';
            echo '<link rel="stylesheet" type="text/css" href="bla3 bla3" />';
    
        } 
    ?>
    

    此外,您正在使用 $admin 检查视图中的条件以显示登录和注销按钮,您可以这样做 -

    if($admin){
        // your specific files here
        echo '<link rel="stylesheet" type="text/css" href="bla4 bla4" />';
    }else{
        // common files here
        echo '<link rel="stylesheet" type="text/css" href="bla5 bla5" />';
    }
    

    看看这对你有没有帮助。

    【讨论】:

    • 谢谢!这比我正在研究的一些 url helper 和 baseurl 调用更有意义。如果可以的话,我有一个跟进吗?至于“else”语句,如果我不需要 PHP 做样式表之外的任何事情,那么 else 语句应该是什么?
    • 只需使用if statement 删除else 部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 2017-12-14
    • 2017-03-04
    • 2011-10-25
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多