묻고답하기
XE 고수분께 여쭙니다. 외부페이지 레이아웃 연결
2015.07.13 16:45
PHP 를 통해 외부 문서를 제작했습니다.
회사 이름을 검색하는 프로그램이라고 합시다.
페이지는 크게 세 부분으로 나뉘어 있습니다.
index2.html - 검색창이 있는 페이지 ( 예를 들어서 "삼성" 이라고 검색 )
search.php - 검색 결과를 보여주는 페이지 ( "삼성" 의 검색 결과를 노출 -> "삼성전자", "삼성화재" 등 노출)
result.php - ("삼성전자" , "삼성화재" 등 이전 페이지에서 사용자가 클릭한 회사의 자세한 정보를 노출. 매출액, 영업이익 등)
설명이 조금 복잡했는데 http://cubeocean.com 에 접속하시면 바로 보입니다.
여기에서 이 3개 페이지를 어떻게 연동 시키냐 하는 문제인데요.
그냥 실행 시키면 문제는 없습니다만
사용하고 있는 레이아웃과 연동하고 싶습니다.
검색창이 있는 index2.html 은 외부 페이지로 레이아웃 연동이 어려움이 없지만,
이전 페이지로부터 파라미터를 받는 search.php , result.php 문서 2개는 어떻게 외부페이지로 만드는지 모르겠습니다.
위에 빨갛게 네모박스 쳐져있는 부분. 검색창이 있는 index2.html 은 어차피 파라미터 받는 것이 없어서
저렇게 해주면 문제는 없지만, 그 뒤로 search.php, result.php 는 어떻게 외부 페이지로 만들지 모르겠습니다.
최대한 이해하기 쉽게 작성하려고 노력했지만 어떨지 모르겠습니다.
http://cubeocean.com 여기에 접속하셔서 페이지를 봐주시면 이해가 빠르실 것 같습니다.
도움 좀 꼭 부탁드리겠습니다.
iframe 사용하는 방법 말고.. 다른 방법으로 부탁드리겠습니다....
댓글 12
-
DoorWeb
2015.07.13 18:36
-
Flolida
2015.07.13 18:38
안녕하세요. 답변 감사합니다. iframe 으로 해당 부분 구현은 얼마 전에 마친 상태입니다...근데 iframe 을 사용하지 않고 구현하는 방법을 찾고 있습니다..왜냐하면 페이지 특성 상 새로고침 해야 할 일이 조금 자주 발생되는데, 새로고침 하면 iframe 으로 할시에 처음화면으로 돌아와 버려서요.
그래서 이게 며칠 안에 해결이 안되면... 그냥 php 문서에 레이아웃과 똑같은 디자인을 입혀서 사용할지 생각하고 있습니다...
-
sejin7940
2015.07.13 18:48
3개 파일을 전부 다 외부페이지로 잡고
각 상황에서 form 에서 action 주소를, 해당 php 파일이 아니라, XE 의 외부파일주소 로 연결을 하시면 되지 않을까요?
-
Flolida
2015.07.13 19:02
답변 고맙습니다. 말씀하신 방법으로 index2.html 과 search.php 문서 두 개에만 테스트를 해 봤습니다.
둘 다 외부페이지로 등록을 해 놓고, index2.html 의 action 부분을 기존 <form action="./search.php" ... > 이 아니라
<form action="search"...> 으로 바꾸고 테스트를 해 봤습니다. 근데. 역시 안되네요 ... 페이지가 넘어가버리지가 않네요.
기존 http://consen.kr/index2 페이지에서 저렇게 수정하고 검색어 입력 시에
http://consen.kr/search?act=&mid=index2&vid=&keywords=삼성
이렇게 넘어가버립니다. mid=index2 보시는것처럼 mid 값이 그대로 index2 인데..
방법이 없을까요?
-
DoorWeb
2015.07.13 19:05
index2.html - 검색창이 있는 페이지 ( 예를 들어서 "삼성" 이라고 검색 )
search.php - 검색 결과를 보여주는 페이지 ( "삼성" 의 검색 결과를 노출 -> "삼성전자", "삼성화재" 등 노출)
result.php - ("삼성전자" , "삼성화재" 등 이전 페이지에서 사용자가 클릭한 회사의 자세한 정보를 노출. 매출액, 영업이익 등)
이 세 파일이 있다면
세파일을 굳이 xe 안에 넣어서 레이아웃 덮어 씌우려 하시지 마시고
독립적으로 놓고 각 해더와 풋터등을 만들어서 레이아웃과 똑같은 디자인을 입히면 될거 같습니다만...
-
Flolida
2015.07.13 19:07
이 외부페이지 방법으로 해결이 안되면 그렇게 하려구요... ㅠ 그런데 그렇게 하면 조금 더 복잡해져서, 최대한 XE 기능을 이용하고 싶어서요. 이렇게 해버리면 나중에 권한 문제등도 Context 함수로 다시 설정해야 하고, 조금 더 복잡해 지더라구요.
-
ehii
2015.07.14 00:43
게시판 스킨을 보시면 쉽게 이해하실 수 있을 겁니다. 기본으로 list.html 파일에서 게시물이 있으면 _read.html 파일을 include시킵니다. 마찬가지로 유저가 입력한 검색어를 변수값으로 넘겨 받았는지 여부에 따라 페이지를 표시할 수 있도록 하면 될 것 같습니다.
index2.html을 외부페이지 기본으로 두시고(mid값이 serach라 가정할 때)
1. 다시 index2.html에서 get이나 post로 변수를 받도록 설정 -> {@ $_index = $_GET['index'];}
1.1 if문으로 변수가 있으면 search.php나 result.php를 include,
1.2 변수가 없으면 검색화면을 나타내기
2. search.php에서는 유저가 입력한 값을 http://url/search?index=xxx로 넘겨주기 -> xe템플릿으로는 {getUrl('','mid','search','index','값')}, 또는 post로...
3. result도 비슷하게 다른 변수로 넘겨주기 -> {getUrl('','mid','search','result','값')}
이렇게 짜시면 될 것 같습니다.
-
Flolida
2015.07.14 12:24
한번 해보겠습니다. 초보라서 이해가 잘 안되네요... 혹시 네이트온 같은건 없으시죠? ㅠㅠ
-
ehii
2015.07.14 14:50
첨부한 index_search.php를 확인해 보세요.
이 index_serach.php 파일을 모듈이름(=mid)이 search인 외부문서로 연결하시고
동일폴더 내에 index2.html, search.php, result.php 파일을 두시면 됩니다.
그리고 search.php 파일에서 검색 결과를 링크할 때
(가령 keywords="삼성"에서 나온 결과들이
배열 $검색결과[0],$검색결과[1], $검색결과[2]... 이고 이에 대응하는 코드가 $code[0],$code[1],$code[2]...라 가정하면)
<a href="{getUrl('','mid','search','code','$code[0]')}"> $검색결과[0] </a>
이런 식으로 링크하시면 됩니다.
아니면 러프하게 <a href="http://cubeocean.com/search.php?mid=search&code=$code[0]"> $검색결과[0] </a>
이렇게 쓰셔도 되구요.
----
이렇게 만드시면 3개의 페이지가 모두 index_search.php 내에서 작동합니다.
따라서 외부페이지는 index_search.php 하나만 만드시면 되구요.
keywords 나 code 의 존재 여부에 따라 각각 다른 페이지를 불러와 표시합니다.
-
Flolida
2015.07.14 17:32
안녕하세요. 말씀하신대로 해보았는데 잘 안되네요. index_search.php 문서를 따로 만들어 놓고
말씀하신 것처럼 조건 1,2,3 에 따라서 출력이 되는 것까지는 보이는데
페이지가 이동하면 (조건에 따라 다른 페이지를 불러오면 ) 레이아웃은 역시 먹히지가 않네요 ...
제가 잘못한건지, 아니면 XE 가 원래 이런건지 잘 모르겠어요...
답변 주셔서 너무 감사해요.... 혹시나해서 제 FTP 계정과 XE 관리자 계정을 쪽지로 넣어 보았는데,
괜찮으시면 확인 가능하실까요? http://cubeocean.com 이고... ftp 상에서 파일들은 모두 www 폴더 안
최상단에 위치하고 있어요... 원래 이런걸까요...?? 너무 번거롭게 해드려 죄송합니다. 시간이 없으시면
무시하셔두 괜찮아요...... ㅠㅠ..감사합니다...
-
ehii
2015.07.14 21:23
말씀하신대로 레이아웃 상에서 작동하도록 해 보았습니다.
제가 손댄 부분은
1. index2.html 에서
foam태그상의 action="/serach"으로 수정,
레이아웃 상에서 작동하니 html,body태그는 없어야 합니다(삭제).
2. search.php에서
a태그상의 href="/search?code=$r->code" 로 수정
-----
이상으로 레이아웃 상에서 3가지 파일이 작동합니다..... 만 XE 레이아웃 상에서 global 전역변수가 작동하지 않습니다. 이를 수정하기 위해
3. result.php에서 함수내에서 49,55,135줄 처럼 리턴값을 사용하도록 수정했습니다. 나머지 전역변수를 쓰는 함수들도 수정하셔야 합니다.
덧, xe버전이 1.5로 너무 낮아서 보안에 취약할 수 있습니다. 가능하시다면 최신버전으로 사용해 보세요.
-
Flolida
2015.07.14 21:30
안녕하세요. 너무 감사드립니다. 방금 확인을 하였습니다. 쪽지 확인 부탁드리겠습니다. 다시한번 감사하단 말씀 드립니다. global 전역변수 부분은 제가 어떻게 해 보겠습니다. php를 배운지 너무 초보인 상태에서 해외 사이트에 질문해가며 만든 것이라서 여러가지로 좀 부족한 부분이 너무 많았습니다. 일단 너무나 감사하단 말씀 드립니다... 쪽지 확인 부탁드리겠습니다. 감사드립니다. 복 받으세요.!!!... 정말 감사합니다.!!!
이건 아마
iframe으로 해당 검색창을 불러오는 파일 하나 만들고
그 파일을 외부페이지로 불러와야 레이아웃이 덮어질겁니다.
즉 search 검색창이 걸린 주소를 A.html이라는 파일에서 iframe 으로 불러오고 A.html을 외부페이지로 불러와야 할겁니다.