기존 작성된글을 보시면... 제가 다른 게시판에 이미 작성된 확장변수를 가지고 와서 새로 작성할 게시글에 뿌려주는 기능을 고민했다는것을 보실 수 있을겁니다.

 

결국은 그럭저럭 해결을 했으나... 코드가 무지 지저분해져 버렸습니다.

 

write_form.html코드를 임시방편으로 다음과 같이 수정을 했는데요.

 

<!-- (기존 코드 disable)
    <table cond="count($extra_keys)" class="et_vars exForm bd_tb">
        <caption><strong><em>*</em></strong> <small>: {$lang->is_required}</small></caption>
        <tr loop="$extra_keys=>$key,$val">
            <th scope="row"><em cond="$val->is_required=='Y'">*</em> {$val->name}</th>
            <td>{$val->getFormHTML()}</td>
        </tr>
    </table>
-->

 

 

이렇게 해버리고, html파일을 불렀을때 나오는 확장변수 테그들을 그대로 붙여넣기 해서 코드가 나오게 했습니다.

 

<table>

<tr>
            <th scope="row"><em>*</em> 장비 하차 시간</th>
            <td> <input type="text" name="extra_vars2" value="{$qtime}" class="text" />
<p>00:00 으로 24시간제로 입력해 주세요</p></td>
        </tr><tr>
            <th scope="row"><em>*</em> 장비 하차 장소</th>
            <td> <input type="text" name="extra_vars3" value="{$qpoint}" class="text" /></td>
        </tr>    </table>

 

이런식으로 말이죠. 작동은 잘 되는것 처럼 보였으나...

 

근데 문제는 이렇게 하다보니 스킨을 게시판 하나하나 제작하였고, 확장변수의 수정이 있어야 할때 이 파일을 계속 수정해야 한다는것이였습니다.

 

기존의 disable한 코드 그대로 쓰면서 value 값만 채워넣기가 가능할까요?

  • profile

    원래 코드에서는 {$val->getFormHTML()} 요 부분이 input이나 textarea를 불러오는 부분이겠어요.

     

    그런데 바꾸신 것을 보면 input요소에 name과 value가 다르네요.
    보통 name의 값을 넣을텐데요.
    qtime과 qpoint라는 변수는 어딘가에 미리 정해진 값인가봐요?

     

    자바스크립트로 폼이 불러온 이후에 값을 넣어주면 되지 않을까 합니다.
    jquery를 쓰는게 코드가 좀 간편하겠어요.

     

    jQuery("input[name=extra_vars2]").val({$qtime});
    이런 식이죠. 이 동작이 수정시에는 동작하지 않게 조건문을 걸어줘야 하겠어요.
    글을 처음 작성할때만 동작해야하니까요.

     

    그런데 이게 게시판마다 확장변수가 다르고, 입력해줘야 값이 다르다면...
    자동화하기는 좀 애매하기는 해요.
    어떤 게시판에서는 어떤 input에 어떤 값을 넣어라. 요게 정해져 있어야 하는데 xe에는 "어떤 값" 부분을 지원하지 않으니까요.

     

    그래서 제가 한다면
    하나의 파일을 write_form.html의 하단에 include시킬 것인데요.
    해당 파일에 모듈srl이든 mid이든 구별하기 쉬운 것으로 분기시키구요.
    그 안에 넣어줘야 할 값들을 넣는 거죠.

     

    <?
    switch($mid) {
    case "board1": 
    ?>
    <script>
    $(document).ready(function(){
    jQuery("input[name=extra_vars2]").val({$qtime});
    jQuery("input[name=extra_vars3]").val({$qpoint});
    });
    </script>
    <?
    break;
    
    case "board2": 
    ?>
    <script>
    $(document).ready(function(){
    jQuery("input[name=extra_vars2]").val({$qtime});
    jQuery("input[name=extra_vars3]").val({$qpoint});
    });
    </script>
    <?
    break;
    }
    ?>

     

  • profile ?
    아.. ㅠㅠ 자세한 댓글 감사합니다. 관련 내용으로 한번 시도해 보겠습니다!
  • ? profile
    이 동작이 수정시에는 동작하지 않게 조건문을 걸어줘야 하겠어요.
    글을 처음 작성할때만 동작해야하니까요.

    요부분은 코드에 없는 것이니 챙기셔야 할꺼에요~