9 번째 수정본 소스 보기 : UseModWiki소스수정/TemplateMacro
마지막으로 [b]
-- Loading page list... --
내용출력
로그인[l]
Diary
[f]
최근변경내역
[r]
페이지목록[i]
횡설수설[2]
게시판[3]
링크
수정할 수 없습니다: UseModWiki소스수정/TemplateMacro 는 읽기 전용 페이지입니다.
== TemplateMacro 기능 == [[/Template]] 기능을 사용할 때, 템플릿페이지의 내용에 comments 나 mysign 같은 전처리 매크로를 넣으면 템플릿페이지를 저장할 때 치환되어 버리므로 사용할 수 없다. 따라서 전처리 매크로가 치환되지 않도록 앞뒤에 다른 문자를 넣거나 해야 되는데 그러면 이번에는 새 페이지를 만들때 이런 문자들이 그대로 복사되므로 다시 지워야 한다. 또 Jof:위키의일기장화프로젝트 를 응용한 [[Diary]] 같은 곳에서 새 페이지를 만들때 페이지 이름을 매번 직접 적어줘야 하는 게 불편하다. TemplateMacro 는 오직 템플릿페이지 안에서 사용했을 때만 동작하는 매크로이다. 이 매크로는 새로운 페이지를 만들기 위해 편집창을 열고 템플릿페이지의 텍스트가 편집창에 복사되는 시점에서 치환된다. * 필수 요구 사항: ** [[/Template]] 패치가 되어 있을 것 * 선택 요구 사항: 없음 * 사용법: ** 템플릿페이지 안에서 매크로를 쓰면 새 페이지를 만들 때 그 매크로가 치환된다. ** 매크로 목록은 아래를 참조하라. * 부작용: 없을 것으로 짐작. === 현재 사용가능한 매크로 목록 === 매크로를 추가할 경우는, 구분하기 쉽고 일관성이 있도록 매크로 이름을 '''template_''' 으로 시작하도록 하자.
* 공백으로 치환된다. 즉 그냥 없어져 버린다. * 전처리 매크로의 뒤에 슬쩍 넣어 주면 새 페이지를 만들 때 전처리 매크로만 남기 때문에 그냥 저장하면 된다.
* 현재 수정하는 페이지 이름으로 치환된다.
* 현재 수정하는 페이지가 [[하위페이지]]일 경우 상위페이지의 이름으로 치환된다. * 하위페이지가 아닐 경우는 그냥 페이지 이름으로 치환된다.
* 현재 수정하는 페이지가 [[하위페이지]]일 경우 하위페이지의 이름으로 치환된다. * 하위페이지가 아닐 경우는 공백으로 치환된다. === wiki.pl 수정 === [[/Template]]에서 추가되었던 함수의 끝을 다시 고친다. {{{perl sub GetTemplatePageText { ... my %temp_Text = split(/$FS3/, $temp_Section{'data'}, -1); ### template macro my $return_text = &TemplateMacroSubst($newpage, $temp_Text{'text'}); return $return_text; } }}} 함수 통채로 추가. 차후에 매크로를 추가하고 싶으면 이 함수에 추가해 준다. {{{perl ### template macro sub TemplateMacroSubst { my ($newpage, $text) = @_; my ($newpage_main, $newpage_sub); ### null $text =~ s/
//gi; ### pagename, mainpagename, subpagename if ($newpage =~ /^(.*)\/(.*)/) { ($newpage_main, $newpage_sub) = ($1, $2); } else { ($newpage_main, $newpage_sub) = ($newpage, ""); } $text =~ s/
/$newpage/gi; $text =~ s/
/$newpage_main/gi; $text =~ s/
/$newpage_sub/gi; return "$text"; } }}} === Notes === ^^고맙습니다. 오늘은 바빠서 적용을 못 시켰고 내일 적용시켜 볼게요.
하루가 다르게 변해가는 프로그램을 그때마다 적용시켜야하는 이 즐거움이란.. 단지 요즘 내시간이 시간이 아닐 정도로 정신이 없다는 것이 문제겠지요.. ㅠ.ㅠ, 하지만, 늘 감사드리고 있다는 것은 아시죠??
음..적용해봤는데 전혀 매크로가 안먹요. 혹시 템프레이트페이지 말고 또 적용해야할 내용이 있던건 아닌지..
: 방금 바벨도서관에 가서 테스트해보았는데, 정말 안 되는군요. -_-; 글쎄요, 아무리 생각해 봐도 [[/Template]] 과 이 패치만 있으면 될 텐데요. 아니면 바벨쪽에는 여기에 없는 다른 패치 (시스터위키라던가) 가 있지 않은가요?
:환경설정 내용을 다시한번 살펴보심이.. '-'a <mysign>
::환경설정이라 함은 어느?
config.pl 같은 것들 말입죠 :)
환경설정은 별 관계가 없을 것 같은데요. [[/Template]] 이 동작한다는 것은 $newpage와 $temp_Text{'text'} 까지 제대로 나왔다는 얘기니까요. 일단 저 두 함수만 소스를 복사해서 올려보시는게 어떨까요?
---- [[위키위키분류]]
UseModWiki소스수정/TemplateMacro
페이지로 돌아가기 |
다른 수정본 보기