XpressEngine에 관련 내용에 대해서 이야기 합니다.
저는 익스프레스엔진 홈페이지 자유게시판에 글을 올렸던 "졸라맨" 이라고 합니다.
신디케이션 관련 문의글을 올렸는데 답변을 달아주셔서 정말 감사드립니다.(__)꾸벅
님의 정보를 보다가 이쪽 홈페이지를 알게 되어서 문의글 한번 남겨봐요..
XE홈피에도 글을 남겼다시피 제가 DB에다가 직접 컨텐츠를 삽입을 하기 때문에 신디케이션 작동을 못하고 DB에 글을 넣어버려요. 그래서 신디케이션 작동이 안되 네이버 검색에 반영이 안됩니다.
답변을 달아주셨지만 잘 모르겠어요. 좀더 구체적으로 어떻게 해야 신디케이션 작동을 할수 있을까요?
제가 XE 게시판에 DB로 넣을때는 아래오 같습니다.
<?
$a = "제목";
$b= "컨텐츠";
$a="insert into ~~~";
mysql_query($a);
?>
위와 같은 형태로 이루어진 파일을 실행하여 직접 게시판에다가 컨텐츠를 넣는 식이에요.
그렇다면 위에처럼 직접 ,DB에 넣을때 신디케이션을 작동하여 네이버 검색에 반영시킬려면 어떡해 해야 하나요..??
구체적으로 설명좀 부탁드려요......
^^;
졸라맨
- 2010.03.12
- 14:16:13
- (*.197.130.224)
라르게덴님 정말 정말 감사드립니다....^^
이렇게 친절하게 답변주실줄은 정말 몰랐어요..
그런데 염치불구하게도 재문의를 한번더 해야만 할것 같아서여.;;
사실 제가 이제 php막 입문한 초보라서 프로그램을 아직 잘 몰라여...ㅡ.,ㅡ;;
바쁘시고 귀찮기도 하시겠지만,,, 한번만 더 부탁드리겠습니다.(__);;;;
아참,, 그리고 제가 만드는거는 외부페이지로 만드는거에요... Xe 코어를 로드해야 해요..
질문 1.)
define("_XE_PATH_", str_replace("파일명.php", "", str_replace("\\", "/", __FILE__)));
위에서 "파일명.php"는 어떤걸 의미하는거에요..? "config/config.inc.php" <--이걸 넣으면 오류가 나더라구요.. 밑에 require_once(_XE_PATH_."config/config.inc.php"); 를 빼면 오류가 안나긴 하지만.. "파일명.php"에는 어떤걸 넣어줘야 하나요..??
질문2)
위 동작으로 진행 후 insert into에 들어갈 내용을 $obj->a, $obj->b.. 등으로 담으시고 아래를 호출...
insert into에 들어갈 내용을 $obj->a,나 $obj-b로 담으라구 하셨는데 이게 어떤말인지 잘 모르겠어요.;;; ㅎㅎ;;
제가 아래처럼 해봤는데 오류가 나드라구요...
$oDB = &DB::getInstance();
$oDB->_query("insert into xe_documents values ($document_srl,'12675','0','ko','N','N','$title2','N','N','$content','0','0','0','0','0','0','','judaq','judaq','judaq','4','arrest82@naver.com','','','N;',$now,$now,'NULL','0.0.0.1',$list_order,$update_order,'Y','N','Y','N','null','null')");
if($oDB->isError()) return false;
}
//위 동작으로 진행 후 insert into에 들어갈 내용을 $obj->a, $obj->b.. 등으로 담으시고 아래를 호출...
$obj="insert into xe_documents values ($document_srl,'12675','0','ko','N','N','$title2','N','N','$content','0','0','0','0','0','0','','test','test','test','4','testtest@testcom','','','N;',$now,$now,'NULL','0.0.0.1',$list_order,$update_order,'Y','N','Y','N','null','null')";
$oSyndicationController = &getController('syndication');
$oSyndicationController->triggerInsertDocument($obj);
라르게덴
- 2010.03.12
- 18:23:50
- (*.234.236.218)

위 내용에서 파일명만 쓰시면 되고
xe폴더 안에 특정 폴더에 담았다면
특정폴더/특정/파일명.php
xe폴더 안이 아닌 다른 곳이라면
안됩니다. 차라리
define("_XE_PATH_", str_replace("\\", "/", "/App/htdocs/xe/"));
define("_XE_PATH_", str_replace("\\", "/", "C:\Inetpub\htdocs\xe\"));
이런식으로 윈도우나 리눅스의 절대경로를 적어주세요.
저는 xe/modules/nms/nms.socket.php 에서 해당 내용을 처리하기 때문에 그 파일안에서 아래의 설정을 했습니다.
define("_XE_PATH_", str_replace("modules/nms/nms.socket.php", "", str_replace("\\", "/", __FILE__)));
__FILE__ 은 실제 실행중인 파일을 불러오는 내용이니 /Applications/MAMP/htdocs/xe/modules/nms/nms.socket.php 를 불러오게 되었고요 거기서 modules/nms/nms.socket.php을 제거하니 /Applications/MAMP/htdocs/xe/ 이것이 절대경로로 설정되어지게 됩니다.
죄송하지만 이후부터 기본적인 프로그램 방법론의 질문은 삼가해주세요. 답변 안달아드릴거에요 ^^ 공부하세요.
죄송한 말씀이지만 님의 질문은 저보고 만들어달라고 하시는 것 같아서 조금 그러네요.
일단 위 문구를 어디서 어떤식으로 넣으시는지 자초지정을 모르기에 제가 생각하는 가지가지의 수를 다 읊을 수 밖에 없습니다.
답변하기 힘든 질문을 써주셨네요.
1. XE안에서(모듈이나 애드온 기타 페이지 상에서) 동작하시는 기능인가
$oDB->_query("insert into ~~~");
if($oDB->isError()) return false;
위 동작으로 진행 후 insert into에 들어갈 내용을 $obj->a, $obj->b.. 등으로 담으시고 아래를 호출...
$oSyndicationController = &getController('syndication');
$oSyndicationController->triggerInsertDocument($obj);
그 외는 형식에 맞게 수정이면 수정, 삭제면 삭제 등 해당 기능을 수행하시고 신디케이션의 관련 함수를 호출...
2. XE안이 아니라면
애초에 별도로 진행하시는게 XE를 이용하는게 아닌 다른 php나 다른 곳에서의 내용에다가 단지 DB에 삽입을 위한거라면 직접 구현해보시는 방법뿐이 없습니다.
XE Core를 해당 단독 파일에 로드는
define("_XE_PATH_", str_replace("파일명.php", "", str_replace("\\", "/", __FILE__)));
define("__ZBXE__", true);
require_once(_XE_PATH_."config/config.inc.php");
이렇게 작업하시고 위 1번 구문을 실행 후 각 내용을 로드하세요