Q&A

CMS/프레임워크 XE 1.x
개발 언어 PHP 7.4

안녕하십니까.

 

좋은아빠되기입니다.

 

밤 늦은 시간에 염치 불구하고 질문을 남겨 봅니다.

 

가능한 혼자 해결해 보려고 2주정도 도전을 해봤는데. 도저히 모르겠네요. ㅎㅎㅎ

 

AI들도 엉터리 이야기만 자꾸 하고

 

아무튼...

 

image.png

 

위 빨간 테두리의 헤더 스크립트 부분을

 

관리자만 보이지 않게 하거나, 특정 IP에서만 보이지 않게 설정하려고 하는데요.

 

제가 사용중인 레이아웃파일에서만 수정하면 될줄 알았는데..

 

그게 아니더라구요...(제 생각입니다...)

 

해당 부분은

 

제가 사용중인 엘카-그레이스타일 관련 파일을 아무리 뒤져도 안나옵니다.

 

설정 관련이니

 

/conf/info.html 쪽에 있을 꺼라 생각을 했는데...

 

그쪽하고는 관계가 없는것 같습니다.

 

image.png

 

위 이미지 처럼 레이아웃 자체적으로 변수로 관리를 안하는듯 합니다.

(이러면 코어쪽이라는 이야기인데....)

 

 

그런데 신기하게도..

 

일단 알아 낸것은

 

layouts 테이블에 저장된다는 것과

(레이아웃 종류별로 각각 저장되더라구요.)

 

해당 레이아웃(엘카-그레이스타일)에 extra_vars에 직렬형으로 저장이 된다는 건데...

 

_header.html 파일 내부를 살펴봐도...

 

extra_vars 관련으로 출력하는 부분이 없는것 같습니다.

 

그리고 layout.html 파일 내부에서는

 

image.png

 _header.html 파일 자체를 include 하는 형태더라구요.

 

그래서 _header.html 파일을 살펴 봤는데

 

내용은 아래와 같습니다.

 


<div class="layer layer2">
    <h1 class="h1 mpReset">
        <a href="{$layout_info->url}">
            <!--@if($layout_info->logo)--><img src="{$layout_info->logo}" class="iePngFix" alt="{$layout_info->name}" />
            <!--@else-->
                <!--@if($layout_info->colorset=="green")-->
                    <img src="img/colorset/logo_green.gif" alt="{$layout_info->name}" />
                <!--@elseif($layout_info->colorset=="red")-->
                    <img src="img/colorset/logo_red.gif" alt="{$layout_info->name}" />
                <!--@elseif($layout_info->colorset=="orange")-->
                    <img src="img/colorset/logo_orange.gif" alt="{$layout_info->name}" />
                <!--@elseif($layout_info->colorset=="pink")-->
                    <img src="img/colorset/logo_pink.gif" alt="{$layout_info->name}" />
                <!--@else-->
                    <img src="img/logo_blue.gif" alt="{$layout_info->name}" />
                <!--@end-->
            <!--@end-->
        </a>
    </h1>
    <hr class="hr_hide" />
    <!--@if($layout_info->description)--><p class="description">{$layout_info->description}</p><!--@end-->

    <div class="logged_info">
        <!--@if(!$is_logged)-->
            <span class="li li0" cond="$layout_info->login_form!='Y'"><a class="a" href="{getUrl('act','dispMemberLoginForm')}">{$lang->cmd_login}</a></span>
            <div class="li" cond="$layout_info->login_form=='Y'">
                <form method="post" action="/" class="mpReset" onsubmit="return GS_LOGIN_AJAX(this);">
                    <input type="hidden" name="module" value="member" />
                    <input type="hidden" name="act" value="procMemberLogin" />
                    <input type="text" name="user_id" value="" placeholder="{$lang->user_id}" />
                    <input type="password" name="password" value="" placeholder="{$lang->password}" />
                    <button id="gs-login-submit" type="submit"></button>
                </form>
            </div>
            <span class="li" cond="$layout_info->login_form=='Y'"><a class="submit a" href="javascript:;" for="gs-login-submit" onclick="jQuery('#gs-login-submit').parent().submit();return false;">{$lang->cmd_login}</a></span>
            <span class="li"><a class="a" href="{getUrl('act','dispMemberSignUpForm')}" rel="nofollow">{$lang->cmd_signup}</a></span>
            <span class="li"><a class="a" href="{getUrl('act','dispMemberFindAccount')}" rel="nofollow">{$lang->cmd_find_member_account}</a></span>
            <!--// <span class="li"><a href="{getUrl('act','dispMemberResendAuthMail')}">{$lang->cmd_resend_auth_mail}</a></span> -->
        <!--@else-->
<!--//
            <span class="li li0"><a href="#" class="member_{$logged_info->member_srl}" onclick="return false;">{$logged_info->nick_name}</a></span>
-->
            <span class="li"><a href="{getUrl('act','dispMemberLogout')}">{$lang->cmd_logout}</a></span>
            <span class="li"><a href="{getUrl('act','dispMemberInfo')}">{$lang->cmd_view_member_info}</a></span>
            <!--@if($logged_info->is_admin=="Y")--><span class="li">
                <a href="{getUrl('','module','admin','act','dispLayoutAdminModify','layout_srl',$layout_info->layout_srl)}">{$lang->cmd_management}</a>
                <a href="{getUrl('','module','admin','act','dispLayoutAdminModify','layout_srl',$layout_info->layout_srl)}" onclick="window.open(this.href);return false;" title="New window">(새창)</a>
            </span><!--@end-->
        <!--@end-->
    </div>
    <div class="right-top" cond="$layout_info->right_top">
        {$layout_info->right_top}
    </div>
    <hr class="hr_hide" />

    <div cond="count($lang_supported)>1 && !$layout_info->right_top" class="language mpReset">
        <label class="label" for="language">Select Language</label>
        <div class="ul">
            <span class="li on"><button type="button" id="language">{$lang_supported[$lang_type]}</button></span>
            <!--@foreach($lang_supported as $key => $val)--><!--@if($key!= $lang_type)-->
            <span class="li off"><button type="button" onclick="doChangeLangType('{$key}');return false;">{$val}</button></span>
            <!--@end--><!--@end-->
        </div>
    </div>
    <hr class="hr_hide" />

    <!--@if($layout_info->search_hide!='Y' && $layout_info->search_html)-->
    <div class="search mpReset">
        <form class="form" action="{getUrl()}" method="get" class="iePngFix">
            <input type="hidden" name="vid" value="{$vid}" />
            <input type="hidden" name="mid" value="{$mid}" />
            <input type="hidden" name="act" value="IS" />
            <input type="text" name="is_keyword" class="iText" value="{$is_keyword}" accesskey="S" />
            <span class="submit"><input type="submit" title="{$lang->cmd_search}" value="{$lang->cmd_search}" /></span>
        </form>
    </div>
    <hr class="hr_hide" />
    <!--@end-->

</div>

<div class="search_html" cond="$layout_info->search_html">{$layout_info->search_html}</div>
 

 

그런데 특별히 출력되는 부분이 없는것 같습니다....

 

코어쪽을 수정 해야는건지... 더는 잘 모르겠네요.

 

조언 부탁 드립니다.

 

감사합니다.

좋은아빠되기입니다.

댓글 1

  • 레이아웃의 헤더 스크립트는 각 레이아웃에서 선언하거나 적용하는 것이 아니고, 코어에서 일괄 출력합니다. 레이아웃 내에서는 헤더 스크립트의 출력 여부나 위치를 컨트롤할 수 없습니다.

     

    물론 헤더 스크립트 설정을 비우고, 거기에 있던 내용을 레이아웃 소스에 직접 입력한다면 일반적인 템플릿 문법을 사용하여 얼마든지 컨트롤할 수 있게 됩니다.

     

    스킨에서 직관적으로 처리하는 게시판의 헤더 스크립트와 달리, 레이아웃의 헤더 스크립트는 XE 초창기부터 레이아웃 설정(extra_vars)과는 별도로 엉뚱한 곳에 저장되는 구조입니다. 하위호환성 때문에 다른 구조로 바꾸기도 쉽지 않죠. 그냥 그런 기능 따위 없는 셈 치고 레이아웃에 하드코딩하는 것이 속편할 거예요. 꼭 사용자가 편집할 수 있어야 하는 코드라면 레이아웃 설정(info.xml)에 입력란을 하나 만들고, 그 설정을 불러다가 쓰는 방법도 있겠고요.