웹마스터 팁

제 기억으론 팁란에 아무도 올리지 않은것 같아서......

혹시나  관리자페이지 외에 일반페이지에서도 회원리스트(회원목록)를 사용하실 분이 계실까하여 올려봅니다.

 -준비-

modules/member/skins/default/member_list.html

modules/member/conf/module.xml

modules/member/member.controller.php

modules/member/member.view.php


4가지만 수정, 추가하시면 됩니다.

대부분 관리자에서 뽑아왔습니다.

  아래  소스를  member_list.html 으로  만들어  관리자(tpl)가  아닌  일반(./skins/default)에 저장합니다.


<!-- 설명 -->
<!--#include("common_header.html")-->
<form action="./" method="get" class="adminSearch">
<input type="hidden" name="module" value="{$module}" />
<input type="hidden" name="act" value="{$act}" />

    <fieldset>

        <select name="selected_group_srl">
            <option value="0">{$lang->group}</option>
            <!--@foreach($group_list as $key => $val)-->
            <option value="{$val->group_srl}" <group_srl)-->selected="selected">{$val->title}!--@if($selected_group_srl==$val->group_srl)-->selected="selected"<!--@end-->>{$val->title}</option>
            <!--@end-->
        </select>
        <select name="search_target">
            <option value="">{$lang->search_target}</option>
            <search_target_list">!--@foreach($lang->search_target_list as $key => $val)-->
            <option value="{$key}" <selected="selected">{$val}!--@if($search_target==$key)-->selected="selected"<!--@end-->>{$val}</option>
            <!--@end-->
        </select>
        <input type="text" name="search_keyword" value="{htmlspecialchars($search_keyword)}" class="inputTypeText" />
        <span class="button black strong"><input type="submit" value="{$lang->cmd_search}" /></span>
        <a href="#" onclick="location.href='{getUrl(','module',$module,'act',$act)}';return false;" class="button"><span>{$lang->cmd_cancel}</span></a>
    </fieldset>
</form>

<!-- 목록 -->
<form method="get" action="./" id="member_fo">
    <table cellspacing="0" class="rowTable">
    <caption>Total {number_format($total_count)}, Page {number_format($page)}/{number_format($total_page)}</caption>
    <thead>
        <tr>
            <th scope="col"><div><a href="{getUrl('sort_index','','sort_order',$sort_index!='last_login'&&$sort_order=='desc'?'asc':'')}">{$lang->no}</a></div></th>
            <th scope="col"><div><input type="checkbox" onclick="XE.checkboxToggleAll(); return false;"/></div></th>
            <th scope="col" class="quarter_wide"><div>{$lang->user_id}</div></th>
            <th scope="col" class="quarter_wide"><div>{$lang->user_name}</div></th>
            <th scope="col" class="quarter_wide"><div>{$lang->nick_name}</div></th>
            <th scope="col" class="quarter_wide"><div><a href="{getUrl('sort_index','','sort_order',$sort_index!='last_login'&&$sort_order=='desc'?'asc':'')}">{$lang->signup_date}</a></div></th>
            <th scope="col"><div><a href="{getUrl('sort_index','last_login','sort_order',$sort_index=='last_login'&&$sort_order=='desc'?'asc':''+ '+ ')}">{$lang->last_login}</a></div></th>
            <th scope="col" colspan="2"><div>&nbsp;</div></th>
        </tr>
    </thead>
    <tbody>
        <!--@foreach($member_list as $no => $val)-->
        {@ $val->group_list = implode(', ', $val->group_list)}
        <tr class="row{$cycle_idx}">
            <td rowspan="2">{$no}</td>
            <td rowspan="2"><input type="checkbox" name="cart" value="{$val->member_srl}"/></td>
            <td><a href="{getUrl('act','dispMemberAdminInfo','member_srl',$val->member_srl)}">{htmlspecialchars($val->user_id)}</a></td>
            <td>{htmlspecialchars($val->user_name)}</td>
            <td><span class="member_{$val->member_srl}">{htmlspecialchars($val->nick_name)}</span></td>
            <td>{zdate($val->regdate,"Y-m-d H:i:s")}</td>
            <td>{zdate($val->last_login,"Y-m-d H:i:s")}</td>
            <td class="nowrap">
                <homepage)-->!--@if($val->homepage)--><a href="{$val->homepage}" class="homepage" onclick="window.open(this.href);return false;"><img src="./images/icon_homepage.gif" title="{$lang->homepage}" alt="{$lang->homepage}" /></a> <!--@end-->
                <blog)-->!--@if($val->blog)--><a href="{$val->blog}" class="blog" onclick="window.open(this.href);return false;"><img src="./images/icon_blog.gif" title="{$lang->blog}" alt="{$lang->blog}" /></a> <&nbsp">!--@end-->&nbsp;
            </td>
            <td><is_admin">!--@if($val->is_admin != 'Y')--><a href="{getUrl('act','dispMemberAdminDeleteForm','member_srl', $val->member_srl)}" title="{$lang->cmd_delete}" class="buttonSet buttonDelete"><span>{$lang->cmd_delete}</span></a><!--@else--><img src="./images/icon_management.gif" title="{$lang->is_admin}" alt="{$lang->is_admin}" /><!--@end--></td>
        </tr>
        <tr>
            <td colspan="8"><p>{$val->group_list}&nbsp;</p></td>
        </tr>
        <!--@end-->
    </tbody>
    </table>

    <!-- 버튼 -->
    <div class="clear">
        <div class="fl">
            <a href="#" onclick="doManageMemberGroup(); return false;" class="button blue"><span>{$lang->cmd_member_group}</span></a>
            <a href="#" onclick="doDeleteMembers(); return false;" class="button red"><span>{$lang->cmd_delete}</span></a>
        </div>
        <div class="fr">
            <a href="{getUrl('act','dispMemberAdminInsert','+ 'member_srl','')}" class="button black strong"><span>{$lang->cmd_make}</span></a>
        </div>
    </div>

    <!-- 페이지 네비게이션 -->
    <div class="pagination a1">
        <a href="{getUrl('page','','module_srl','')}" class="prevEnd">{$lang->first_page}</a>
        <!--@while($page_no = $page_navigation->getNextPage())-->
            <!--@if($page == $page_no)-->
                <strong>{$page_no}</strong>
            <!--@else-->
                <a href="{getUrl('page',$page_no,'module_srl','')}">{$page_no}</a>
            <!--@end-->
        <!--@end-->
        <a href="{getUrl('page',$page_navigation->last_page,'module_srl','')}" class="nextEnd">{$lang->last_page}</a>
    </div>
</form>
<!--#include("./common_footer.html")-->


 

 

   modules/member/conf/module.xml 를 열어서 <action name="dispMemberInfo" type="view" standalone="true" /> 위에

<action name="dispMemberList" type="view" standalone="true"  index="true"  />을 추가, 저장합니다.

  

 

modules/member/member.controller.php를 열어서   -1460줄-

            // 사용자의 전용 메뉴 구성 (이 메뉴는 애드온등으로 변경될 수 있음)
            $this->addMemberMenu( 'dispMemberInfo', 'cmd_view_member_info');
            $this->addMemberMenu( 'dispMemberScrappedDocument', 'cmd_view_scrapped_document');
            $this->addMemberMenu( 'dispMemberSavedDocument', 'cmd_view_saved_document');
            $this->addMemberMenu( 'dispMemberOwnDocument', 'cmd_view_own_document');

위 소스를 찾아 아래 소스를 추가 저장합니다.

$this->addMemberMenu( 'dispMemberList', 'cmd_view_member_list');


 

 

   modules/member/member.view.php를 열어서 -67줄-

/**
         * @brief 회원 정보 출력
         **/
        function dispMemberInfo() {
            $oMemberModel = &getModel('member');
            $logged_info = Context::get('+ 'logged_info');

            // 비회원일 경우 정보 열람 중지
            if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');

            $member_srl = Context::get('member_srl');
            if(!$member_srl && Context::get('is_logged')) {
                $member_srl = $logged_info->member_srl;
            } elseif(!$member_srl) {
                return $this->dispMemberSignUpForm();
            }

            $site_module_info = Context::get('site_module_info');
            $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, $site_module_info->site_srl);
            unset($member_info->password);
            unset($member_info->email_id);
            unset($member_info->email_host);
            unset($member_info->email_address);

            if(!$member_info->member_srl) return $this->dispMemberSignUpForm();

            Context::set('member_info', $member_info);
            Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
            if ($member_info->member_srl == $logged_info->member_srl)
                Context::set('+ 'openids', $oMemberModel->getMemberOpenIDByMemberSrl($member_srl));

            $this->setTemplateFile('+ 'member_info');
        }

 

위 소스 밑에 아래의 소스를 추가 , 저장합니다.

 

 

/**
         * @brief display member list
         **/
        function dispMemberList() {

            $oMemberAdminModel = &getAdminModel('member');
            $oMemberModel = &getModel('member');
   $logged_info = Context::get('logged_info');
            $output = $oMemberAdminModel->getMemberList();
   
   // 비회원일 경우 정보 열람 중지
            if(!$logged_info->member_srl) return $this->stop('msg_not_permitted');
   
   $member_srl = Context::get('member_srl');
            if(!$member_srl && Context::get('is_logged')) {
                $member_srl = $logged_info->member_srl;
            } elseif(!$member_srl) {
                return $this->dispMemberSignUpForm();
            }
   
   $site_module_info = Context::get('site_module_info');
            $member_info = $oMemberModel->getMemberInfoByMemberSrl($member_srl, $site_module_info->site_srl);
           

            // retrieve list of groups for each member
            if($output->data) {
                foreach($output->data as $key => $member) {
                    $output->data[$key]->group_list = $oMemberModel->getMemberGroups($member->member_srl,0);
                }
            }

            Context::set('member_info', $member_info);
            Context::set('extend_form_list', $oMemberModel->getCombineJoinForm($member_info));
            if ($member_info->member_srl == $logged_info->member_srl)
            Context::set('openids', $oMemberModel->getMemberOpenIDByMemberSrl($member_srl));
            Context::set('total_count', $output->total_count);
            Context::set('total_page', $output->total_page);
            Context::set('page', $output->page);
            Context::set('member_list', $output->data);
            Context::set('page_navigation', $output->page_navigation);

            $this->setTemplateFile('member_list');
        }

혹시나 오류가 있을지 모를 대비로

그동안 수정을 자주하신 분들은 백업 먼저 하시고

수정하시기 바랍니다.

첨부파일 올립니다.

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 


 

제목 글쓴이 날짜
회원가입 이메일 수취 여부 선택 초기화 file 아모스리 2012.07.07
관리자의 회원포인트목록 에서 ID/닉네임 등으로 검색하는 소스 추가 [3] sejin7940 2012.06.25
회원가입시 항목 설명부분에 html 태그를 쓰고플 경우 [3] sejin7940 2012.05.24
회원가입폼 비밀번호 찾기 질문/답변 삭제및 필수항목 선택 (송동우님 팁) 때린데 또때려 2012.04.08
그룹별 회원정보 검색 & 회원의 추가가입폼 복수 검색 팁 (XE 1.5) sejin7940 2012.03.22
ie9에서 회원가입폼 클릭이 안될때 엔키오 2012.03.01
코어 1.5.1에서 회원목록에 성별아이콘 쓰기(수정) 늘푸른이 2011.12.10
코어 1.5.1에서 회원정보에 성별아이콘 쓰기 file 늘푸른이 2011.12.10
다운로드 필요 포인트가 0 인 모듈에서의 비회원 다운로드 권한 부여 [2] 키네시스 2011.02.09
XE 1.5.0.9부터 회원가입 비밀번호 찾기 질문/답변때문에 고생하셨던분들을 위한 해결방안 [2] 라미아스튜디오 2011.11.27
휴대폰 인증 회원에 한해 지정한 내용 보여주기 도라란 2011.11.25
회원가입시 '비밀번호 찾기 질문/답변' 항목이 나오질 않고 회원설정에서 설정불가능 file 머구리 2011.11.25
비회원도 추천가능하게 하기 (1.5기준설명) [3] 빽짱구 2011.11.18
최고관리자 이외에는 ''회원정보보기''를 막기 [13] 비나무 2008.07.10
관리툴 회원관리에서 확장변수로 검색 시 숫자 이외 검색불가 해결 방법 카리브 2011.10.10
갑자기 로그인(관리자 및 회원)이 안되는 경우 [2] 비밀얌 2011.10.02
특정 확장변수를 로그인한 회원에게만 보이게 하기 [3] 비밀얌 2011.09.17
직접 ftp를 이용하여 게시물과 회원정보등 데이터 베이스 백업이 가능한가요 [1] 뉴늅 2011.09.06
게시판에 회원확장변수정보 받아서 표시하기 [3] burster 2011.03.26
관리자페이지 회원목록을 일반페이지에서 사용하기 [5] file 늘푸른이 2010.08.07