1

주제: [질문]을 여기에 올려도되는지 몰르지만..

혹시 <head>와 </head>에 특정 값을 넣어줄 수 있는 이벤트가 있나요?
플러그인을 만들다 보면..
저곳에 자바스크립트를 넣어야 하는 경우가 있습니다.
사용자에게 <head>와 </head>사이에
[##_어쩌구_저쩌구_##]
를 넣으시구요.
본문에 다시
[##_저쩌구_어쩌구_##]
를 넣으세요..
같은거 좀 그렇찮아요..-_-;;;
링크처럼 한번에 한번만 인쇄되는거야..
그냥 플러그인 내용 위에 스크립트가 나오도록 하면 되는데..
본문 내용의 뒤나 앞에 붙는 플러그인일 경우
(지금 제작중인 인쇄버튼)
또는 어쩔수 없이 <head>안에 들어가야 하는 경우..
(페이지 변환 효과)
에는 <head>안에 머 넣구요.
body 태그에 머 삽입하구요.
본문의 어디에 머 삽입하구요..
-_-;;;
매우 번거러운 일이 아닐 수 없습니다.
만드는 사람도..
사용하는 사람도..
귀찮고 번거럽고..
짜증나고..
그리고 의도하지 않은 실수가 많이 생기더군요..ㅠㅠ

그런 이벤트가 있다면 알려주시고..
없다면 건의쪽으로 옮겨야겠습니다..^^;;

Juno (2006-05-19 11:41:19)에 의해 마지막으로 수정

Good Bye, 세상이여...
Bye Bye, 나의 인연이여..
그리고 마지막으로...
Thank you 모든이여...

2

답글: [질문]을 여기에 올려도되는지 몰르지만..

Juno 작성:

혹시 <head>와 </head>에 특정 값을 넣어줄 수 있는 이벤트가 있나요?
플러그인을 만들다 보면..
저곳에 자바스크립트를 넣어야 하는 경우가 있습니다.
사용자에게 <head>와 </head>사이에
[##_어쩌구_저쩌구_##]
를 넣으시구요.
본문에 다시
[##_저쩌구_어쩌구_##]
를 넣으세요..
같은거 좀 그렇찮아요..-_-;;;
링크처럼 한번에 한번만 인쇄되는거야..
그냥 플러그인 내용 위에 스크립트가 나오도록 하면 되는데..
본문 내용의 뒤나 앞에 붙는 플러그인일 경우
(지금 제작중인 인쇄버튼)
또는 어쩔수 없이 <head>안에 들어가야 하는 경우..
(페이지 변환 효과)
에는 <head>안에 머 넣구요.
body 태그에 머 삽입하구요.
본문의 어디에 머 삽입하구요..
-_-;;;
매우 번거러운 일이 아닐 수 없습니다.
만드는 사람도..
사용하는 사람도..
귀찮고 번거럽고..
짜증나고..
그리고 의도하지 않은 실수가 많이 생기더군요..ㅠㅠ

그런 이벤트가 있다면 알려주시고..
없다면 건의쪽으로 옮겨야겠습니다..^^;;

스킨 헤더 부분을 해석할 때 작동하는 이벤트가 필요하겠군요 smile

"Everything looks different on the other side."

-Ian Malcomm, from Michael Crichton's 'The Jurassic Park'

3

답글: [질문]을 여기에 올려도되는지 몰르지만..

오호.. 저도 플러그인 수정하다보면 그거 정말 답답했었는데.
이벤트가 있었으면 좋겠어요. b

가능여부는 생각지도 않고 먼저 국물부터 마셔보는..-_-

LonnieNa (2006-05-19 12:47:27)에 의해 마지막으로 수정

텍스트큐브를 이용하시다 불편하신 점 있으시면 아래로 연락주세요.
Needlworks/TNF - LonnieNa
nateon : y12x2 (a.t) nate.com / mail : lonniena (a.t) needlworks.org
http://twitter.com/@textcube

4

답글: [질문]을 여기에 올려도되는지 몰르지만..

네 바로 그것입니다..^^;;
아무래도 head 부분에 자바스크립트를 삽입해야 하는 플러그인이 많은데...
플러그인을 많이 쓰는..
또는 제작하는 사람으로서..
사실 skin.php파일의 head 사이가 복잡해지고 좀 그렇더군요..
그런 사람들을 위해서 있으면 매우 편하고 좋을 것 같아서요..^^

Good Bye, 세상이여...
Bye Bye, 나의 인연이여..
그리고 마지막으로...
Thank you 모든이여...

5

답글: [질문]을 여기에 올려도되는지 몰르지만..

대찬성입니다. 자바스크립트가 삽입되는 플러그인은 삽입하는 이벤트를 정하기가 애매하더군요.

6

답글: [질문]을 여기에 올려도되는지 몰르지만..

Chiri 작성:

대찬성입니다. 자바스크립트가 삽입되는 플러그인은 삽입하는 이벤트를 정하기가 애매하더군요.

전 플러그인 함수명부터 이름 정하는게 더 어려워요..ㅠㅠ
차라리 프로그램 가져다 놓고 만드는게 쉽지..ㅠㅠ
함수명이랑 치환자 이름 결정하고 플러그인 이름 결정하고..
이게 가장 어렵다는..ㅠㅠ

Good Bye, 세상이여...
Bye Bye, 나의 인연이여..
그리고 마지막으로...
Thank you 모든이여...

7

답글: [질문]을 여기에 올려도되는지 몰르지만..

저두 찬성입니다. <head>..</head>부분에 자바스크립트나 스타일시트 등을 이벤트 할수있게 해주셨으면 좋겠습니다.
플러그인 제작에 많은 도움이 될듯합니다.

당신의 삶속에 매화꽃 향기처럼 늘 아름다운 향기로 가득하길...
# J.Parker

8

답글: [질문]을 여기에 올려도되는지 몰르지만..

event로는 불가능하다고 판단되어 치환자를 자동으로 삽입하는 방식으로 구현해놨습니다.

lib/skin.php

아래 함수 추가

function replaceSkinTag($contents, $tag) {
    $pattern[] = '/(<'.$tag.'.*>)'.CRLF.'/Ui';
    $pattern[] = '/<\/'.$tag.'>/Ui';

    $replacement[] = '$1'.CRLF.'[##_SKIN_'.$tag.'_start_##]';
    $replacement[] = '[##_SKIN_'.$tag.'_end_##]$0';

    return preg_replace($pattern, $replacement, $contents);
}


skin class의 skin 함수에 handleTags($sval); 바로 위에 아래 내용 추가

$sval = replaceSkinTag($sval, 'html');
$sval = replaceSkinTag($sval, 'head');
$sval = replaceSkinTag($sval, 'body');

자동으로 생성되는 치환자 목록

SKIN_html_start
SKIN_head_start
SKIN_head_end
SKIN_body_start
SKIN_body_end
SKIN_html_end

SKIN_*_start 는 해당 태그 다음 줄의 맨 앞에, SKIN_*_end 는 해당 태그의 바로 앞에 추가가 됩니다.

예제 :
...
<html xmlns="http://www.w3.org/1999/xhtml">
[##_SKIN_html_start_##]<head>
[##_SKIN_head_start_##]<meta http-equiv=Content-Type content="text/html; charset=utf-8" />
...
[##_SKIN_head_end_##]</head>
<body>
[##_SKIN_body_start_##]<a name="top"></a>
...
[##_SKIN_body_end_##]</body>
[##_SKIN_html_end_##]</html>

플러그인에서 사용하실 때는 <tag name="SKIN_head_end" handler="head_end" /> 와 같이 사용하시면 됩니다.


ps1. 일단 커밋해두겠으나 더 좋은 의견있으시면 태클걸어주세요. smile

ps2. container, header, content, sidebar 등의 id에도 만들어줄려고 했으나 table 형식의 스킨에서는 id가 없어서 일단 보류입니다. sad

9

답글: [질문]을 여기에 올려도되는지 몰르지만..

한개의 치환자를 사용하게 되면..
내가 만든 플러그인이 [##_SKIN_head_end_##]를 사용하고..
다른분의 플러그인이 똑같이 [##_SKIN_head_end_##]를 사용하게 되면..
2개의 플러그인에 있는 모든 것이 출력이 되는건지요?
아닌걸로 알고 있는데..
문제가 발생할 소지가 많습니다.

Good Bye, 세상이여...
Bye Bye, 나의 인연이여..
그리고 마지막으로...
Thank you 모든이여...

10

답글: [질문]을 여기에 올려도되는지 몰르지만..

Juno 작성:

한개의 치환자를 사용하게 되면..
내가 만든 플러그인이 [##_SKIN_head_end_##]를 사용하고..
다른분의 플러그인이 똑같이 [##_SKIN_head_end_##]를 사용하게 되면..
2개의 플러그인에 있는 모든 것이 출력이 되는건지요?
아닌걸로 알고 있는데..
문제가 발생할 소지가 많습니다.

네 2개의 플러그인에 있는 모든 것이 출력이 됩니다.
다만 handler(call되는 함수)의 이름은 unique해야겠지요. smile

좀 더 자세하게 설명을 드리자면 아래와 같이 작성하시면 됩니다.
($target을 받아서 꼭 return 해줘야합니다.)

plugin1

index.xml

...
<tag name="SKIN_head_end" handler="head_end1" />
...

index.php

function head_end1($target) {
    return "<script>1</script>".CRLF.$target;
}

plugin2

index.xml

...
<tag name="SKIN_head_end" handler="head_end2" />
...

index.php

function head_end2($target) {
    return "<script>2</script>".CRLF.$target;
}