[첫화면으로]UseModWiki소스수정/TemplateMacro

마지막으로 [b]

TemplateMacro 기능

See also 다른페이지의내용을포함하여출력하기

/Template 기능을 사용할 때, 템플릿페이지의 내용에 comments 나 mysign 같은 전처리 매크로를 넣으면 템플릿페이지를 저장할 때 치환되어 버리므로 사용할 수 없다. 따라서 전처리 매크로가 치환되지 않도록 앞뒤에 다른 문자를 넣거나 해야 되는데 그러면 이번에는 새 페이지를 만들때 이런 문자들이 그대로 복사되므로 다시 지워야 한다.

Jof:위키의일기장화프로젝트 를 응용한 Diary 같은 곳에서 새 페이지를 만들때 페이지 이름을 매번 직접 적어줘야 하는 게 불편하다.

TemplateMacro 는 오직 템플릿페이지 안에서 사용했을 때만 동작하는 매크로이다. 이 매크로는 새로운 페이지를 만들기 위해 편집창을 열고 템플릿페이지의 텍스트가 편집창에 복사되는 시점에서 치환된다.

현재 사용가능한 매크로 목록

매크로를 추가할 경우는, 구분하기 쉽고 일관성이 있도록 매크로 이름을 template_ 으로 시작하도록 하자.

<template_null> <template_pagename> <template_mainpagename> <template_subpagename> <template_date>

wiki.pl 수정

/Template에서 추가되었던 함수의 끝을 다시 고친다.
sub GetTemplatePageText {
    ...
    my %temp_Text = split(/$FS3/, $temp_Section{'data'}, -1);
### template macro
    my $return_text = &TemplateMacroSubst($newpage, $temp_Text{'text'});

    return $return_text;
}

함수 통채로 추가. 차후에 매크로를 추가하고 싶으면 이 함수에 추가해 준다.
### template macro
sub TemplateMacroSubst {
    my ($newpage, $text) = @_;
    my ($newpage_main, $newpage_sub);

### null
    $text =~ s/<template_null>//gi;

### pagename, mainpagename, subpagename
    if ($newpage =~ /^(.*)\/(.*)/) {
        ($newpage_main, $newpage_sub) = ($1, $2);
    } else {
        ($newpage_main, $newpage_sub) = ($newpage, "");
    }

    $text =~ s/<template_pagename>/$newpage/gi;
    $text =~ s/<template_mainpagename>/$newpage_main/gi;
    $text =~ s/<template_subpagename>/$newpage_sub/gi;
    $text =~ s/<template_date>/&CalcDay($Now)/gei;

    return "$text";
}

추가 업데이트 내역

ext1.81 - template_date 매크로 추가

Notes

^^고맙습니다. 오늘은 바빠서 적용을 못 시켰고 내일 적용시켜 볼게요.
-- Canday 2003-10-6 11:42 pm

하루가 다르게 변해가는 프로그램을 그때마다 적용시켜야하는 이 즐거움이란.. 단지 요즘 내시간이 시간이 아닐 정도로 정신이 없다는 것이 문제겠지요.. ㅠ.ㅠ, 하지만, 늘 감사드리고 있다는 것은 아시죠??
-- Redica 2003-10-12 6:58 pm

음..적용해봤는데 전혀 매크로가 안먹요. 혹시 템프레이트페이지 말고 또 적용해야할 내용이 있던건 아닌지..
-- Nyxity 2004-1-28 11:40 am

방금 바벨도서관에 가서 테스트해보았는데, 정말 안 되는군요. -_-; 글쎄요, 아무리 생각해 봐도 /Template 과 이 패치만 있으면 될 텐데요. 아니면 바벨쪽에는 여기에 없는 다른 패치 (시스터위키라던가) 가 있지 않은가요?
-- Raymundo 2004-1-28 12:10 pm

환경설정 내용을 다시한번 살펴보심이.. '-'a <mysign>
-- Bab2 2004-1-28 7:01 pm

환경설정이라 함은 어느?
-- Nyxity 2004-1-29 11:45 am

config.pl 같은 것들 말입죠 :)
-- Bab2 2004-1-29 12:51 pm

환경설정은 별 관계가 없을 것 같은데요. /Template 이 동작한다는 것은 $newpage와 $temp_Text{'text'} 까지 제대로 나왔다는 얘기니까요. 일단 저 두 함수만 소스를 복사해서 올려보시는게 어떨까요?
-- 조프 2004-1-29 1:04 pm
이름:  
Homepage:
내용:
 

위키위키분류

마지막 편집일: 2007-3-22 1:00 pm (변경사항 [d])
1434 hits | Permalink | 변경내역 보기 [h] | 페이지 소스 보기