✔️ 미디어위키 1.25에서 테스트하였습니다.
1 개요[ | ]
- 미디어위키 ISBN 직접 링크
- 직접 다른 사이트로 연결하도록 하고 싶다.
- 코어부분에 구현되어 있어 미디어위키 소스를 수정해야 한다.
2 (MW 1.25) Parser.php 수정[ | ]
- w/includes/parse/Parser.php 파일을 수정
- 알라딘 서점으로 연결한 예시
PHP
Copy
# ISBN
$isbn = $m[6];
$space = self::SPACE_NOT_NL; # non-newline space
$isbn = preg_replace( "/$space/", ' ', $isbn );
$num = strtr( $isbn, array(
'-' => '',
' ' => '',
'x' => 'X',
) );
$titleObj = SpecialPage::getTitleFor( 'Booksyntaxhighlights', $num );
return '<a href="' .
htmlspecialchars( $titleObj->getLocalURL() ) .
"\" class=\"internal mw-magiclink-isbn\">ISBN $isbn</a>";
PHP
Copy
# ISBN
$isbn = $m[6];
$space = self::SPACE_NOT_NL; # non-newline space
$isbn = preg_replace( "/$space/", ' ', $isbn );
$num = strtr( $isbn, array(
'-' => '',
' ' => '',
'x' => 'X',
) );
#### 2015-09-13 replace to aladin - jmnote
if( in_array(substr($num,0,5),array(97889, 97911)) || substr($num,0,2)==89 )
return "<a href='http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=$num' class='external' target='_blank'>ISBN $isbn</a>";
return "<a href='http://www.amazon.com/gp/search/?field-isbn=$num' class='external' target='_blank'>ISBN $isbn</a>";
- →
$isbn
은 사용자가 입력한 값에서 공백을 제거한 값 - →
$num
은 숫자만 추출한 것 - → 국내도서는 알라딘으로, 외국도서는 아마존으로 연결함
3 (MW 1.28) Parser.php 수정[ | ]
- w/includes/parser/Parser.php 파일을 수정
- 알라딘 서점으로 연결한 예시
PHP
Copy
# ISBN
$isbn = $m[6];
$space = self::SPACE_NOT_NL; # non-newline space
$isbn = preg_replace( "/$space/", ' ', $isbn );
$num = strtr( $isbn, [
'-' => '',
' ' => '',
'x' => 'X',
] );
$this->addTrackingCategory( 'magiclink-tracking-isbn' );
return $this->getLinkRenderer()->makeKnownLink(
SpecialPage::getTitleFor( 'Booksyntaxhighlights', $num ),
"ISBN $isbn",
[
'class' => 'internal mw-magiclink-isbn',
'title' => false // suppress title attribute
]
);
PHP
Copy
# ISBN
$isbn = $m[6];
$space = self::SPACE_NOT_NL; # non-newline space
$isbn = preg_replace( "/$space/", ' ', $isbn );
$num = strtr( $isbn, [
'-' => '',
' ' => '',
'x' => 'X',
] );
$this->addTrackingCategory( 'magiclink-tracking-isbn' );
#### 2017-05-17 replace to direct link to bookstore - jmnote
if( in_array(substr($num,0,5),array(97889, 97911)) || substr($num,0,2)==89 )
return "<a href='http://www.aladin.co.kr/shop/wproduct.aspx?ISBN=$num' class='external' target='_blank'>ISBN $isbn</a>";
return "<a href='http://www.amazon.com/gp/search/?field-isbn=$num' class='external' target='_blank'>ISBN $isbn</a>";
- →
$isbn
은 사용자가 입력한 값에서 공백을 제거한 값 - →
$num
은 숫자만 추출한 것 - → 국내도서는 알라딘으로, 외국도서는 아마존으로 연결함
4 테스트[ | ]
- 입력
text
Copy
국내도서 예시 ISBN 9788996991342
외국도서 예시 ISBN 9784478025819
- 출력
- 국내도서 예시 ISBN 9788996991342
- 외국도서 예시 ISBN 9784478025819
5 같이 보기[ | ]
6 참고[ | ]
편집자 Jmnote Jmnote bot
로그인하시면 댓글을 쓸 수 있습니다.