Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

안녕하세요.

 

자동으로 삽입된 이미지 html 값으로

 

첨부파일을 다운로드 하는 URL을 알아내는 작업을 하고있습니다.

 

<p><img alt="간단.JPG" data-file-srl="1781040" editor_component="image_link" src="/files/attach/images/1089600/039/781/001/14fabd49370c0034d4b896181b5853f7.jpg" data-pswp-pid="1"></p>

 

위와같은 코드가 있다면 data-file-srl="1781040" 을 자바스크립트로 추출하고

1781040 추출된 이값은 

다시 php로 옮긴후 FileModel::getFile(1781040)->download_url; 로실행시켜서

최종 링크 주소를 추출한후 그값을

다시 자바스크립트로 전달 하는 방식입니다.

 

 

자바스크립트에서

 

img.getAttribute('data-file-srl'); 값으로

 

data-file-srl 값을 구하고

 

data-file-srl 값을 php $file_srl 값에 저장하고
 

php 로 FileModel::getFile($file_srl)->download_url; 실행시켜서

 

결과값을 자바스크립트의 최종 url 값으로 지정하고 싶습니다.

 

애드온 파일에서 css와 js 파일을 불러오고 js파일에서 아작스를 통해 js와 애드온 php 파일을 넘나들고싶습니다.

 

자바스크립트와 php를 넘나드는 이 작업 가능할까요?

 

정 불가하다면

 

첨부파일의 배열까지만 만드는방법을 알면 일사천리로 진행될것 같은데

 

애드온에서 첨부파일 리스트의

첨부파일 명값과 링크 값을 쭉 배열로 가져와서 저장한 후 자바스크립트에서 처리가 가능할까요?

  • Lv37

    글 본문 html에 삽입되어 있는 내용만으로 해결하려고 하시니까

    불필요하게 복잡한 구조가 나오는 것 같습니다.

     

    JS → PHP → JS 순서를 말씀하셨는데, 사실은 글읽기 화면을 생성한 PHP가 맨 앞에 있습니다.

    즉, PHP → JS → ??? 입니다. 맨 앞에 있는 PHP가 가장 막강합니다.

    글읽기 화면을 생성하는 스킨에서 적당한 코드를 사용하여

    각각의 file_srl에 해당하는 원본 파일명, 다운로드 경로 등을 페이지 소스에 숨겨놓을 수 있거든요.

     

    첨부파일 배열을 var file_list = ..... 이렇게 JS 변수로 미리 뿌려 놓아도 되고,

    대부분의 스킨에 있는 첨부파일 목록 섹션에서 jQuery로 내용을 추출할 수도 있습니다.

    어떤 형태로든 맨 먼저 실행되는 PHP가 판을 다 깔아 놓으면,

    JS에서는 html 어딘가에 숨겨져 있는 정보를 찾아서 활용하기만 하면 됩니다.

    PHP → JS → 다시 PHP로 갈 필요가 없는 것입니다.

  • Lv37 Lv12
    우선 배열에 성공했네요!!!! ㅎㅎ 이제 서둘러 작업해봐야겠습니다.
  • Lv37 Lv12

    자꾸 질문드려 죄송합니다.

    애드온에서
    Context::loadFile(array('./addons/애드온명/js/js.js', 'body', '', null), true);
    이런식으로 js를 불러오고있습니다.

    애드온의 php에서
    $fileArrayJson = json_encode($fileArray);
    으로 json 으로 변환까지 했는데

    저 변환한 json을 js에서는 아무리 해도 안땡겨와지는것 같습니다.

    혹시 애드온에서 Context::loadFile(array('./addons/애드온명/js/js.js', 'body', '', null), true);
    이렇게 불러온 방식이 잘못되었을까요?

    js파일에서 var jsonData = <?php echo $fileArrayJson; ?>;
    이걸 땡겨오는 방법이 있을까요?


    애드온 php 자체에서

    echo "<script>";
    echo "var fileArray = " . json_encode($fileArrayJson) . ";";
    echo "console.log(fileArray);";
    echo "</script>";

    이렇게하면 배열은 잘 땡겨오긴합니다.

     

    저렇게 해두고 js 파일에

     

    console.log(fileArray); 를 해도 아무것도 못가져오네요 
    근데 실질적인 최종 작동하는 파일은 js에 담겨있어서요.

  • Lv12 Lv37
    애드온 PHP에서 출력하는 타이밍과 JS가 실행되는 타이밍이 서로 안 맞는 것 아닐까요?
    실제 페이지 소스에서 어떤 순서로 출력되는지 확인해 보세요.
    애드온 JS를 먼저 실행하고 그 후에 var fileArray 를 선언한다면 안 되겠죠.
  • Lv37 Lv12

    앗 그럴수 있겠네요
    감사드립니다
    내일은 성공할 수 있을꺼 같은 예감이드네요

    근데 js로배열을하면 소스보기에 항상 노출되는게 정상인거죠?

     

    이거노출안되는게 좋을것같아서 php로 파일명보기

    버튼들 추가하는방향으로 다시 급변침 해야겠네요ㅠ

  • Lv12

     

     

    답변 감사합니다. 역시나 php 단계에서 먼저 작업 후 자바스크립트에서 작업하는게 맞나보네요

    뭔가 비슷하게나마 작동을해서 기대감을 못버리고 거의 하루를 날려먹었네요. 


    역시나 애드온에서 배열 하는방법을 찾아보는게 역시나 빠르겠네요.

     

    https://xetown.com/download/666969

    우선 윤삼님이 작업하신 이파일을 열어보고 어떤식으로 배열을 하고 있는지 찾아보는 방향으로 하겠습니다.

     

    감사합니다. 기진곰님