"미디어위키 ISBN 직접 링크"의 두 판 사이의 차이

잔글 (봇: 자동으로 텍스트 교체 (-source +syntaxhighlight))
 
(사용자 2명의 중간 판 10개는 보이지 않습니다)
7번째 줄: 7번째 줄:
*코어부분에 구현되어 있어 미디어위키 소스를 수정해야 한다.
*코어부분에 구현되어 있어 미디어위키 소스를 수정해야 한다.


==Parser.php 수정==
==(MW 1.25) Parser.php 수정==
*w/includes/parse/Parser.php 파일을 수정
*w/includes/parse/Parser.php 파일을 수정
*알라딘 서점으로 연결한 예시
*알라딘 서점으로 연결한 예시
<source lang='php'>
<syntaxhighlight lang='php' highlight='10-13'>
# ISBN
# ISBN
$isbn = $m[6];
$isbn = $m[6];
20번째 줄: 20번째 줄:
'x' => 'X',
'x' => 'X',
) );
) );
/* 2015-09-13 replace to aladin - jmnote
$titleObj = SpecialPage::getTitleFor( 'Booksyntaxhighlights', $num );
$titleObj = SpecialPage::getTitleFor( 'Booksources', $num );
return '<a href="' .
return '<a href="' .
htmlspecialchars( $titleObj->getLocalURL() ) .
htmlspecialchars( $titleObj->getLocalURL() ) .
"\" class=\"internal mw-magiclink-isbn\">ISBN $isbn</a>";
"\" class=\"internal mw-magiclink-isbn\">ISBN $isbn</a>";
*/
</syntaxhighlight>
<syntaxhighlight lang='php' highlight='10-13'>
# 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>";
</syntaxhighlight>
:→ <code>$isbn</code>은 사용자가 입력한 값에서 공백을 제거한 값
:→ <code>$num</code>은 숫자만 추출한 것
:→ 국내도서는 알라딘으로, 외국도서는 아마존으로 연결함
 
==(MW 1.28) Parser.php 수정==
*w/includes/parser/Parser.php 파일을 수정
*알라딘 서점으로 연결한 예시
<syntaxhighlight lang='php' highlight='11-18'>
# 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
]
);
</syntaxhighlight>
<syntaxhighlight lang='php' highlight='11-14'>
# 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 )  
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.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>";
return "<a href='http://www.amazon.com/gp/search/?field-isbn=$num' class='external' target='_blank'>ISBN $isbn</a>";
</source>
</syntaxhighlight>
:→ <code>$isbn</code>은 사용자가 입력한 값에서 공백을 제거한 값
:→ <code>$isbn</code>은 사용자가 입력한 값에서 공백을 제거한 값
:→ <code>$num</code>은 숫자만 추출한 것
:→ <code>$num</code>은 숫자만 추출한 것
36번째 줄: 89번째 줄:
==테스트==
==테스트==
* 입력
* 입력
<source lang='text'>
<syntaxhighlight lang='text'>
국내도서 예시 ISBN 9788996991342
국내도서 예시 ISBN 9788996991342
외국도서 예시 ISBN 9784478025819
외국도서 예시 ISBN 9784478025819
</source>
</syntaxhighlight>
* 출력
* 출력
:국내도서 예시 ISBN 9788996991342
:국내도서 예시 ISBN 9788996991342
48번째 줄: 101번째 줄:
*[[ISBN 국내도서, 외국도서 구별]]
*[[ISBN 국내도서, 외국도서 구별]]


==참고 자료==
==참고==
*https://www.mediawiki.org/wiki/Manual:ISBN
*https://www.mediawiki.org/wiki/Manual:ISBN


[[분류: 미디어위키]]
[[분류: 미디어위키]]
[[분류: 책]]
[[분류: 책]]
[[분류: Zetawiki]]
[[분류: ISBN]]

2020년 11월 2일 (월) 00:56 기준 최신판

1 개요[ | ]

미디어위키 ISBN 직접 링크
  • 미디어위키는 기본적으로 ISBN XXXXXXXX를 다음과 같은 자체링크(특수:책찾기[1])로 연결한다.
http://zetawiki.com/wiki/특수:책찾기/9788996991342
  • 직접 다른 사이트로 연결하도록 하고 싶다.
  • 코어부분에 구현되어 있어 미디어위키 소스를 수정해야 한다.

2 (MW 1.25) Parser.php 수정[ | ]

  • w/includes/parse/Parser.php 파일을 수정
  • 알라딘 서점으로 연결한 예시
			# 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>";
			# 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 파일을 수정
  • 알라딘 서점으로 연결한 예시
			# 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
				]
			);
			# 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 테스트[ | ]

  • 입력
국내도서 예시 ISBN 9788996991342
외국도서 예시 ISBN 9784478025819
  • 출력
국내도서 예시 ISBN 9788996991342
외국도서 예시 ISBN 9784478025819

5 같이 보기[ | ]

6 참고[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}