애드온 개발자분께서 바쁘신지 처리가 안되고 있어 도움을 요청드립니다.
https://github.com/wincomi/xe-to-sns/issues/4
애드온 특성상 글을 수정할때 마다 같은 글이 트위터로 계속 발행되면 안되는 상황인데 글 수정시 고려가 안되어 있는데요.
제 능력으로는 고쳐보려고 해도 XE특성상 글 수정과 새글작성 구분이 쉽지많은 않은 구조로 되어 있는 듯 합니다.
능력자분들 고쳐주시면 애드온 이용자들에게 큰 도움이 될 것 같습니다.
댓글 39
버전 확인해보시고 https://xe1.xpressengine.com/index.php?mid=download&package_id=21933112 여기서 다운받으셔서 다시 설정해 보세요.
작성한지 얼마 안된 글을 수정했을때 발행이 안되는 것은 아마 트위터에서 자체적으로 막는 것 인듯 하구요. 일정 시간 지난 게시글을 수정하면 다시 트위터로 같은 글이 등록됩니다.
애드온 자체에서는 글 수정시 고려는 안되어 있습니다.
해당값이 있으면 return 처리하면 될 것 같은데...
#1 코드 정리
#2 애드온 설정이 없을 때 return 문제
#3 첨부파일이 있는 글의 정보를 가져올 수 없는 문제
act값이나 그 밖에 특정 변수를 사용해서 쌈박하게 구분할 수 있으면 편리할 텐데
작성과 수정에 동일한 act를 사용하는 바람에 여러 사람 고생하죠...
$document_srl = Context::get('document_srl');
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if($oDocument->isExists() && $oDocument->get('status') !== 'TEMP')
{
// 수정
}
else
{
// 신규작성
}
심지어 코어에서도 이 구분이 제대로 되지 않아서
파일을 첨부한 글의 목록 순서가 꼬이거나 하는 부작용이 발생하곤 합니다.
(라이믹스는 괜찮아요 ㅋㅋ)
근데 새글에서 첨부를 할경우도 새글로 인식이 되는건가요?
$oDocument->get('status') !== 'TEMP'
요게 핵심이었군요. 새글에서 파일첨부시 문서번호가 할당되지만 상태가 아직은 임시!
댓글 참고하여 수정하도록 하겠습니다!
https://xe1.xpressengine.com/index.php?mid=download&package_id=21933112
@웹지기 @이브이
제가 이슈를 어떻게 남기는지 몰라서 댓글로 남깁니다. 새로운 자료를 받아서 덮어씌우기 했더니 홈페이지가 백지화가 되서 기존 폴더를 아예 삭제하고 다시 새로운 자료를 업로드했거든요. 그래도 똑같은 현상(백지)이 반복되어서 기존 자료로 재업로드했습니다. 그러니까 또 잘되네요. 왜 안됐는지 원인은 모르겠어요. 참고로 xe 사용중이고 아직 1.8.43 버전입니다.
방금 설치 후 확인해 보았습니다.
사이트에 올렸던 며칠 전 글을 수정해보았는데 sns에 글이 복사되지 않더군요!
근데 사이트에 새로 글을 써도 sns에 등록되지 않았습니다~ㅠㅠ
늦었지만 말씀하신 문제를 수정했습니다. 혹시 확인해보시겠어요?
https://xe1.xpressengine.com/index.php?mid=download&package_id=21933112
https://github.com/wincomi/xe-to-sns/blob/master/to_sns.addon.php
이 파일에서
if($oDocument->isExists() && $oDocument->get('status') !== 'TEMP') {
return;
}
일단 이 부부분을 제거하고 사용해주세요. 수정한 글은 작동하지 않도록 하는 코드인데요. 새로운 글 쓰기일 때도 이 조건이 걸리는 것 같습니다. 이 코드를 삭제하면 수정할 때도 작동이 될텐데 만약 이 코드를 삭제해도 작동되지 않는다면 트위터 API 설정을 한번 확인해보시면 감사하겠습니다.
저는 실사용 사이트라 테스트를 해드리긴 어려운데요.(제가 수정해서 지금 정상동작 하고 있어서요..)
$document_srl = Context::get('document_srl');
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
if($oDocument->isExists() && $oDocument->get('status') !== 'TEMP') return;
저희는 이렇게 그냥 아예 위쪽에서 리턴 시키고 있습니다.
반영된 코드와 다른점은 저흰 $document_srl = Context::get('document_srl'); 이렇게 사용한 부분이 있습니다.
위에 @기진곰이 알려주신 것이 있어서 저는 그대로 적용해서 사용하고 있는 것 이구요.
$document_srl = $this->get("document_srl");
를
$document_srl = Context::get('document_srl');
로 한번 바꾸고 테스트해보시겠어요?
그리고 혹시 환경이 XE인지 라이믹스인지 궁금합니다!