질문/조언질답게시판
Extra Form
PHP PHP 7.3
CMS Rhymix
<script type="text/javascript">
    var imgs = document.body.querySelectorAll('img');
    imgs.forEach(function(elem, idx, arr){
    elem.src = '//bbb.com/' + elem.src;
    });
</script>

 

aaa.com은 라이믹스가 설치되서 게시물 작성및 이미지가 저장되는 곳입니다

bbb.com은 이미지만 캐시해서 사용할 도메인입니다

 

게시물을 읽을 때 본문에 추가된 이미지 링크 주소를 자바스크립를 참고해서 변경해봤습니다만, 문제가 하나 생겼습니다

이미지 링크 주소가 /files/cache...로 시작하던 것이 //bbb.com/https://aaa.com/files/cache로 변환이 된것인데요

 

이런 경우 img 셀럭터의 링크 주소에서 http://aaa.com 주소만 추출해서 미표시할 수 있을까요?

 

즉, <img src="//bbb.com/files/cache... "로 치환하려고 하는 것입니다

 

** 이미지 캐시 하기 전엔 <img src="//aaa.com/files/cache... >으로 작동하고 있던 것이죠 ^^

 

꼭 자바 스크립트가 아니어도 php 정규식을 통해서 첨부 이미지의 링크 주소를 변경할 수 있으면 참 좋겠습니다

 

 

감사합니다

 

ps) 에디터의  js를 수정하면 결국 DB까지 모두 건드려서 이미지 링크 주소를 바꿔야 합니다만, _read_html의 최하단에 자바를 이용한 img 셀렉터 속성의 url 주소 치환하면 게시물을 읽을 때 바로 이미지 캐싱을 하니 DB 수정할 필요가 없어 편한 것 같습니다 (지나간 게시물도 본문 열람하는 순간 캐싱이 되네요)

  • profile

    스킨에 크립트를 넣더라도 브라우저는 aaa.com 주소로 된 이미지 태그를 이미 로딩했기 때문에 늦었습니다. 내용을 표시하는 스킨 파일 최하단에 넣으신다면서요? 그렇다면 그 위에 있는 내용은 이미 로딩했지요. 요즘 브라우저들이 웹 페이지 콘텐츠를 얼마나 빨리 로딩하는데요. src 속성을 성공적으로 치환하더라도 결국 aaa.com에서 이미지를 한 번 로딩하고 bbb.com에서 한 번 더 로딩하는 결과를 낳을 뿐입니다. 그렇다고 내용 표시 전에 자바스크립트를 실행하면 <img> 태그를 하나도 불러오지 못할 테고요. 이건 자바스크립트로 처리하기가 근본적으로 불가능한 문제입니다. 서버단에서 PHP로 처리해야 합니다.

     

    에디터를 건드리면 귀찮아지고, 기존 글도 수정하려면 DB까지 건드려야 하니 가장 간단한 방법은 before_display_content 시점에 애드온을 실행해서 HTML 소스를 직접 조작하는 것입니다.

  • profile ?
    말씀 감사합니다 기진곰님! ^^"