PHP 토글...

아무도 이런 플러그인 만들지 않지만 저는 내내 바라던 것이라 그냥 스스로 만들었습니다. (낑낑대면서)

자바스크립트를 이용한 토글을 예전엔 신기해서 좋아했는데 '자바스크립트'를 사용한다는 점에서 좀 그렇기도 하고, 눈에는 보이지 않더라도 이미 웹사이트 안에는 내용물들이 이미 로딩되므로 그런 것도 그렇고..... 한 번 문서 불러올 때 다 불러온 후 스타일 시트로 숨기고 자바스크립트로 불러오는 것이 나을까, 아니면 첫 페이지에는 숨길 내용은 숨기고, 링크를 추가해서 안 가져온 내용물을 다시 불러들이는 것이 나을까. 나는 모르겠습니다. 아무튼 내가 사용하려고 만들었는데 혹시나 사용할 분은 쓰시어요. 좀 더 좋은 구현 방법이 있다면 알려주시길 바랍니다.

덧1. 코드 수정했습니다. 아마도 이게 더 결과를 적용하는데 부하가 적을 것입니다. 다운받으신 분은 교체해주시길 바랍니다.

덧2. Ajax 효과 추가했습니다. 이거 하나 하는 거 너무 힘들군요. ㅜ_ㅜ; 그래도 코드가 좀 괜찮은 건지는 알 수 없습니다.; 자바스크립트 기능을 꺼도 기능할 수 있도록 접근성에 신경썼습니다.

[관련글 그룹 - Plugin ( Source view - Plugin/ShowAndHide )]

1. 다운로드

  1. 본인 완전 초짜로, 코드가 조악합니다. -_-; 개선 방법을 공부하는 중입니다. 개선했습니다. ;)
    • 블로그의 문법 적용마다 결과가 다를 수 있습니다. (Markdown, wiki, textile, bbcode, 등등등)
    • Ajax 효과를 준 플러그인을 사용할 때는 Show and Hide Ajax 효과 플러그인 최근 것 을 다운받고, 압축을 풀면 나오는 showhide 폴더 자체를 플러그인 폴더에 업로드하여 wp-content/plugins/showhide/파일들 이런 상태가 되도록 합니다. 그리고 플러그인을 활성화 시키면 됩니다.
  2. Show and Hide Ajax 효과 플러그인 0.2.1
    • Updated Sunday, September 10, 2006 22:40 - 4.61 KB
  3. Show and Hide 플러그인 0.2

2. 사용법

  • 기본
    ==== Showlinktext | Hidelinktext | Text ====
  • 귀찮으면
    ==== Showlinktext || Text ====
    ====| Hidelinktext | Text ====
  • 너무 귀찮으면
    ====|| Text ====

2.1 기본 링크 문구

  • Show linktext : More #id
  • Hide linktext : Close #id
    • Show linktext 문구가 있을 경우에는 Close : Showlinktext #id

3. 예제

  • 토글 예제 페이지
  • 적용 안되는 블로그도 있을 수 있음. - 내가 사용하려고 만들었기에 별로 고민하지 않았음

3.1 CSS 예제

div.show {
 /* 숨겨진 텍스트 박스 */
}
a.show {
 /* 보이게 하는 링크 텍스트 문구 */
}
a.hide {
 /* 숨기게 하는 링크 텍스트 문구 */
}
a.allshow {
 /* 모두 보이게 하는 링크 텍스트 문구 */
}
a.allhide {
 /* 모두 숨기게 하는 링크 텍스트 문구 */
}
a.show span, a.hide span, a.allshow span, a.allhide span {
 /* 링크를 구별하는 ID 번호 문구 */
display:none; /* 보이지 않게 */
}
/* 예외 */
a.show em, a.hide em, a.allshow em, a.allhide em {
 /* Ajax 효과를 준 플러그인 사용할 때
링크를 구별하는 ID 번호 문구 */

display:none; /* 보이지 않게 */
}

4. 설명

  1. 피드에는 showlinktext 문구와 함께 전문이 모두 보여진다.
  2. 숨겨진 텍스트가 3곳 이상 존재할 때는 모두 보여주기 링크가 보이도록 해놓았다.
  3. 자바스크립트를 쓰지 않고, 페이지를 로드해야 한다. (ajax 구현은 예외)
    1. 그래서 첫 페이지에는 간단하게 보여질 내용만 로드된다.
    2. 만든 이가 (단지) 자바스크립트를 이용한 토글을 별로 좋아하지 않는다…^^;

5. 업데이트 로그

  • 자바스크립트 파일 하나 줄임.
  • 주석 정리 못 함.. - 어떻게 코딩한 건가 헷갈리네;
  • Ajax 효과 구현
  • 링크 글씨에 블록 태그 올 수 없도록 str_replace("\r\n",",$hidelink) 처리함.

6. 잡담

  • preg_replace_callback 으로 구현하고 싶었지만, 도저히 $i에서 막혀서 태터툴즈 방법으로 함. 구현함~!
  • 자바스크립트를 쓰고 싶지 않았음
  • 뭐 Ajax를 이용하면 괜찮을 것 같지만 문제는 나는 Ajax를 아예 모름. 결국 함.
  • 리퍼러와 현재 주소 정보를 이용… - 엉성하다.

Categories : Wordpress

© GET PMWIKI Plug-in made by kebie

7 Comments

  1. Redlia wrote:

    와~ 저도 언젠가 만들어봐야지 생각만 하고 있었는데;; 정말 잘 만드셨네요~ 잘 쓰겠습니다~ ^_^

  2. she wrote:

    안녕하세요. 건너가보니 태터툴즈던뎅 ^^; 아시다시피 워드프레스용으로 사용하시려면 개조가 필요하겠네요. 아무튼 감사합니다.
    뭐가 뭔지... 깔끔하게 한다고 한 거지만 어떻게 만들었는지 주석도 정리 못하겠네요. -_-;

  3. Redlia wrote:

    사실은 알고리즘이 필요했습니다;; 클릭시 로딩되는 방법을 어떻게 하면 좋을까 고민중이었거든요..

  4. she wrote:

    그런가요. 완전 초짜인데 도움이 되는군요. ^^ 좋은 결과물 나오면 알려주세요. 솔직히 좋은 코드인지 잘 모르겠어서^^;

  5. 082net wrote:

    소스보기는 되는데, "u.php?번호"로 되어있는 링크를 클릭해서 받은 파일(.zip)의 내용이
    <br /> <b>Fatal error&lt;/b>: Call to undefined function: filename() in <b>/home/hosting_users/alwaysfine/www/wp-content/plugins/drain-hole/drain_plumber.php</b> on line &lt;b>58&lt;/b>&lt;br /> 이렇게 나오데 한번 확인해 주시겠습니까 ^^;

  6. she wrote:

    ^^; 아. 죄송해요. 퍼미션 문제였네요. 해결했습니다. 감사합니다.

  7. 082net wrote:

    이제 잘 받아집니다 :)