$logged_info->profile_image는 기본으로 세팅되는 변수가 아닌 것으로 기억합니다.
아마 예전에는 위와 같은 코드를 변수를 만들어 사용하는 애드온이나 모듈 등 서드파티 자료가 있었는데
최근에 해당 자료의 사용을 중단하셨거나, 해당 자료가 업데이트되어
내부적으로 사용하는 변수명이 바뀌어서 안 되고 있을 가능성이 높아 보입니다.
&는 10년 전의 적폐(?)이니 더이상 필요없고요, 더 줄여서 쓰시려면
{getModel('member')->getProfileImage($logged_info->member_srl)->src}
이렇게 한 줄로 하셔도 되긴 합니다 ^^
다른 댓글에서 말씀드린 것처럼 템플릿에서 사용하는 변수는 자동으로 Context와 연동됩니다. 컴파일된 결과물을 열어보시면 모조리 Context를 참조하도록 되어 있어요.
예: Context::set('webzigi', 1234); 해놓고 템플릿에서 {$webzigi} 하면 1234라고 나옵니다.
"이상적"인 상황은 아닙니다만 (아마 예전에 register_globals를 사용하여 모든 변수를 전역변수로 만들던 시절의 느낌을 살리고 싶어셨던 모양입니다) XE 템플릿 시스템이 이렇게 만들어진 지 워낙 오래되었기 때문에 굳이 "정상적"이냐고 물을 필요는 없을 것 같아요. XE 템플릿 시스템을 처음 개발하신 분들의 의도대로인 것은 맞습니다.
이런 코드가 있다면 두개의 $myname 변수는 별개의 변수 입니다. 하단의 템플릿 문법은 php실행시 $__Context->myname으로 인식하기 때문입니다.
즉 최종 php실행시 하나는 $myname, 또하나는 $__Context->myname의 변수로 별개로 취급됩니다.
Context::get('logged_info') 이걸 풀어보면 xe에서만 사용하는 변수 $__Context->logged_info를 가져와라 정도(?) 입니다만...
템플릿 문법에서 $logged_info는 이미 $__Context->logged_info로 해석되기 때문에 무의미 하다고 봅니다.
댓글 24
프로필 이미지가 있습니다. 제가 로그인 했는데 unknown 으로 나옵니다.
프로필 이미지가 없을 경우 대비도 해서 더미 프로필이미지로 지정했는데 모두 더미가 나옵니다.
디버깅을 위해 $logged_info를 출력해서 변수 세팅이 잘되어 있는지 확인 해 보세요.
{@ $logged_info = Context::get('logged_info');}
이게 적혀있는 부분이 없는데 저게 없어서 그런걸까요??
따라서 둘을 구분하여 사용할 필요는 없습니다.
출력되는 곳은 게시판 보드 스킨입니다. _read.html , _comment_write.html 파일 두곳 모두 코드를 넣어도 출력이 안되네요.
레이아웃에 넣어도 출력이 안되네요.
$oMemberModel = &getModel('member');
$profile_image = $oMemberModel->getProfileImage($logged_info->member_srl);
}
{$profile_image->src}
일단 이렇게 하면 프로필이미지주소를 불러오네요.....
본문에 코드는 왜 안되는건지... php5 쓸때는 제 기억에 문제가 없었던....
$logged_info->profile_image는 기본으로 세팅되는 변수가 아닌 것으로 기억합니다.
아마 예전에는 위와 같은 코드를 변수를 만들어 사용하는 애드온이나 모듈 등 서드파티 자료가 있었는데
최근에 해당 자료의 사용을 중단하셨거나, 해당 자료가 업데이트되어
내부적으로 사용하는 변수명이 바뀌어서 안 되고 있을 가능성이 높아 보입니다.
&는 10년 전의 적폐(?)이니 더이상 필요없고요, 더 줄여서 쓰시려면
{getModel('member')->getProfileImage($logged_info->member_srl)->src}
이렇게 한 줄로 하셔도 되긴 합니다 ^^
요렇게 코드 작성하지 않고
$logged_info 를 사용하는 것도 정상적이지 않은건가요? 이게 예전부터 궁금했던....
다른 댓글에서 말씀드린 것처럼 템플릿에서 사용하는 변수는 자동으로 Context와 연동됩니다. 컴파일된 결과물을 열어보시면 모조리 Context를 참조하도록 되어 있어요.
예: Context::set('webzigi', 1234); 해놓고 템플릿에서 {$webzigi} 하면 1234라고 나옵니다.
"이상적"인 상황은 아닙니다만 (아마 예전에 register_globals를 사용하여 모든 변수를 전역변수로 만들던 시절의 느낌을 살리고 싶어셨던 모양입니다) XE 템플릿 시스템이 이렇게 만들어진 지 워낙 오래되었기 때문에 굳이 "정상적"이냐고 물을 필요는 없을 것 같아요. XE 템플릿 시스템을 처음 개발하신 분들의 의도대로인 것은 맞습니다.
{@ $logged_info = Context::get('logged_info');}
이걸 넣어두고 이후 $logged_info 를 사용하는게 좋은가 해서요. 방금 사용하는 레이아웃 상단에 모두 넣긴 했습니다.
$logged_info = Context::get('logged_info');
Context::set('logged_info', $logged_info);
위의 코드를 실행하는 것과 100% 동일한 효과예요. 아무 의미가 없지요.
만약 로그인 상태인데도 템플릿에서 $logged_info 변수가 제대로 나오지 않는다면
서드파티 자료에서 뭔가 잘못 건드리고 있는 거예요.
그러나 말씀하신 증상으로 봐서는 $logged_info는 정상이고
프로필 이미지 부분만 정보가 없는 것 같습니다.
답변 감사합니다.
레이아웃에
<?php
$myname = 'xe';
?>
{@ $myname = 'town';}
이런 코드가 있다면 두개의 $myname 변수는 별개의 변수 입니다. 하단의 템플릿 문법은 php실행시 $__Context->myname으로 인식하기 때문입니다.
즉 최종 php실행시 하나는 $myname, 또하나는 $__Context->myname의 변수로 별개로 취급됩니다.
Context::get('logged_info') 이걸 풀어보면 xe에서만 사용하는 변수 $__Context->logged_info를 가져와라 정도(?) 입니다만...
템플릿 문법에서 $logged_info는 이미 $__Context->logged_info로 해석되기 때문에 무의미 하다고 봅니다.
레이아웃,보드스킨 에 몇 군데 제가 넣은것 제작자가 넣은 것이 있네요.