특정 단어를 링크로 치환 - 2
https://xetown.com/rxe_tip/913522
위 팁의 연계 팁입니다.
이거 매번 소스넣고 고치기 힘들죠.
이제 게시판 관리 페이지 내에서 관리할 수 있도록 수정해 봅시다.
skin.xml 을 열어서 아래 내용을 extra_vars에 추가해 줍니다. (게시판 스킨 폴더에 있음)
<extra_vars>
<group>
<title xml:lang="ko">게시물 단어 링크 자동 치환</title>
<var name="autoreplace_use" type="select">
<title xml:lang="ko">치환 기능 사용</title>
<options value="Y">
<title xml:lang="ko">사용</title>
</options>
<options value="">
<title xml:lang="ko">사용하지 않음</title>
</options>
</var>
<var name="autoreplace_text" type="textarea">
<title xml:lang="ko">치환 문자 *( ',' 로 구분 줄바꿈으로 새 규칙)</title>
</var>
</group>
대충(?) 이렇게 설정을 추가해줍시다.
잘 뜨는군요.
그럼 이제 _read.html을 그에 맞게 수정할 시간입니다.
{@$content_ = $oDocument->getContent(false)}
<!--@if($module_info->autoreplace_use == 'Y')-->
{@
$pregs = explode("\n", $module_info->autoreplace_text);
print_r($pregs);
}
<!--@else-->
{$content_}
<!--@end-->
우선 잘 되는지 확인해 봅시다. 설정을 '사용'으로 바꾸고 아래 내용을 넣어봅시다.
"/스킨/", "<a href=\"#\">$0</a>"
"/위젯/", "<a href=\"#\">$0 !</a>"
잘 됐다면
이렇게 본문 대신 이게 뜰겁니다.
그리고 업그레이드를 해줍니다.
정말로 치환이 잘 되도록 말이죠.
{@$content_ = $oDocument->getContent(false)}
<!--@if($module_info->autoreplace_use == 'Y')-->
{@
$pregs = explode("\n", $module_info->autoreplace_text);
$items = array();
foreach($pregs as $key=>$val)
preg_match_all("/\"(.+)\"(?:\s*?),(?:\s*?)\"(.+)\"(?:\s+?|)/", $val, $items[$key]);
foreach($items as $key=>$val)
$content_ = preg_replace($val[1], $val[2], $content_);
}
{$content_}
<!--@else-->
{$content_}
<!--@end-->
그럼 어떻게 됐을까요?
크으~ 완성되었습니다. 제대로 변경되고 있는게 보이시나요? 매번 소스코드 고치기 힘드니까 설정으로 빼보도록 해요.
댓글 11
배포하고 있는 게시판 스킨에 적용해도 될까요?ㅎㅎ
그럼요!
Special Thanks To 정도면 . . . (안해도 돼요)
skin.xml 추가항목은 그대로 복붙했고요,
스킨 설정에 생성된 자동치환 기능 설정하고 라라펠님이 올려주신 소스
"/스킨/", "<a href=\"#\">$0</a>"
"/위젯/", "<a href=\"#\">$0 !</a>"
를 넣었는데 그 이후 본문에 변화가 없네요 ㅠㅠ
혹시나 해서 _read.html 원본가져다가 중간 버전, 업그레이드 버전도 한번씩 넣어봤는데 안되는 것 같습니다ㅠㅠ
계속 질문해서 죄송합니다 ㅠㅠ
감사합니다!
이제 게시판마다 설정만 하면 되겠네요! 설레네요 ㅎㅎ