게시판 스킨에서 뭔가 class.function.php 파일을 인클루드해서 php문 내에 함수를 사용하는 방법을 연구했던거 같은데 

하다가 만 건지 관련 코드만 있고 어떻게 사용하는지는 까먹었고..@_@

아마 {@ .. } 이런 코드에서는 php function {..} 을 사용하지 못하니깐 해보려고 했던거 같은데 말이죠.

더 좋은 코드도 있을텐데 일단 이렇게 구현해봤습니다. 아직 라라벨 블레이드 문법은 잘 모르고..@_@

 

1. 상단에 (루프문 바깥)

<?

//$userID = $__Context->document->get('user_id');

function masked($str) {

$maskedStr = "";

if (strlen($str) > 4) {

$maskedStr = substr($str, 2, strlen($str) - 4);

for ($i = 0; $i < strlen($maskedStr); $i++) {

$maskedStr[$i] = "*"; }

$maskedStr = substr($str, 0, 2) . $maskedStr . substr($str, -2);

} else {

$maskedStr = $str;

} return $maskedStr;

}

//echo masked('eonadsfsd');

?>

 

2. 글쓴이를 출력하는 부분의 코드

<!--@if($val->type=='user_id')--><?=masked($__Context->document->get('user_id'))?>

<!--@else--> {$document->get('nick_name')} <!--@end-->

 

ps. 라라벨 블레이드 문법을 일반 html 파일에서 쓰려면

@version(2) 혹은 <config version="2" /> 를 html 파일 맨 위에 작성하면 된다던데

(참조 : https://rhymix.org/manual/theme/intro )

 

그런데, 이게 인클루드되는 게시판 스킨에서도 동작되는건진 모르겠고.

그리고 해봤는데, 

Error #0 "Call to a member function getTitle() on null" in modules/board/skins/eb_basic/template/list/list.html on line 28

이런 기존 함수들에서 충돌나는 부분도 있고 해서 기존의 것을 두고 일부만 사용하는 식은 어려운 거 같더군요.


이런 함수들이 많아진다면

여러분들은 이런 식으로 하실 수도 있겠죠.

 

1. list.html

<include target="assets/inc/function.html" />

 

2. function.html

{@
$XE_version = __ZBXE_VERSION__;
if(!$XE_version)  $XE_version = __XE_VERSION__;
$var_version = $mi->skin." Skin V4.1.0(".$XE_version."+".phpversion().")";
$linkpath = getUrl('mid',$mid,'pGanjioption',1,'offset',$offset,'pOption',$pOption,'listStyle',$listStyle,'pYear','','pMonth','','pDay','');
$skinpath = $tpl_path;// 스킨 설치 경로지정
$XE_path = getUrl('');
$obj=null;// 클리어 쿼리검색 object
$arr_plan=null;// 전역변수 처럼 작용되어 위젯, 스킨 모두에서 클리어함)
// 해당스킨에 function 디렉토리를 만들고 스킨에서 사용할 공통으로 사용하는 추가 함수 부분 -
if(!class_exists('myskin_function')) : //  사용자 펑션이 있는지 체크
require_once($skinpath.'class.myskin_function.php');
endif;

}

 

 

3. class.myskin_function.php

<?php
class myskin_function extends BaseObject {
    
  /**
   * @function:  fn_youtube_install_extra_keys($module_srl)
   * @return: array
   * @brief:회원 확장변수 폼형식 불러오기 C.m.A.
   **/
  function fn_member_extra_form($member_info) {//
    $oMemberModel = &getModel('member');
    $oMemberModel = getModel('member');
    $member_info = get_object_vars($member_info);
    $arr = $oMemberModel->getCombineJoinForm($member_info);
    return $arr;
  }
  function fn_my_function1($str) {
//    ~~~어쩌구 저쩌구 내가 만들 함수들~~~
        return $tag;
    }
  function fn_my_function2($str) {
//    ~~~어쩌구 저쩌구 내가 만들 함수들~~~
        return $tag;
    }
  function sum($arg1, $arg2){
    echo $arg1 + $arg2;
  }
    function masked($str) {
        $maskedStr = "";
        if (strlen($str) > 4) {
            $maskedStr = substr($str, 2, -2);
            $maskedStr = str_pad($maskedStr, strlen($str) - 4, '*', STR_PAD_LEFT);
            $maskedStr = substr_replace($str, $maskedStr, 2, -2);
        } else {
            $maskedStr = $str;
        }
        return $maskedStr;
    }
    function masking($str) {
        $maskedStr = "";
        if (strlen($str) > 4) {
            $maskedStr = substr($str, 2, strlen($str) - 4);
            for ($i = 0; $i < strlen($maskedStr); $i++) {
                $maskedStr[$i] = "*";
            }
            $maskedStr = substr($str, 0, 2) . $maskedStr . substr($str, -2);
        } else {
            $maskedStr = $str;
        }
        return $maskedStr;
    }
  // 조회수 만 단위로 출력하는 함수
  public static function fu_price_format($price)
  {
    if($price>=10000)
    {
      $man = $price/10000;
      $man = round($man,1);
      $result = $man."만";
    }
    else{
      $result=$price;
    }
    return $result;
  }

//  echo fu_price_format('4000');
    
} // end of class
function masked($str) {
    $maskedStr = "";
    if (strlen($str) > 4) {
        $maskedStr = substr($str, 2, strlen($str) - 4);
        for ($i = 0; $i < strlen($maskedStr); $i++) {
            $maskedStr[$i] = "*";
        }
        $maskedStr = substr($str, 0, 2) . $maskedStr . substr($str, -2);
    } else {
        $maskedStr = $str;
    }
    return $maskedStr;
}
?>

    

4. 사용방법

{@

$myskin = new myskin_function();

$name = $myskin->masking($document->get('user_id')); }

{$name}

 

eondcom

profile
이온디는 라이믹스를 비롯한 다양한 CMS의 시드뱅크를 꿈꿉니다. 여러분들이 사랑하는 웹소스를 언제든지 사용할 수 있게 하기 위해 이온디는 매일 소스코드를 유지보수하고 있으며, 언제든지 다운로드할 수 있는 소스마켓을 운영하고 있습니다.

#XE마켓 - 이온디스토어
https://eond.com/xemarket/

# XE/라이믹스 단톡방을 운영 중입니다. (비번: 2022)
https://open.kakao.com/o/giaKKnl

# XE/라이믹스 생활코딩 모듈 강좌입니다.
https://opentutorials.org/module/3774