태그 연관글 애드온이 태그를 사용하는 곳에서 관련된 글을 추가로 추천해 주기 좋아 즐겨 사용하고 있는데 원인을 찾기 어려운 버그 같은게 있습니다. 오늘 처리한 부분은 원글에 태그가 없는 글인데 관련된 글 목록이 출력이 되어 버립니다.
이게 모두 그런것도 아니라 원인을 찾기 어려워서 원인은 못찾고 태그가 없는 글은 원천적으로 애드온 실행을 중지 하는 것으로 해결을 해 보았습니다.
태그연관글 애드온의 경우
addon.php 에서 출력위치와 애드온 변수 정도를 결정하고
실제 문서의 태그와 연관된 글을 수집하는 것은 lib.php 파일에서 담당을 합니다.
addon.php 파일에서 lib.php 파일을 불러오는 형식입니다.
그런데 태그가 없는 문서는 작업을 중단하는 코드가 있는데 이게 어떤 글에서는 그냥 엉뚱한 글이 수집이 되어 버리는데 함수들이 복잡하게 엮여 있어 원인을 찾기 어렵네요.
그래서 lib.php 에서 문서에 태그가 없는 경우 리턴 시키는 작업을 그대로 addon.php 에도 적용해 주어서 태그가 없는 문서는 아예 lib.php 를 불러오는 것은 물론 애드온 자체가 실행이 되지 않게 해주었습니다.
기존에
if ($called_position !== 'before_display_content') {
return;
}
// 변수 정리
이렇게 진행되는 상단부분의 코드에
if ($called_position !== 'before_display_content') {
return;
}
$document_srl = Context::get('document_srl');
if (!$document_srl) {
return;
}
$oDocumentModel = getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl);
$tags = $oDocument->get('tags');
// 태그가 없으면 종료
if (!$tags) {
return;
}
$tag_list = explode(',', $tags);
if (!count($tag_list)) {
return;
}
// 변수 정리
위와 같이 태그가 없는 경우 리턴하는 코드를 작성해 주어 태그가 없으면 이후 코드가 아예 진행되지 않도록 해서 따로 관련글을 수집하는 함수가 있는 파일 로딩 자체도 안되고 아무것도 하지 않게 조치 했습니다.
*문서에 태그가 있는지 확인하는 코드는 애드온에서 이미 사용한 코드 그대로를 차용했습니다.