1. 애드온에서 html 불러오기
Context::addHtmlFooter(sprintf(file_get_contents($this_addon_path.'eondGrayScreen.html')));
애드온에서 html 을 푸터에 이런 식으로 불러와봤습니다. (여기까진 잘한 거 맞나요?;;)
2. 불러온 eondGrayScreen.html에서
<load target="./lang/" />
{$lang->convert} {Context::getLang('convert')}
이런 식으로 써줘봤지만 그냥 그대로 출력이 되더라구요.
애드온에서 html 을 불러와서 사용할 경우 XE의 php코드가 동작하는 방식인 {...} 가 동작하지 않는 것 같았습니다.
이렇게 할 경우는 해당 코드가 동작하지 않나요?
3. 그래서 그냥 addon.php 파일에서 그대로 html을 작성함.
Context::loadLang($this_addon_path.'lang');
Context::addHtmlFooter(sprintf('<div class="eondGrayScreen"><button class="btn-eondGrayScreen">'.Context::getLang("convert").'</button></div>'));
그냥 이런 식으로 lang 파일을 추가하고, Context:getLang() 으로 불러오긴 했습니다만...
2의 방법은 영 잘못된 건가요?
4. 그리고 애드온에서
$addon_path 라는 변수를 사용할 경우, 오류가 발생하더라구요. -_-;;

eond
Lv. 13
# 라이믹스 스킨 제작은 어디? >>>> XE 레이아웃, 라이믹스 스킨제작은 이온디에서 커스터마이징해드립니다.
# 빠른 라이믹스 커뮤니티용 호스팅을 찾고 계신가요? >>>> 이온디호스팅 서비스는 PHP8 & Redis 서버 캐시를 활용하여 라이믹스에 최적화된 호스팅 서비스를 제공해드립니다. (서버세팅시 웹패널, 내도메인메일서비스도 함께 구축해드립니다.)
https://eond.com
# 빠른 라이믹스 커뮤니티용 호스팅을 찾고 계신가요? >>>> 이온디호스팅 서비스는 PHP8 & Redis 서버 캐시를 활용하여 라이믹스에 최적화된 호스팅 서비스를 제공해드립니다. (서버세팅시 웹패널, 내도메인메일서비스도 함께 구축해드립니다.)
https://eond.com
댓글 4
html 파일 내용을 불러와서 어떠한 변환도 거치지 않고 그대로 출력하라고 명령을 내렸으니, 컴퓨터는 명령대로 따를 뿐이지요. (1번에서 sprintf는 왜 들어갔는지 모르겠지만...) XE 문법을 변환하려면 반드시 XE에서 제공하는 TemplateHandler를 거쳐야 합니다.
lang을 로딩할 때는 굳이 html에 의존하지 않고 Context::loadLang()을 직접 호출하는 것이 좋긴 합니다. 그러면 html뿐 아니라 애드온 자체에서도 자유롭게 사용할 수 있으니까요. 그리고 어차피 한 줄짜리라면 굳이 TemplateHandler를 거치는 것보다 그냥 저렇게 쓰는 것이 빠릅니다. 저 정도 기능이라면 저라도 3번처럼 구현하겠어요.
$addon_path는 원래 없는 변수입니다. 절대경로가 필요하면 __DIR__ 상수를 쓰면 되고, 상대경로가 필요하면 애드온 만든 사람이 자기 애드온 경로를 제일 잘 알 테니 (./addons/애드온이름) 변수가 필요하지 않지요.
경로가 길어서 여러번 써주기가 번거로워서 그랬습니다.;;
lang은 html이 아닌 애드온에서 직접 불러오는 걸로!;
TemplateHandler 방법은 잘 모르겠지만. 일단 짧게는 저 정도로 마무리하는 걸로 ㅠ;
사용자마다 스킨을 나중에 사용할 수 있게 해볼려고 했는데 이 정도로 해야겠습니다.
----------------------------------------------------------------------------------------------
<?php
/**
* @file eondGrayScreen.addon.php
* @brief 화면흑백전환애드온
* @author 이온디(eond@eond.com)
*/
if(!defined('__XE__'))
exit();
if($called_position=="before_display_content")
{
// execute addon (before module initialization)
// $oAddonController = &getController('addon');
// $addon_file = $oAddonController->getCacheFilePath(Mobile::isFromMobilePhone()?'mobile':'pc');
// @include($addon_file);
// $message = $position.'\n'.'Module : '.$this->module.'\n'.'Mid : '.$this->mid.'\n'.'Act : '.$this->act.'\n'.'Module_srl : '.$this->module_srl.'\n'.'Document_srl : '.$this->document_srl;
// $script = sprintf('<script type="text/javascript"> xAddEventListener(window,"load", function() { alert("%s"); } );</script>', $message);
// $called_position = 'Before_display_content now runs.';
// Context::addHtmlFooter(sprintf(file_get_contents($this_addon_path.'eondGrayScreen.html')));
//
$path_addon = './addons/eondGrayScreen/assets/';
Context::loadLang($path_addon.'lang');
Context::addCSSFile($path_addon.'eondGrayScreen.css');
Context::loadFile(array($path_addon.'eondGrayScreen.js', 'body', '', null), true);
Context::loadFile(array('//cdn.rawgit.com/carhartl/jquery-cookie/master/src/jquery.cookie.js', 'body', '', null), true);
Context::addHtmlFooter('<div class="eondGrayScreen"><button class="btn-eondGrayScreen">'.Context::getLang("conversion").'</button></div>');
}
언어별로 기본적으로 동작하는 거고
HTML 코드를 기본적으로 출력하고,
CSS랑 JS를 같이 출력해주니깐...
왠만한 건 이런 식으로 만들 수가..^^;
또 해보고 싶은게..
HTML, CSS도 사용자가 추가할 경우 그게 선 적용되도록 하고..