팁/튜토리얼

getUrl()

2015.07.29 16:58
3,925
0

정의 위치

  • ./config/func.inc.php

정의 내용

/**
 * Get a encoded url. Define a function to use Context::getUrl()
 *
 * getUrl() returns the URL transformed from given arguments of RequestURI
 * <ol>
 *  <li>argument format follows as (key, value).
 * ex) getUrl('key1', 'val1', 'key2',''): transform key1 and key2 to val1 and '' respectively</li>
 * <li>returns URL without the argument if no argument is given.</li>
 * <li>URL made of args_list added to RequestUri if the first argument value is ''.</li>
 * </ol>
 *
 * @return string
 */
function getUrl()
{
    $num_args = func_num_args();
    $args_list = func_get_args();

    if($num_args)
        $url = Context::getUrl($num_args, $args_list);
    else
        $url = Context::getRequestUri();

    return preg_replace('@\berror_return_url=[^&]*|\w+=(?:&|$)@', '', $url);
}

 

용도

  • XE 의 각종 변수들로 구성된 주소를 생성합니다.
  • 리라이트 모드 작동 여부, 리라이트 모드로 변하는 주소 구조 등을 모두 고려해서 주소 문자열을 생성하기 때문에 편리합니다.
  • & 등의 htmlentities 기호를 &amp; 로 변경해서 출력합니다. 변경하지 않기를 원한다면 같은 사용법으로 getNotEncodedUrl() 를 이용할 수 있습니다.
  • getUrl('변수명1', '변수 값1', '변수명2', '변수 값2' ... '변수명n', '변수 값n') 의 형태로 사용하게 되면, 기존에 GET 메소드로 전달된 변수를 포함한 주소가 생성되고, getUrl('', '변수명1', '변수 값1', '변수명2', '변수 값2' ... '변수명n', '변수 값n') 의 (첫 칸 공백) 형태로 사용하게 되면, GET 으로 전달된 변수는 모두 무시한 주소가 생성됩니다.

예시

  1. ./modules/rss/rss.model.php 내용 중 getModuleFeedUrl() 메소드
    • /**
       * Create the Feed url.
       *
       * @param string $vid Vid
       * @param string $mid mid
       * @param string $format Feed format. ef)xe, atom, rss1.0
       * @return string
       */
      function getModuleFeedUrl($vid = null, $mid, $format)
      {
          if(Context::isAllowRewrite())
          {
              $request_uri = Context::getRequestUri();
              // If the virtual site variable exists and it is different from mid (vid and mid should not be the same)
              if($vid && $vid != $mid)
              {
                  return $request_uri.$vid.'/'.$mid.'/'.$format;
              }
              else
              {
                  return $request_uri.$mid.'/'.$format;
              }
          }
          else
          {
              return getUrl('','mid',$mid,'act',$format);
          }
      }

       
  2. ./modules/install/script/welcome_content_ko.html
    • <link rel="stylesheet" href="./layouts/xedition/css/welcome.css" />
      <div class="welcomeXE">
          <section class="intro">
              <span class="noti">WELCOME TO</span>
              <h1 class="tit">WELCOME TO XPRESSENGINE</h1>
              <P class="cont">XpressEngine은 자유로운 웹 콘텐츠 발행을 돕는 CMS입니다.<br />간편한 설치와 다양한 추가 프로그램을 활용하여<br /> 자신만의 웹페이지를 쉽고 빠르게 만들 수 있습니다.</P>
              <a href="{getUrl('', 'module', 'admin')}" target="_blank" class="btn_start">XE 시작하기</a>
          </section>
      </div>

      ​​​
  3. ./widgets/login_info/skins/xe_globalTwo/login_info.html
    • <!--// colorset의 값에 따라 css 파일을 import 한다 -->
      <!--@if($colorset=="black")-->
          <!--%import("css/black.css")-->
      <!--@elseif($colorset=="white")-->
          <!--%import("css/white.css")-->
      <!--@else-->
          <!--%import("css/default.css")-->
      <!--@end-->

      <!--%import("./filter/logout.xml")-->

      <form action="" method="post" class="fo_login_widget">
      <fieldset id="login" class="login_{$colorset}">
      <legend>{$lang->cmd_login}</legend>

          <div class="userName">
              <div class="fl u_name"><div class="member_{$logged_info->member_srl}"><strong>{$logged_info->nick_name}</strong></div></div>
              <div class="fr sign_btn"><a href="{getUrl('act','dispMemberLogout')}"><img src="./images/{$colorset}/buttonLogout.gif" alt="{$lang->cmd_logout}" width="58" height="22" /></a></div>
          </div>
          <ul class="userMenu">
              <!--@foreach($logged_info->menu_list as $key => $val)-->
              <li><a href="{getUrl('act',$key,'member_srl','','page','')}">{Context::getLang($val)}</a></li>
              <!--@end-->

              <!--@if($logged_info->is_admin=="Y" && !$site_module_info->site_srl)-->
              <li><a href="{getUrl('','module','admin')}" onclick="window.open(this.href);return false;">{$lang->cmd_management}</a></li>
              <!--@end-->
          </ul>
          <p class="latestLogin">{$lang->last_login}<br /><span>{zDate($logged_info->last_login, "Y-m-d H:i")}</span></p>
      </fieldset>
      </form>

       

 

댓글 1

  • 2015.07.29 17:05 #893
    2../modules/install/script/welcome_content_ko.html 부분 코드 하이라이터가 <br /> 이라고 입력한 부분을... 정말 Html 코드로 해석하는 것 같습니다..