XETOWN

분수 광장

특정주제 없이 자유로운 이야기를 나눌 수 있습니다.
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Extra Form

앞선 글(https://www.xetown.com/square/354440)에서 '다국어 지원이 되지 않는 단일/다중선택 형식의 확장변수 기본값 문제'를 언급한 바 있습니다.

따옴표 안의 말이 복잡하고 참 길죠? 그만큼 실제 문제도 복잡합니다;;;

 

어쨌든 (다국어 지원이 되는) 카테고리 지정을 우회함으로써, 게시판 목록에서 게시물의 확장변수 값을 다국어로 구현하는 데 성공했습니다.

과정이 좀 복잡하긴 합니다.

XEedition 게시판 스킨 기준입니다.

 

 

1. 다행이라면 다행일 텐데. _header.html에 다음과 같은 변수 정의가 있어서 수고를 좀 덜었습니다.

{@ $cate_list = array(); $current_key = null; }
<!--@foreach($category_list as $key=>$val)-->
  <!--@if(!$val->depth)-->
    {@
      $cate_list[$key] = $val;
      $cate_list[$key]->children = array();
      $current_key = $key;
    }
  <!--@elseif($current_key)-->
    {@ $cate_list[$current_key]->children[] = $val }
  <!--@end-->
<!--@end-->

카테고리 목록을 계층화해주는 것 같습니다. 이렇게 하면 카테고리 군과 확장변수를 매칭시키기가 한층 수월해집니다.

 

 

2. 다음으로 게시판 설정의 '분류 관리'로 들어가서 계층화된 카테고리를 만들어줍니다. 물론 다음과 같이 다국어로요.

00.png  01.png

번역이나 맞춤법이 잘 됐는지는 신경쓰지 말아주세요ㅠㅠ 저는 여기서 '형식(Type)'은 일반적인 카테고리 변수로 활용할 것이고, '주제(Theme)'는 확장변수와 매칭시킬 더미 변수로 활용할 것입니다.

 

 

3. 위의 '주제(Theme)' 분류에 맞출 확장변수도 설정해줍니다. 똑같이요.

02.png

앞선 글에서도 썼지만, '기본값(Default Value)'는 다국어 지원을 하지 않는다는 걸 재확인할 수 있습니다.

덧붙여, 향후의 귀찮은 공백 제거 작업을 방지하기 위해 기본값과 쉼표 사이에 띄어쓰기는 하지 않도록 합니다.

 

 

4. 이제 게시판 스킨의 목록 파일로 돌아가보겠습니다.

{$category_list[$document->get('category_srl')]->title}로 하면 해당 글의 카테고리 제목이 출력됩니다. 이 부분은 크게 어렵지 않으니 패스하겠습니다.

다음으로, 위에서 theme이라는 변수명으로 설정했던 확장변수의 변수값을 불러옵니다. 보통은 {$document->getExtraValue(1)}으로 불러오죠. 하지만 이렇게 하면 당연히 다국어 출력이 되지 않습니다. 요렇게 말입니다.

03.png

따라서, 애초 계획대로 확장변수의 기본값을 카테고리 변수값으로 매칭시켜주는 절차를 밟아보도록 하겠습니다.

 

 

5. 일단 다음과 같이 두 가지 변수를 준비해보겠습니다. 하나는 eval이고 다른 하나는 cval입니다.

결코 욕이 아닙니다. eval은 확장변수의 약자이고, cval은 카테고리변수의 약자일 뿐입니다.

{@ $eval = explode(',',$document->getExtraVars()[1]->default); }
<block loop="$cate_list[array_keys($cate_list)[1]]->children=>$key,$val">
  {@ $cval[$key] = $cate_list[array_keys($cate_list)[1]]->children[$key]->title; }
</block>

$eval은 쉼표 단위로 구분되어 있는 확장변수의 기본값을 배열 변수로 만들어준 것입니다. 비교적 간단하죠. 여기서 [1]은 사용자 정의에서 설정돼 있던 확장변수의 일련번호를 가리킵니다.

$cval은 _header.html에서 만들어졌던 1차 카테고리 목록($cate_list) 중 두 번째 키값을 추출해내고(array_keys($cate_list)[1]), 이것을 이용해 '주제(Theme)' 카테고리의 하위 카테고리들을 루프로 돌려줘서 얻은 결과입니다. 그리고 $key 값에 따라서 하위 카테고리의 제목을 입력시켜서 배열변수로 만들어줬습니다.

 

 

6. {print_r($eval)}과 {print_r($cval)}로 확인해보면 다음과 같은 결과가 나옵니다. 일단 한국어 모드입니다. 위쪽이 $eval이고 아래쪽이 $cval이에요.

04.png

성공적이네요. 두 변수가 동일한 결과를 보여주죠? 하지만 $eval과 $cval이 언제나 동일하지만은 않습니다. 이번엔 영어 모드에서 print_r로 출력해보도록 하겠습니다.

05.png

보시는 바와 같이 우리의 $cval(아래쪽)은 언어 모드에 따라 다른 값을 뿌려줍니다. 즉, 한국어 모드에선 두 변수가 동일하고 영어 모드에선 서로 다릅니다. $cval은 다국어 지원 기능이 있는 카테고리 변수로부터 얻어왔기 때문이에요.

 

 

7. 이로써 긴~ 준비가 끝났습니다. 그러면 아까 4번 항목에서 {$document->getExtraValue(1)}로 다국어 출력에 실패했던 문제를 해결해보겠습니다.

{$cval[array_search($document->getExtraValue(1),$eval)]}

끝입니다... 엥? ㅋㅋㅋ

array_search는 $document->getExtraValue(1)로 배열 변수 $eval을 검색해서 성공시에 해당하는 키를 반환시켜줍니다. 즉 $eval과 $cval의 배열이 매칭하는 점에 착안한 겁니다.

예컨대, {$document->getExtraValue(1)}이 어느 언어 모드에서든 '그 외'로 출력되는 데 그쳤다면, 위의 구문은 '그 외'에 해당하는 키값을 [4]로 매칭되는 $cval을 뿌려주게 됩니다.

그 결과, 위의 4번 항목에서 한국어로 잘못 출력됐던 부분도 다음과 같이 잘 나오게 됩니다.

06.png

 

 

... 이상입니다. 이로써 다국어 지원 블로그가 완성의 길로 가는 것일까요?

사실, 아직 모르겠습니다. 이 글을 사용팁이 아니라 자유 게시판에 쓰는 이유도 이 때문입니다.

_read.html과 _write_document.html에서도 확장변수 부분을 제어해줘야 하는 건 물론이고, 무엇보다도 영어모드에선 게시판 검색이 안 된다는 가장 큰 난관이 기다리고 있기 때문입니다.

다국어 기능을 시험해보신 분들은 아시겠지만, 확장변수로 게시판 검색을 할 때는 오로지 한국어로만 됩니다;;;;

 

여러모로 노력을 다하곤 있지만 검색 문제를 해결할 수 있을지는 자신이 1도 없습니다ㅠ 저는 이런 식으로 다국어 지원 블로그 제작에 성공할 수 있을까요? 아니면 기능 제한을 운명으로 받아들이고 이쯤에서 멈춰야 하는 걸까요?

 

벌써 새벽 5시반이네요. 이만 자야겠습니다.

 

 

※ 첨가: 이 글은 게시판 목록에서 활용되는 사례이며, 게시판 본문에서는 다음의 글을 참조해주세요. https://www.xetown.com/lakepark/359530

  • profile
    하늘희 2016.08.16 13:01:55
    우와... 제가 원하던 거네요.. 이런 사소한 부분에서 XE는 아쉬움이 남더라구요...

    고생하셨습니다.
  • profile
    윤삼 2016.08.16 14:26:00

    혹시 필요하긴 분이 계실까 해서 정리해봤는데, 다행이네요.
    XE만큼 다국어 지원이 잘 되는 CMS도 드물다고 하던데, 결정적인 순간에 뭔가 턱 막히는 느낌이 들더라구요.
    그러나 저러나 검색 문제는 참, 에효...

  • ?
    SimpleCode 2016.08.16 15:44:24
    XE에서 공식적으로 지원하는 방식으로 고친다면 다국어 지원하는 건 크게 어렵지 않을 것 같네요.
    근데 어떤식으로든지 완벽한 다국어 검색은 어려울 거에요. 가능하다고 해도 깔끔하게 구현이 안 될 듯 하네요.
  • profile
    윤삼 2016.08.16 16:37:06

    구글링으로 이런 문서를 발견했어요. https://www.xpressengine.com/forum/22576332

    통합검색 부분에서 성공 케이스가 있었네요, 오호...

    아마도 GG님이 작성하셨던 것 같은데, GG님을 멘션하고 싶은 욕망을 마구 억누르고 있습니다ㅋㅋㅋ

     

    심플코드님 말씀처럼 XE의 공식 지원이 가장 깔끔하겠죠.

    하지만 이래저래 탐문해보니 다국어 검색 수요가 상대적으로 적은 편이어서 XE측에선 동기부여가 별로 없는 눈치더라구요.

    라이믹스는? 이라는 생각이 들긴 했지만, 이쪽으론 제가 문외한이다보니 적절한 이슈인지 감도 잘 안 잡히구요.

     

    아무튼 하다가 안 되면 포기해야죠, 뭐

    어차피 그냥 취미로 목숨 걸고 하는 일이니까요ㅋㅋㅋㅋ (미춰버리겠네~)

  • profile
    GG 2016.08.30 09:01:18
    아 제가 이런 코멘트도 했었네요. 부끄.
  • profile
    아즈냥 2016.08.16 15:45:51
    대단대단 ..
  • profile
    윤삼 2016.08.16 16:41:50
    아마 실패할 것 같아요ㅋㅋㅋㅋ
  • profile
    아즈냥 2016.08.16 16:49:59
    컴퓨터 프로그램만드는거에 비해서 웹은 콩알만치도 몰라서 버그하나에 몇시간을 낑낑대는중이네요 ..
  • profile
    윤삼 2016.08.16 17:01:10
    프로그램을 하시면 웹사이트 개발도 금방 잘 하시지 않을까요? 저는 문과 주제에 야매로 익히고 있다보니 실력이 안 늘어요ㅠㅠ
  • profile
    아즈냥 2016.08.16 17:05:44
    제가 C , C++ 같은거 먼저 배운게 아니라서 ... 컴퓨터 프로그램 만든거라고해봐야
    엠넷플레이어랑 같은 음악플레이어나 어플 유틸프로그램밖에 안만들어서 ..
  • profile
    윤삼 2016.08.16 17:22:09

    저는 그 두 개가 얼마나 다른지도 모르는 걸요. ㅎㅎ
    (웹툰 위젯 스킨 수정도 분명 잘 될 겁니다!)


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
화제의 글 자유 엑스이타운에 파티가 열렸어요 68 update 제이엔지 2016.11.30 270
화제의 글 자유 닉네임이 사라졌는데 71 제이엔지 2016.11.28 330
3711 자유 서울 왔습니다! 2 윈컴이 2016.08.20 103
3710 자유 한달 개근을 노려보고 있습니다 2 file 세희타운 2016.08.20 42
3709 자유 오랜만에 방문해서 글 씁니다 2 큰성565 2016.08.19 65
3708 자유 의뢰 하러 왔다가..... file 궁뎅이 2016.08.19 109
3707 자유 업자 등록후 PG 신청까지 .. 7 file 구름이 2016.08.19 109
3706 자유 제작의뢰 사기관련 조언 좀 부탁드립니다. 13 디바샵 2016.08.19 227
3705 자유 XE1 그리고 XE3 3 가브리엘조 2016.08.18 168
3704 자유 포인트 히스토리 모듈 업데이트 작업중... 11 file CONORY 2016.08.18 159
3703 자랑해요 와 저.. 처음으로 출석 1등했어영!!!! 6 김햄C 2016.08.18 68
3702 자유 XE 1.8.24에서 알림센터 잘 되시나요? 4 creative 2016.08.16 151
3701 자유 레벨1이 되었다는데 1 스마일 2016.08.16 69
» 자유 확장변수 기본값(단일/다중선택 형식)을 영어로 표현해내는 데 성공...? 11 file 윤삼 2016.08.16 97
3699 하소연 푸쉬앱모듈 ㅠㅠ 3 XE러버 2016.08.16 136
3698 자유 XE타운에 경고문 애드온 탐나네요 2 XE러버 2016.08.16 120
3697 자유 에어컨 고장 나서 미칠지경입니다. 4 이성민 2016.08.15 68
3696 자유 게시판 확장변수의 다국어 지원을 위한 카테고리의 더미화 file 윤삼 2016.08.15 35
3695 자랑해요 Stellar 레이아웃 11 file 윈컴이 2016.08.15 152
3694 자유 워드프레스 테마 vs XE 레이아웃 2 xelayout 2016.08.15 141
3693 자유 이 시간까지 허무하게 삽질.. 2 file 하늘희 2016.08.15 113
3692 자유 죄송합니다. 누리고 이번주는..내일쯤 배포할것 같아요. 14 람보 2016.08.14 139
Board Pagination Prev 1 ... 27 28 29 30 31 32 33 34 35 36 ... 217 Next
/ 217
위로
서버에 요청 중입니다. 잠시만 기다려 주십시오...