질문/조언질답게시판
Extra Form
PHP PHP 7.2
CMS XpressEngine

한줄 메모 스킨 입니다.

 

list.html 에 코드를 추가할 생각입니다.

 

그런데 해당 코드가 이전 액션이 글쓰기로 글을 등록한 직후라야 동작하게 하고 싶습니다.

 

글쓰기 는 글쓰기 폼으로 전환되어서 글을 작성합니다.

 

act=dispBoardWrite

 

list.html에 예전에 다른 질문에 받은 답변을 참조해서

{@ parse_str(parse_url($_SERVER['HTTP_REFERER'], PHP_URL_QUERY), $args);}

 

cond="$args['act'] == 'dispBoardWrite'"

을 사용해서 테스트 했는데 글 등록 후 글목록 화면에서 해당 코드가 보이지 않습니다.

 

 

질문을 등록하고 생각해보니 위 코드를 쓰는 것과 전혀 다른 상황이네요.

저 사례는 열린창에서 클릭하여 이동될때 act가 뭐였는지 확인해 조건을 거는건데..

제가 지금 하려는 건 글 등록이 된 후 화면이 목록화면으로 전환한 상태에서 동작하는거라 전혀 다를 것 같습니다.

 

이 경우 어떻게 해야 할까요 ?

 

 

 

  • profile
    XE 템플릿 문법에서는 $_SERVER를 사용할 수 없고, 일반적으로 함수 결과값을 받아오는 문법과 다소 다르게 사용된 $args를 어떤 식으로 인식할지도 의문입니다. 스킨이 아니라면 정상적으로 작동할 것 같은데, 스킨이라서 문제네요.
  • profile profile
    아.. 저게 살짝 다른 케이스인게 글 작성 등록 후 목록 화면으로 바뀝니다. 목록에서 방금 글 작성이 있었는지 확인하는 방법이 필요하네요ㅜㅡ
  • profile profile
    글 작성 폼에 세션을 생성하는 방법이 될것 같은데 맞나요? 글작성 스킨에 세션을 생성하려면 ..
  • profile profile
    XE 스킨에서는 $_SESSION도 사용할 수 없습니다...
  • profile profile
    그럼 쿠키를 굽는쪽으로 방향을 틀어볼게요
  • profile
    모듈 트리거를 이용하시는게 좋을듯하네요.
    트리거만 작동시킬 모듈 하나 만들어서 원하는 모든 트리거는 거기서 작동하도록
  • profile profile
    그렇게 할 능력은 안되서요.
  • profile

    제 생각에는 스킨단에서도 쉽게 구현 가능할것 같은데요...
    반드시 어렵게 서버사이드에서 별도로 액션등을 감지하여 처리하거나

    복잡하게 쿠키를 굽거나 하는 필요없이

     

    어차피 글을 작성한 직후에는 본인이 작성한 글이 보이는것을 응용해서
    두가지 조건만 활용하면 될것 같은데요...

     

    _read.html 에서

    {$oDocument->getMemberSrl()} 과 {$logged_info->member_srl} 이 동일하면서
    {$oDocument->getRegdate} 가 현재 시간의 5초 이내인 경우에는 본인이 방금 작성한 글이라고

    판단해도 무리없지 않을까요?

     

    어차피 글작성자는 자신이 쓴글을 바로 읽게되고, 그 읽고있는 글이 본인이 작성한것이며 5초이내에 작성한 글이라면

    지금 막 작성하고 내가 그 글을 보고 있다는 가정이 충분히 될것 같은데요... (실제로도 그럴거구요)

     

    위 두가지 조건을 모두 충족하는 경우에만 특정한 자바스크립트를 실행한다거나... 하면 되지 않을까 싶어요

     

     

  • profile profile
    이거 괜찮은 아이디어 군요 ㅎ
  • profile
    본문 다시보니 list 에서네요
    이 경우에도 어차피 게시글 리스트는 loop 형태로 뿌려주게 되니 사용자의 member_srl과 regdate 비교는
    가능할것으로 보입니다. 당연히 글작성 직후 이벤트 이니 글목록 상위의 몇개만 추려서 비교하면 될거같구요
  • profile profile
    메모장 스킨이라 좀 다른부분이 있고 비회원이 작성하는 곳이라 ..

    제안해주신 것 감사합니다.
  • profile profile

    비회원의 경우 관리자만 식별이 가능하기에...

    아니면 리퍼러값을 활용해서 자바스크립트로 처리하셔두 되요

    목록페이지를 보는데 만약 이전페이지가 글쓰기 페이지였다면 작동 하도록요

     

    (단점은 글쓰기 화면에서 목록으로 버튼등이 있어서 목록으로 이동하게 되면 글작성을 안하고 이동해도 코드가 실행되는 것은 단점이네요... 이건 사용자가 글쓰기 화면에서 목록으로 못가도록 버튼을 없애버리면 해결 됩니다...??

    아니면 글쓰기 화면에서 목록으로 버튼을 누르면 리퍼러조작을 하고 list로 이동하게 추가 처리하셔두 되구요!)

     

    아래 코드를 list.html 상단이나 하단 아무곳에 적당히 수정해서 넣으시면 작동합니다.

     

    <script>
        var ref =  document.referrer;
        if( ref == "https://b1n.st/index.php?mid=board&act=dispBoardWrite" )
        {
           alert ("글작성 해주셔서 고맙습니다.\n이전주소 : "+ref);
        };
    </script>

     

    예시주소 : https://b1n.st/board (비회원 글작성 가능하게 열어두었으니 테스트 해보세요)

     

  • profile profile
    상세한 답변 감사합니다. 참고해서 적용하겠습니다.