코어에서 만들어내는 함수나 변수 등을 이용할때 특히 다른 곳에서 많이 호출해서 사용하게 되는 변수의 경우 사용을 주의 해야 합니다.
현재 열람되고 있는 문서 정보를 담고 있는 $oDocument 의 경우 특히 많은 애드온등에서 현재 페이지가 문서의 열람 페이지 인지 그렇다면 어떤 문서번호를 가지고 있고 제목은 무어며 내용은 무엇인지 등의 현재 문서의 정보를 여기에 담긴 것을 가지고 파악하게 됩니다.
그런데 애드온 등에서 $oDocument 변수를 사용해서 다른 정보를 담아 버리게 되면 이 정보가 덮어씌워지면서 다른 자료에서 현재의 문서가 아닌 엉뚱한 다른 문서의 정보를 가져오게되어 다른 정보를 제공하게 하는 오류를 발생시킬 수 있습니다.
이번에 발견한 자료는 태그 연관글 애드온 입니다.
$oDocument 변수가 스킨에 사용되면서 이 애드온 보다 늦게 실행되는 다른 애드온에서 태그 연관글 애드온이 마지막으로 덮어 씌운 $oDocument 정보를 현재 문서정보로 가져가게 되는 문제를 야기 합니다.
태그 연관글 애드온의 스킨 index.html 을 열어 보시면
문서내 포함된 태그와 관련된 다른 글의 목록을 가져와서 그 목록을 반복 출력하는 코드가 있습니다.
<!--@foreach($rxp_tag_related_document_list as $oDocument)-->
<!--@endforeach-->
이런 부분이 보일겁니다. 라이믹스용이 아닌 경우는 rxp_ 이부분은 안보일거구요.
$oDocument 안에 여러개의 문서의 정보가 모두 담기게 되었고 저 반복문이 실행되고 난 후 마지막 문서가 다른 애드온에서
$oDocument 을 이용하려고 할때 저기의 정보의 담긴 다른 문서 정보를 가져가데 되는 상황입니다.
$oDocument 을 모두 다른 변수로 변경해 주셔야 합니다. 예를 들면 $item 등 코어 특히 문서모듈에서 생성되어 여러 자료에서 열어보게 되는 변수가 아닌 변수로 사용해야 합니다.
반복문 안에도 $oDocument 가 많이 등장하니 똑같이 모두 바꾸어주어야 반복문 안에서 정보가 제대로 확인이 되겠죠?
반복문 안의 $oDocument 도 같은 변수명으로 똑같이 다 바꾸어 주어야 합니다.