提问者:小点点

如何在CodeIgniter中IF条件下加载外部CSS样式表


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

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

我是php和网页设计的新手。

当涉及到CodeIgniter的PHP速记工具时尤其如此。 我的一个朋友由于“白天的工作”而变得越来越难联系,她是几年前为这个网站编写代码的人。 最近,我一直在我自己与它有一段时间了,现在我学到了很多。 但是,我最近遇到了一个小问题,不知道有没有人能帮我:

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

对所有的程序员来说,这听起来很简单,对吧? 嗯,有一个轻微的捕捉事实,我试图加载在特定的文体在特定的时间。 为了更好地解释这一点,我应该注意到该站点有两个区域。 一个是大家都看得见的公共的一面。 另一个是我所说的“管理端”,但真正有的只是编辑控制台来添加页面,查看服务器代码版本等,这就把我带到了问题的核心。 如何在CodeIgniter的PHP框架中添加样式表,该样式表仅在用户“登录”时才适用? 这是因为这些样式只适用于那个内容。 我已经有一个系统加载“只管理项目”,像Q&a/Notes导航栏,她设置为“如果$admin.。。。”。 我不知道这是否有帮助,但这就是我希望加载这个“admin.css”文件的地方。

这就是我迷路的地方。 我知道你们需要看一些文件来帮忙,但我不知道是哪些。

我知道你可能需要看到主“站点”控制器,所以这里有一个

site.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需要加载的模板页面:

template.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>

我不知道你还需要看什么。 所以,请回复,我会提供任何其他可能需要的。

提前感谢大家!

乔希


共1个答案

匿名用户

视图ietemplate.php(此处)中,您只需在签入控制器时检查条件-

<?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" />';
}

看看这对你有没有帮助。