미디어위키 ISBN 직접 링크

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 }}