CI 묻고 답하기

제목 흠..헤더 질문입니다.
카테고리 CI 2, 3
글쓴이 소연신 작성시각 2017/05/30 14:04:32
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 14745   RSS

뭔가 질문이 다시 옛날로 돌아간 느낌이네요 ㅎㅎ

 

일단.. 지금 헤더 분(body윗부분)을 클래스로 만들어서 주소별로 js랑 css 로드하고 있습니다. MY_Controller에 remap정의해서 공통헤더로요. 근데... 이렇게 하지말고 개별헤더로 사용하라고 하더라구요. 

뭐, 불필요한 js가 로드될수도 있고, 조건을 계속 줘야되고, 뎁쓰가 무너지고..뭐 여러 이유였습니다.

 

<?php defined('BASEPATH') OR exit('No direct script access allowed');

class Header
{
    function __construct()
    {
        $CI =& get_instance();

        $this->segment1 = $CI->uri->segment(1);
        $this->segment2 = $CI->uri->segment(2);
        $this->segment3 = $CI->uri->segment(3);
    }

    function load_Css()
    {
        return $this->loadCss();
    }

    function load_Js()
    {
        return $this->loadJs();
    }

    function load_HeadTag()
    {
        return $this->headTag();
    }

    function load_Header()
    {
        return $this->header();
    }


    protected function header()
    {
        $result = '';

        $result = $result.'<!doctype html>'."\n";
        $result = $result.'<html lang="en">'."\n";
        $result = $result.'    <head>'."\n";
        $result = $result.'        <meta charset="UTF-8">'."\n";
        $result = $result.'        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />'."\n";
        $result = $result.'        <title>pickdol</title>'."\n";

        return $result;
    }

    protected function headTag()
    {
        $result = '';
        if ($this->segment1 != 'Admin' && $this->segment2 != 'Ajax_admin' && $this->segment2 != 'Ajax_admin_bean' && $this->segment2 != 'Ajax_admin_bet'
            && $this->segment2 != 'Ajax_admin_coin' && $this->segment2 != 'Ajax_admin_ip' && $this->segment2 != 'Ajax_admin_item' && $this->segment2 != 'Ajax_admin_level'
            && $this->segment2 != 'Ajax_admin_memo' && $this->segment2 != 'Ajax_admin_point' && $this->segment2 != 'Ajax_admin_stats' && $this->segment2 != 'Ajax_admin_accesslog'
            && $this->segment3 != 'get_game_result' && $this->segment3 != 'get_game_rate' ) {
            // 접속 ip
            set_access_ip_write();
        }

        $result = $result.'        <link href="/static/images/.ico" type="image/x-icon" rel="shortcut icon" />'."\n";
        $result = $result.'        <link href="/static/css/alertify.css" rel="stylesheet" />'."\n";

        if ($this->segment1 != 'Admin') {
            $result = $result.'        <link href="/static/css/layout.css" rel="stylesheet" />'."\n";
        }

        if ($this->segment1 == 'Main' || $this->segment1 == '') {
            $result = $result.'        <meta name="naver-site-verification" />'."\n";
            $result = $result.'        <meta name="Keywords" >'."\n";
            $result = $result.'        <meta name="description" >'."\n";
            $result = $result.'        <meta property="og:type" content="website">'."\n";
            $result = $result.'        <meta property="og:image">'."\n";
            $result = $result.'        <meta property="og:title" content="">'."\n";
            $result = $result.'        <meta property="og:keywords" >'."\n";
            $result = $result.'        <meta property="og:description" ">'."\n";
        }

        $result = $result.'        <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.js"></script>'."\n";
        $result = $result.'        <script src="//cdnjs.cloudflare.com/ajax/libs/jqueryui/1.11.1/jquery-ui.min.js"></script>'."\n";
        $result = $result.'        <script src="//cdn.jsdelivr.net/alertifyjs/1.9.0/alertify.min.js"></script>'."\n";
        $result = $result.'        <script src="/static/js/common.js"></script>'."\n";

        return $result;
    }

    protected function loadCss()
    {
        $result = '';

        switch ($this->segment1) {

            case 'Main':
            case '':
                $result = '        <link href="/static/css/main.css" rel="stylesheet" />';
                break;

            case 'User':
                $result = '        <link href="/static/css/user.css" rel="stylesheet" />';
                break;

            case 'Chatting':
                $result = '        <link href="/static/css/chat.css" rel="stylesheet" />';
                break;

            case 'Board':
                $result = '        <link href="/static/css/board.css" rel="stylesheet" />';
                break;

            case 'Mypage':
                $result = '        <link href="/static/css/mypage.css?v=201705" rel="stylesheet" />';
                break;

            case 'Market':
                $result = '        <link href="/static/css/market.css" rel="stylesheet" />';
                break;

            case 'Game':
                $result = '        <link href="/static/css/game_data.css" rel="stylesheet" />';
                break;

            case 'Memo':
                $result = '        <link href="/static/css/memo.css" rel="stylesheet" />';
                break;

            case 'Admin':
                $result = '        <link href="/static/css/admin.css" rel="stylesheet" />';
                break;

            case 'Rank':
                $result = '        <link href="/static/css/rank.css" rel="stylesheet" />';
                break;

            case 'Livegame':
                $result = '        <link href="/static/css/live_game.css" rel="stylesheet" />';
                break;

            default:
                # code...
                break;
        }

        return $result;
    }

    protected function loadJs()
    {
        $result = '';

        switch ($this->segment1) {

            case 'Main':
            case '':
            case 'User':
                $result = '        <script src="/static/js/user.js"></script>'."\n";
                break;

            case 'Board':
                $result = '        <script src="/static/js/board.js"></script>'."\n";
                $result = $result.'        <script src="/static/js/board_draw.js"></script>'."\n";
                $result = $result.'        <script src="/static/js/paging.js"></script>'."\n";
                break;

            case 'Mypage':
                $result = '        <script src="/static/js/mypage.js?v=201705"></script>'."\n";
                $result = $result.'        <script src="/static/js/paging.js"></script>'."\n";
                break;

            case 'Market':
                $result = '        <script src="/static/js/market.js?v=201705"></script>'."\n";
                break;

            case 'Game':
                if ($this->segment3) {
                    $result = '        <script src="/static/js/stats_'.$this->segment3.'.js"></script>'."\n";
                }
                break;

            case 'Memo':
                $result = '        <script src="/static/js/memo.js?v=201705"></script>'."\n";
                $result = $result.'        <script src="/static/js/paging.js"></script>'."\n";
                break;

            case 'Admin':
                if ($this->segment3 == 'members_whole' || $this->segment3 == 'members_block' || $this->segment3 == 'members_withdrawal') {
                    //$result = '<script src="/static/js/admin_point.js"></script>';
                } else if ($this->segment3 == 'coinpayment_list' || $this->segment3 == 'coin_list' || $this->segment3 == 'coin_pay' || $this->segment3 == 'account_info') {
                    $result = '        <script src="/static/js/admin_coin.js"></script>'."\n";
                } else if ($this->segment3 == 'rc_list' || $this->segment3 == 'rc_exchange' || $this->segment3 == 'rc_pay' || $this->segment3 == 'rc_set') {
                    $result = '        <script src="/static/js/admin_bean.js"></script>'."\n";
                } else if ($this->segment3 == 'point_list' || $this->segment3 == 'point_pay' || $this->segment3 == 'point_set') {
                    $result = '        <script src="/static/js/admin_point.js"></script>'."\n";
                } else if ($this->segment3 == 'item_list' || $this->segment3 == 'item_pay' || $this->segment3 == 'itembuy_list') {
                    $result = '        <script src="/static/js/admin_item.js"></script>'."\n";
                } else if ($this->segment3 == 'class_view' || $this->segment3 == 'class_point_list' || $this->segment3 == 'class_point_pay'  || $this->segment3 == 'class_point_set') {
                    $result = '        <script src="/static/js/admin_level.js"></script>'."\n";
                } else if ($this->segment3 == 'message_list' || $this->segment3 == 'message_confirm' || $this->segment3 == 'message_write') {
                    $result = '        <script src="/static/js/admin_memo.js"></script>'."\n";
                } else if ($this->segment3 == 'ip_access' || $this->segment3 == 'ip_block') {
                    $result = '        <script src="/static/js/admin_ip.js"></script>'."\n";
                } else if ($this->segment3 == 'best' || $this->segment3 == 'free' || $this->segment3 == 'tip' || $this->segment3 == 'humor' || $this->segment3 == 'photo' || $this->segment3 == 'sports' || $this->segment3 == 'entry' ||
                            $this->segment3 == 'reply' || $this->segment3 == 'accuse' || $this->segment3 == 'notice' || $this->segment3 == 'qna' || $this->segment2 == 'boardView') {
                    $result = '        <script src="/static/js/admin_board.js?v='.time().'"></script>'."\n";
                    $result = $result.'        <script src="/static/js/admin_board_draw.js"></script>'."\n";
                } else if ($this->segment3 == 'site_popup') {
                    $result = '        <script src="/static/js/popup.js"></script>'."\n";
                } else if ($this->segment3 == 'site_imagebanner') {
                    $result = '        <script src="/static/js/banner.js"></script>'."\n";
                } else if ($this->segment3 == 'stats') {
                    $result = '        <script src="/static/js/admin_stat.js"></script>'."\n";
                } else if ($this->segment3 == 'bet_betting' || $this->segment3 == 'bet_rank') {
                    $result = '        <script src="/static/js/admin_bet.js"></script>'."\n";
                }

                $result = $result.'        <script src="/static/js/paging.js"></script>'."\n";
                $result = $result.'        <script src="/static/js/admin.js"></script>'."\n";
                $result = $result.'        <script src="/static/js/admin_draw.js"></script>'."\n";
                break;

            case 'Test':
                $result = '';
                break;

            case 'Rank':
                $result = '        <script src="/static/js/rank.js?v=20170515"></script>'."\n";
                $result = $result.'        <script src="/static/js/paging.js"></script>'."\n";
                break;

            case 'Livegame':
                $result = '        <script src="/static/js/livegame.js"></script>'."\n";
                break;
            default:
                # code...
                break;
        }

        if($this->segment1 != 'Admin') {
            $result = $result.'        <script src="/static/js/jquery.bxslider.min.js"></script>'."\n";
            $result = $result.'        <script src="/static/js/publish.js"></script>'."\n";
            $result = $result.'        <script src="/static/js/popup.js"></script>'."\n";
            $result = $result.'        <script src="/static/js/banner.js"></script>'."\n";
            $result = $result.'        <script>window.alert = null</script>'."\n";
        }

        return $result;
    }

}

기존에 사용하던 공통헤더입니다.

다른 분들은 헤더 부분을 어떻게 관리하는지 궁금합니다.

공통헤더 말고 모든 페이지마다

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title></title>
    <script>
            window.serverInfo = {
                "host":"<?=$gchathost;?>",
                "port":80
            };
    </script>
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<body>
<div id="isle">
</div>
<script>
      
    </script>
</body>
</html>

그냥 이런식으로 사용하라는데..솔직히 이해가 잘 안가서요. 여러분들은 어떻게 하시는지 의견을 듣고 싶습니다.

 다음글 $this->db->close(); 이거 꼭... (3)
 이전글 db 수동연결시 폼 검증에 대해 여쭤보고 싶습니다. (2)

댓글

한대승(불의회상) / 2017/05/30 14:20:49 / 추천 0
레이아웃을 만들고 레이아웃별로 관리하고 있습니다.
변종원(웅파) / 2017/05/30 14:24:33 / 추천 0

헤더, 푸터는 웹, 모바일, 팝업용도로 3개 사용하고 내부에서 분기처리합니다.

_remap 에서 선언해서 사용합니다.

간결하고 눈에 잘 띄도록 하는게 중요하다고 생각하는 1인이라서요.