a-blog cms에서 고유 태그의 내용을 대체하는 "교정 옵션"의 구체적인 사용법

13049 단어 ablogcmsCMSPHP
이 기사는 a-blog cms Advent Calendar 2017의 10 일째 기사입니다.
죄송합니다 미리 알림 날짜가 잘못되어 하루 늦었습니다.

요 전날, 12월 9일의 CMSMix 사포로 Vol.4의 핸즈온으로 소개한, 「교정 옵션」의 구체적인 사용법입니다.

교정 옵션이란?



a-blog cms를 사용하면 템플릿의 변수 바로 다음에 반각각 괄호([])로 "표시 내용을 대체하는 규칙"을 지정할 수 있습니다. 이것은 "교정 옵션"이며 거의 모든 변수에 사용할 수 있습니다.
사용 가능한 옵션 목록은 아래를 참조하십시오.

가장 많이 사용되는 것은 다른 CMS에서 자주 발생하는 날짜 변환입니다. 아래 샘플에서는 YY-mm-dd 형식으로 입력된 사용자 정의 필드 "event_date"를 0이 없는 날짜로 대체하여 표시합니다.

acms_corrector_date.html
{event_date}[date('Y年n月j日')] -> 2017-01-01 -> 2018年1月1日

a-blog cms 고유의 교정 옵션



a-blog cms에는 국산 특유의 날짜를 일본 달력으로 변환하는 교정 옵션도 있습니다. 아래의 샘플에서는, YY-mm-dd 형식으로 입력된 커스텀 필드 「my_birth」를, 일본 달력으로 표시하고 있습니다.
다음은 내 생일입니다. 뭔가 해주세요.

acms_corrector_wareki.html
{my_birth}[wareki('年n月j日')] -> 1975-03-26 -> 昭和50年3月26日

교정 옵션 자체 제작



자체 제작 옵션이 필요한 예





이것은 CMSMix 사포로 Vol.4의 핸즈온 스크린 샷입니다.
일본 장기 연맹의 프로 기사의 데이터를 a-blog cms로 표시한 것입니다.

일반적으로 일본의 예도는 한숫자의 「단」으로 랭크 나누어지고, 사이트에 따라서는 「단위가 높은 순서」로의 표시가 요구됩니다. 한 숫자에서도 정렬은 가능하지만 반각 숫자로 해 두는 것이 무난합니다.
이 샘플에서는 'kanjinum' 교정 옵션을 직접 만들고 숫자를 한 숫자로 변환합니다.

만드는 방법



a-blog cms의 다음 파일을 편집기에서 열고 'ACMS_User_Corrector' 클래스에 public 함수를 추가합니다.

php/ACMS/User/Corrector.php

실제 파일에는 이미 샘플 코드가 들어 있지만 개요는 다음과 같습니다.

acms_corrector_outline.php
<?php
class ACMS_User_Corrector
{

    public static function sample($txt, $args = array())
    {
        // 校正オプション[sample]の処理
        // 変数「$txt」に直前のa-blog cmsの変数の値が入る
        // 第二引数にarrayを定義すると、文字列で補助値を渡すことができる
    }

    public static function kanjinum($txt)
    {
        // 校正オプション[kanjinum]の処理
        // 第二引数はないので、補助値を渡さないで使う前提
    }


}

처리 흐름


  • 캘리브레이션 옵션과 같은 이름의 함수가 호출됩니다
  • 변수 "\$ txt"에 이전 a-blog cms 변수의 값이 전송됩니다.
  • 함수가 "return"으로 반환 한 값을 원래 변수의 값으로 바꿉니다.

    가장 간단한 구조라면 이렇게 됩니다. 변수의 내용이 무엇이라도 「_:(´ཀ`」∠):_」로 해 돌려줍니다.

    acms_corrector_simple.php
        public static function simple($txt)
        {
           return '_:(´ཀ`」∠):_';
        }
    }
    

    한 숫자 변환 샘플



    여기에서 공개된 함수를 그대로 유용할 수 있습니다. 변수 '\$outstr'에 변수 '\$txt'를 처리한 내용을 넣어 반환합니다.

    PHP로 반각 숫자를 한 숫자로 만들기 | Pafu 집 홈페이지
    htps //w w. 파호오. rg / e-so l / ue b ch / php03 / php03-05-01. shtm

    acms_corrector_kanjinum.php
        public static function kanjinum($txt)
        {
            // 例 {var}[kanjinum]
            // {var}の中は整数でなければならない
    
            static $kantbl1 = array(0=>'', 1=>'一', 2=>'二', 3=>'三', 4=>'四', 5=>'五', 6=>'六', 7=>'七', 8=>'八', 9=>'九', '.'=>'.', '-'=>'-');
            static $kantbl2 = array(0=>'', 1=>'十', 2=>'百', 3=>'千');
            static $kantbl3 = array(0=>'', 1=>'万', 2=>'億', 3=>'兆', 4=>'京');
    
            $outstr = '';
            $len = strlen($txt);
            $m = (int)($len / 4);
    
            //一、万、億、兆‥‥の繰り返し
            for ($i = 0; $i <= $m; $i++) {
    
                $s2 = '';
    
                //一、十、百、千の繰り返し
                for ($j = 0; $j < 4; $j++) {
    
                    $pos = $len - $i * 4 - $j - 1;
    
                    if ($pos >= 0) {
                        $ch  = substr($txt, $pos, 1);
                        if ($ch == ',')    continue;        //カンマは無視
    
                        $ch1 = isset($kantbl1[$ch]) ? $kantbl1[$ch] : '';
                        $ch2 = isset($kantbl2[$j])  ? $kantbl2[$j]  : '';
    
                        //冒頭が「一」の場合の処理
                        if ($ch1 != '') {
                            if ($ch1 == '一' && $ch2 != '')  $s2 = $ch2 . $s2;
                            else                             $s2 = $ch1 . $ch2 . $s2;
                        }
                    }
                }
    
                if ($s2 != '')  $outstr = $s2 . $kantbl3[$i] . $outstr;
    
            }
            return $outstr;
        }
    }
    

    실제로 사용



    다음과 같이 쓰면 됩니다.

    acms_corrector_kanjinum_tmpl.html
    {player_lank}[kanjinum]段
    

    기타 교정 옵션의 자체 제작 예



    사이트에 따라서는, 이하와 같은 것을 만들면 편리할지도 모릅니다.
  • 제품 번호를 별도의 서버에있는 제품 정보 API에 전달하고 획득 한 정보를 반환합니다.
  • 변수가 비어있을 때의 기본값은 표시된 내용에 따라 변경됩니다.
  • 정규식 검색을 수행하고 특정 키워드가 포함되어 있으면 마크 업
  • 좋은 웹페이지 즐겨찾기