질문/조언질답게시판
Extra Form
PHP PHP 7.4
CMS Rhymix 2.x

http://localhost/index.php?mid=TEST&category=242&act=dispBoardWrite&extravalue1=TEST

 

위 빨갛게 표시된것처럼 저런 방식으로 링크를 클릭하게되면 확장변수1 내용 입력값에 TEST라는 내용을 입력하게할 수 있는 방법이 있나요..?

  • profile
    글쓰기 form 을 제공하는 파일을 열어서
    확장변수 입력을 출력하는 반복문이 등장하는 코드가 있을 겁니다.
    해당 부분에서 확장변수1 에 해당하는 eid와 $extravalue1 값이 있을때 라는 조건을 걸어서 해당 조건이 만족할때 value 값을 $extravalue1 로 넣어주는 코드를 써주면 될 것 같습니다.
  • profile ?

    두분다 답변 감사드립니다.!!!!

  • ? profile
    제가 파일 열어봤는데
    {$val->getFormHTML()}

    이부분이 확장변수 입력을 자동으로 만들어주는 코드로 확인되네요.

    <[email protected]($extravalue1 && $val->eid=='ABCD')--><input type="text" name="extra_vars1" value="{$extravalue1}" class="homepage"><[email protected]>{$val->getFormHTML()}<[email protected]>

    이런식으로 하면 될 것 같다는 생각이 듭니다.

    extra_vars1 는 확장변수 순번에 따라 바뀔 수 있구요.
    class="homepage" 도 입력 형삭에 따라 바뀔 수 있을 것 같습니다.

    그런데 이렇게해서 입력(글등록)이 정상적으로 되는지는 테스트가 필요해 보이긴 하네요.
    원래 잘못된 형식으로 입력하면 입력을 뱉어내게 되어있으니...
  • profile ?

    오!!!!!!!!! 감사합니다 ㅠㅠ

    이해해버렸습니다

  • profile ?
    $val->eid=='ABCD' 의 기준은 무엇인가요..?
  • profile ?
    제가 조금 부수적으로 생각해본게 있는데요. write_from.html 단에서 value 값에 정의를 하는 것보다


    Extravar.class.php 파일을 수정하는게 더 낫지 않을까요??

    default :
    $buff[] =' <input type="text" name="' . $column_name . '" value="' . ($value ? $value : $default) . '" class="text" placeholder="'.$placeholder.'" autocomplete="off"/>';
  • ? profile
    코어를 수정하지 마세요. 스킨수정과 코어수정은 차원이 다릅니다.
  • ? profile

    지금 적용해야할 확장변수의 id 입니다. 확장변수 생성할때 id를 입력하셨을 겁니다. 모든 확장변수가 아닌 내가 원하는 확장변수에만 적용되도록 추가적으로 조건을 거는 겁니다.
    물론 name="extra_vars1" 에서 한번더 순서로 특정해야 하긴 합니다.

    $val->eid=='ABCD' 이 아이디면으로 조건을 걸지 않으면 모든 확장변수에 다 적용이 되어버립니다.

     

     

    eid로 특정해주어 해당 확장변수만 적용되도록 해주면 추가한 소스에서 확장변수 순서도 자동화 할 수 있을 것 같습니다.

     

    <[email protected]($extravalue1 && $val->eid=='ABCD')--><input type="text" name="extra_vars{$key}" value="{$extravalue1}" class="homepage"><[email protected]>{$val->getFormHTML()}<[email protected]>

     

    물론 $key 가 가능한지는 스킨에 따라 다를 수도 있습니다.

  • profile ?

    아.. 제가 지식이 부족해서 스킨단에서 write_form 확인 시

    <table cond="count($extra_keys)" class="ed extra-form" id="CMO">
    <tr loop="$extra_keys=>$key,$val">
    <th>
    {$val->name}
    <span class="ed label-danger margin-left-xxsmall" cond="$val->is_required=='Y'">{$lang->is_required}</span>
    </th>
    <td>{$val->getFormHTML()}</td>
    </tr>
    </table>


    위 내용으로 확인되고 있습니다..

    td값 안에있는 곳을 <!--[email protected]($extravalue1 && $val->eid=='ABCD')--><input type="text" name="extra_vars{$key}" value="{$extravalue1}" class="homepage"><[email protected]>{$val->getFormHTML()}<[email protected]>

    으로 변경하면되는걸까요?

     

    [+] checkbox 랑 radio, 그리고 select(option)도 쓰고싶습니다!

  • ? profile
    글쎄요. 만드신 확장변수 id가 뭔가요? ABCD 를 바꾸셔야죠?

    형식은 뭐로 만드셨나요?
    그에 맞게 응용을 하셔야죠.

    [+] checkbox 랑 radio, 그리고 select(option)도 쓰고싶습니다!

    이게 url에서 더 받아서 추가를 하고 싶다면 위 조건문에서 else if 로 추가 분기를 계속 하셔야 합니다.

    제가 도움을 드릴수 있는 상황이 아닌것 같네요. 조금 더 학습을 하신 후 구현하시거나 의뢰를 해보세요.
  • profile ?
    아ㅓ.. 네 마지막으로 혹시 value값에 드렁가는 extravalue1 이것도. 숫자 1을 $key 를 통해 받아오고싶은데

    {$extravalue{$key}} 라고하면 오류가나서요 ㅠㅠ 혹시 방법이 있을까요?
  • ? profile
    템플릿에서는 템플릿 언어 사이 변수를 이용해서 값을 넣는 {$변수명}값의 방식이 통하지 않습니다.

    {} 자체가 <php 을 실행해주는 여 닫이로 활용되고 있으므로 {{ }} 이렇게 하면 문법이 틀어지게 되거든요.

    템플릿에서는 절대로 해당 문구처럼 사용이 거의 힘들다고 보시고, 해당 값을 룩업테이블을 만들어 배열상태의 키값을 정렬하는 방법을 사용하세요.
  • ? profile

    템플릿에서는 이중괄호를 사용할 수 없습니다.

    그런데 지금 질문이 약간 이해가 안가는게
    어차피 value 값도 자동으로 키 순번에 맞춰서 입력한다해도 게시판에 사용된 확장변수 형식이 모두 일치하는 경우에나 사용에 의미가 있을텐데요.

    확장변수1 은 text, 확장변수2는 check 이런경우라면 의미도 없을 겁니다.

    그리고 특정 확장변수를 eid로 특정했기 때문에 더더욱 의미도 없어 보입니다.

    어찌 되었던 제가 생각하는 최선은 다소 수동적이지만

    <table cond="count($extra_keys)" class="ed extra-form" id="CMO">
    {@
    $extravalue = [];
    $extravalue[1] = $extravalue1;
    $extravalue[2] = $extravalue2;
    $extravalue[3] = $extravalue3;
    $extravalue[4] = $extravalue4;
    }
    <tr loop="$extra_keys=>$key,$val">
    <th>
    {$val->name}
    <span class="ed label-danger margin-left-xxsmall" cond="$val->is_required=='Y'">{$lang->is_required}</span>
    </th>
    <td><[email protected]($extravalue[$key] && $val->eid=='ABCD')--><input type="text" name="extra_vars{$key}" value="{$extravalue[$key]}" class="homepage"><[email protected]>{$val->getFormHTML()}<[email protected]></td>
    </tr>
    </table>


    이정도로 해야 하지 않을까 생각이 되네요.
    확장변수 4번째 순번까지 사용한다고 가정을 하고 수동으로 배열변수를 만들어 주었습니다.

     

    그런데 지금 확장변수 자체를 특정해야하고 특정했기 때문에 의미도 없습니다.

  • profile
    <[email protected]($extravalue1)-->
    <input type="text"~~~~~~ value="{$extravalue1}" />
    <[email protected]>

    이런식으로 하시면 될것 같네요.
  • profile ?
    좋은답변 드리고 싶은데 ㅠㅠ 두분다 답변 감사드립니다.
  • profile ?
    만약 다중으로 사용하려면 &를 계속 붙이면서 연속으로 작성하면될까요?
  • ? profile
    넵. 근데 &붙이면서 추가된 항목들 하나당 하나씩입니다..
  • profile ?
    답변 진심으로 감사드립니다.