https://dumpcookie.tistory.com/entry/XE-%EA%B2%8C%EC%8B%9C%ED%8C%90%EC%9A%A9-%EC%9C%84%ED%82%A4-URL-%EB%A7%A4%ED%95%91-%EC%95%A0%EB%93%9C%EC%98%A8

 

문제가 된 애드온입니다.

 

<?php

if (!defined('__XE__') && !defined('__ZBXE__')) exit();

/**
 * @author  wkpark ([email protected])
 * @file    urlmapping.addon.php
 * @date    2012-05-09
 * @version 0.1
 * @brief   UrlMapping add-on
 */

if ($called_position != 'before_display_content' || Context::getResponseMethod() !== 'HTML') return;
if (isCrawler()) return;

if (Context::get('act') == 'dispBoardWrite' || Context::get('act') == 'dispBoardModifyComment' || Context::get('act') == 'dispAddonAdminSetup')
return;

$wiki_main = $addon_info->wikiurl;
if (empty($wiki_main) or !preg_match('@^https?://@', $wiki_main))
//$wiki_main = 'http://ko.wikipedia.org/wiki/';
$wiki_main = 'http://rigvedawiki.net/r1/wiki.php/';

$url_mappings = array();
$rules = array();
$url_mapping_rule = '';
if ($addon_info->use_urlmapping != 'N') {;
$urlmap = trim($addon_info->urlmapping);
$urlmaps = explode("\n", $urlmap);

foreach ($urlmaps as $map) {
if (preg_match('/^wiki|https?|ftp|mailto/', $map)) {
$url = trim(strtok($map,' '));
$val = strtok('');
$url_mappings[$url] = trim($val);
$rules[] = preg_quote($url, '/');
}
}
if (count($rules) > 0)
$url_mapping_rule = implode('|', $rules);
}

// split into chunks
$chunks = preg_split('/(<[^>]+>)/', $output, -1, PREG_SPLIT_DELIM_CAPTURE);

for ($i = 0; $i < count($chunks); $i++) {
if ($i % 2) {
if (preg_match('/^<a\s/', $chunks[$i])) $is_link = true;
else $is_link = false;
} else {
if (!$is_link)
         $chunks[$i] = preg_replace('/\[\[([^]]+)\]\]/e', '"[[".'.
                         '"<a href=\''.$wiki_main.'".urlencode("$1").'.
                         '"\'>$1</a>]]"', $chunks[$i]);
}
}

$output = implode('', $chunks);

// URL remapping
if (!empty($url_mapping_rule))
$output = preg_replace('/('.$url_mapping_rule.')/ie',"\$url_mappings['\\1']", $output);

/* End of file urlmapping.addon.php */
/* Location: ./addons/urlmapping/urlmapping.addon.php */

 

소스코드는 그냥 이 코드 한 파일만 되어 있는데 if (!defined('__XE__') && !defined('__ZBXE__')) exit(); 부분을 if (!defined("__XE__")) exit();로 바꿔도 증상이 여전합니다.

 

혹시 호환성 문제 봐드릴 사람 있나요?

  • profile
    무슨 글자가 언제 어떻게 날라가나요?
    1. 원래 A라는 일이 일어나야 한다
    2. 그런데 B라는 일이 일어난다
    정도는 육하원칙에 맞게 써주셔야 소스를 봐도 의미가 있지요.
  • profile profile

    모든 글자 날라감.png.jpg원래 예를 들어 [[나무위키]]라고 본문에 입력할 시에 아까 언급했던 부분이 링크처리가 됩니다. 그러나 라이믹스 최신 버전에는 의도대로 작동하기는 커녕 이렇게 글자가 날라갑니다. 글자가 날라가다 보니 프로덕션에 적용하기에는 불가능 합니다. 레이아웃은 심플스트랩 쓰고 게시판 스킨은 스케치북 개량해서 씁니다.