KBoard 퍼스트 콘텐츠몰 스킨 리스트 및 결제내용 변경

안녕하세요?

코스모스회원관리 로  pg결제 후 포인트를 적립하여

KBoard 퍼스트 콘텐츠몰 에서 가상상품을 포인트 차감으로 다운로드 하게 구현하고 싶습니다.

KBoard 퍼스트 콘텐츠몰 스킨 소스에 영문이 한글로 번역이 되어서 인지 찾을수가 없어서 요청드립니다.

https://imgur.com/a/MvspOYp

위 이미지와 같이

1. 게시판 리스트, 항목에 대한 디테일화면에서

 (판매가격>>포인트,  100(원)>> 포인트,  결제금액>>결제포인트 구매하기>> 포인트구매

이렇게 화면 상으로 나오는 부분을 변경하고자 합니다.

2. 로그인 사용자만 사용할 수 있게 하였는데, 로그인 안한상태에서 위 이미지를 보면 (품절)로 표기 됩니다.

   >>품절표시 없애기

3. 결제화면에서 포인트로 만 결제 화면이 나올 수 있게하고, 메세지로  없을시 포인트 구매로 넘기는 작업입니다.(현재 경고창 뜸) 

위 내용에 대해서 도움 주시면 감사하겠습니다.

 

 

 

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    1번, 2번

    KBoard 플러그인에서 문구는 gettext 필터를 활용하시면 편집 가능합니다.

    아래의 코드를 활용해보시겠어요?

    add_action('kboard_skin_header', 'kboard_skin_header_20201030', 10, 1);
    function kboard_skin_header_20201030($builder){
    	$board = $builder->board;
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		add_filter('gettext', 'gettext_20201030', 10, 3);
    	}
    }
    
    function gettext_20201030($translated_text, $text, $domain){
    	if($domain == 'kboard'){
    		switch($translated_text){
    			case '판매가격': $translated_text = '포인트'; break;
    			case '총 가격': $translated_text = '총 포인트'; break;
    			case '결제금액': $translated_text = '결제포인트'; break;
    			case '구매하기': $translated_text = '포인트구매'; break;
    		}
    		
    		if($translated_text == '품절' && !is_user_logged_in()){
    			$translated_text = '';
    		}
    	}
    	return $translated_text;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.

    다른 문구도 수정하시려면

    위의 코드 중 아래의 코드를 찾아서

    case '구매하기': $translated_text = '포인트구매'; break;

    아래의 코드처럼 추가해보세요.

    case '주문정보확인': $translated_text = '주문정보'; break;

     

    상품 가격 표시 단위는 kboard_currency_format 필터를 활용하시면 편집 가능합니다.

    기존 원 단위에서 포인트로 교체하시려면

    아래의 코드를 추가해보세요.

    add_filter('kboard_currency_format', 'kboard_currency_format_20201030', 10, 2);
    function kboard_currency_format_20201030($format, $board){
    	if($board->id == '1'){ // 실제 게시판 id로 적용해주세요.
    		$format = '%s 포인트';
    	}
    	
    	return $format;
    }

    위의 코드에서 $board->id == '1' 부분은 실제 게시판 id로 적용해보세요.

     

    테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.

     

    3. 포인트 부족 시 표시되는 alert 창은

    FTP로 접속해서 /wp-content/plugins/kboard/skin/사용중인스킨/order.php 파일에

    아래의 코드로 표시하고 있습니다.

    alert('포인트가 부족합니다. 포인트를 입력하고 정보를 업데이트해주세요.');
    jQuery('[name="<?php echo $order->getFieldName('use_points')?>"]').focus();
    return false;

    아래의 코드로 교체하시면 alert 창 표시 후 원하는 페이지로 이동 가능합니다.

    alert('포인트가 부족합니다. 포인트를 입력하고 정보를 업데이트해주세요.');
    window.location.href = '페이지주소';
    return false;

    위의 코드에서 페이지주소 부분은 실제 이동할 페이지 주소로 교체해보세요.

    고맙습니다.

  • 위 내용대로 진행해해보고 있습니다. 도움 주셔서 매우 감사합니다.

  • KBoard 퍼스트 콘텐츠몰 스킨은 계층형 카테고리가 지원이 안되나요?

     위 질문 내용을 구현해보았는데,  카테고리가 많아서 하나의 게시판으로 계층형 카테고리를 적용하여 각각의 카테고리를 메뉴에 적용해보려고 했습니다.

    KBoard 퍼스트 콘텐츠몰 스킨은 계층형 카테고리 지원이 안되는것 같습니다. 맞나요?

    여러개의 게시판을 만들어서 콘텐츠몰스킨을 넣어야 될것같습니다.

    그럴려면 원표시를 포인트로 바꾸는것은 액션필터 값들을 다시 넣어야 하는지요?

    -------------

    add_filter('kboard_currency_format', 'kboard_currency_format_20201030', 10, 2); function kboard_currency_format_20201030($format, $board){ if($board->id == '1'){ // 실제 게시판 id로 적용해주세요. $format = '%s 포인트'; } return $format; }

    -------------

    그래서  Gettext override translations 플러그인을 설치하여 다른 내용들은 바뀌는데 원표시는 안바뀌네요.

     

  • 안녕하세요.

    KBoard 퍼스트 콘텐츠몰 스킨에 계층형 카테고리를 추가해서 업데이트했습니다.

    최신 버전으로 업데이트하신 후에 확인해보시겠어요?

     

    스킨 업데이트는

    워드프레스 관리자 -> 스토어 페이지에서 설치하기 버튼을 눌러주시면 업데이트가 완료됩니다.

     

    kboard_currency_format 필터를 여러 게시판에 적용되게 하시려면

    $board->id == '1' 부분을 in_array($board->id, array('1', '2', '3')) 이런 식으로 적용해주시겠어요?

    array('1', '2', '3') 쪽의 숫자는 각 게시판 id로 적용해주시면 됩니다.

    고맙습니다.

  • 감사합니다. 실행해보겠습니다.

  • 아래와 같이 적용해보면, 치명적오류 발생합니다.

    컨텐츠몰>> functions.php 적용

    add_action('kboard_skin_header', 'kboard_skin_header_20201030', 10, 1);
    function kboard_skin_header_20201030($builder){
        $board = $builder->board;
        if(in_array($board->id, array('1', '8')){ // 실제 게시판 id로 적용해주세요.
            add_filter('gettext', 'gettext_20201030', 10, 3);
        }
    }

    function gettext_20201030($translated_text, $text, $domain){
        if($domain == 'kboard'){
            switch($translated_text){
                case '판매가격': $translated_text = '포인트'; break;
                case '총 가격': $translated_text = '총 포인트'; break;
                case '결제금액': $translated_text = '결제포인트'; break;
                case '구매하기': $translated_text = '포인트구매'; break;
            }
            
            if($translated_text == '품절' && !is_user_logged_in()){
                $translated_text = '';
            }
        }
        return $translated_text;
    }

  • 다시한번 봐주세요.

    add_action('kboard_skin_header', 'kboard_skin_header_20201030', 10, 1);
    function kboard_skin_header_20201030($builder){
        $board = $builder->board;
        if($in_array(board->id, array('1', '8')){ // 실제 게시판 id로 적용해주세요.
            add_filter('gettext', 'gettext_20201030', 10, 3);
        }
    }

    function gettext_20201030($translated_text, $text, $domain){
        if($domain == 'kboard'){
            switch($translated_text){
                case '판매가격': $translated_text = '포인트'; break;
                case '총 가격': $translated_text = '총 포인트'; break;
                case '결제금액': $translated_text = '결제포인트'; break;
                case '구매하기': $translated_text = '포인트구매'; break;
            }
            
            if($translated_text == '품절' && !is_user_logged_in()){
                $translated_text = '';
            }
        }
        return $translated_text;
    }

    add_filter('kboard_currency_format', 'kboard_currency_format_20201030', 10, 2);
    function kboard_currency_format_20201030($format, $board){
        if($in_array(board->id, array('1', '8',)){ // 실제 게시판 id로 적용해주세요.
            $format = '%s 포인트';
        }
        
        return $format;
    }
     

  •  

    위와 같이 적용하면 워드프레스 치명적 오류가 나와서 혹시나 해서 gettext에 있는 옵션은 다시 제거했습니다.

    https://imgur.com/undefined

    추가적으로
    gettex 에 있는란을 보면  description (will only be shown in this form) 이 있는데 각 페이지 주소를 넣어도 되는지도 궁금합니다.

  • 프로그램 코드를 올려야 할 경우 반드시 에디터의 코드 스니펫 삽입 기능을 사용해주세요.

    이미지 링크가 올바르지 않은 듯합니다.

    또한 올려주신 코드를 확인해보니 코드를 잘못 수정하신 듯합니다.

    아래의 코드로 교체해서 테스트해보시겠어요?

    add_action('kboard_skin_header', 'kboard_skin_header_20201030', 10, 1);
    function kboard_skin_header_20201030($builder){
    	$board = $builder->board;
    	if(in_array($board->id, array('1', '8'))){ // 실제 게시판 id로 적용해주세요.
    		add_filter('gettext', 'gettext_20201030', 10, 3);
    	}
    }
    
    function gettext_20201030($translated_text, $text, $domain){
    	if($domain == 'kboard'){
    		switch($translated_text){
    			case '판매가격': $translated_text = '포인트'; break;
    			case '총 가격': $translated_text = '총 포인트'; break;
    			case '결제금액': $translated_text = '결제포인트'; break;
    			case '구매하기': $translated_text = '포인트구매'; break;
    		}
    		
    		if($translated_text == '품절' && !is_user_logged_in()){
    			$translated_text = '';
    		}
    	}
    	return $translated_text;
    }
    
    add_filter('kboard_currency_format', 'kboard_currency_format_20201030', 10, 2);
    function kboard_currency_format_20201030($format, $board){
    	if(in_array($board->id, array('1', '8'))){ // 실제 게시판 id로 적용해주세요.
    		$format = '%s 포인트';
    	}
    	
    	return $format;
    }

     

    추가로 설명을 드리자면, PHP in_array 함수는 배열 내에 특정 문자열이 있는지 체크하는 함수입니다.

    그렇기 때문에 변수 기호인 $는 함수명 앞에 적용하시면 안 됩니다.

     

    코드 수정 시 디버그 모드를 활성화하시면 에러 메시지를 확인하실 수 있으며

    에러 메시지가 표시되는 파일 위치도 확인하실 수 있습니다.

    워드프레스 에러 확인하기 - 디버그 모드 활성화 방법

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기