2012-02-20 5 views
3

사용자가있는 위치를 기반으로 특정 콘텐츠/노드 만 표시 할 수 있어야합니다. 예를 들어 사용자가 미국인 인 경우 유럽인과 다른 결과를보아야합니다.Drupal은 위치를 기반으로 특정 콘텐츠 만 표시합니다.

각 노드를 표시해야하는 영역으로 태그를 지정할 수 있고 콘텐츠가 표시 될 때 이러한 태그로 필터링됩니다.

또한 다양한 콘텐츠 '스크롤러'를 사용하여 콘텐츠를 표시 할 예정이며이 콘텐츠는 위치에 따라 다른 콘텐츠를 가지기를 바랍니다.

어떻게하면 좋을까요?

+0

어떻게 했습니까? smart_ip로 뷰를 어떻게 참여 시켰습니까? –

답변

3

사용보기 - 같은 멋진 모듈 : 그들은 도움이 될 것입니다 smart_iphttp://drupal.org/project/smart_ip & IP를 위치 정보http://drupal.org/project/ip_geoloc

  • 그 모듈 페이지의 정보를 읽어와 같은

    1. 사용 모듈은 당신이 올바른 궤도에 올라

    기본적으로 사용자의 위치를 ​​가져 오려면이 위치에 저장해야합니다. 세션에서 일단 참조하면 언제든지 참조 할 수 있습니다.

  • 0

    나는 이것이 오래된 스레드라는 것을 알고 있지만, 반드시 드루팔 (Drupal에서 쉬운 해결책이있는 것은 아닙니다. 여기 내가 어떻게 그랬어. 이 솔루션은 원본 질문과 정확하게 일치하지 않지만 PHP 코드를 확장하여 사용자 위치를 각 노드에 할당 된 분류 용어와 비교하여 해당 시나리오를 포괄 할 수있는 방법을 설명합니다.

    먼저 IP2Country를 설치하십시오. 이렇게하면 위치 정보 조회를 수행하여 다른 사람의 국가와 IP 주소를 일치시킬 수 있습니다.

    둘째, 방문자의 IP 주소가 특정 국가와 일치하는지 확인하려면 다음과 같은 PHP 코드를 사용하십시오. 이 예는 방문객이 미국 또는 캐나다에 있으면 true를 반환하고 그렇지 않은 경우 false를 반환합니다.

    <?php 
        $detectedcountry = module_invoke('ip2country','get_country',$_SERVER['REMOTE_ADDR']); 
        $countries = array(
         'US','CA' 
        ); 
        if(in_array($detectedcountry,$countries)){ 
         return true; 
        } 
        else return false; 
    ?> 
    

    이 코드는 여러 곳에서 사용할 수 있지만 PHP 필터 모듈을 사용하려면 작동시킬 필요가 있습니다. 패널이 아닌 HTTP 응답을 반환 (뿐만 아니라 분류 용어 템플릿 수)

    첫째,이 노드 템플릿에 대한 패널 변형을 만들어 내 솔루션에서

    , 나는 두 가지 방법으로이 코드를 사용 창유리. 이 코드를 선택 규칙으로 사용 했으므로 특정 노드 유형을 볼 수있는 국가에 사용자가 없다면 404를 반환합니다. 그런 다음 위치 기반으로 자격을 갖춘 사람을 위해 노드 페이지를 반환 한 패널 변형을 만들었습니다.

    둘째, 노드 유형 (이 경우 Product)에 대한 패널 변형을 만들고 동일한 PHP 코드를 사용하여 페이지에서 특정 위치를 숨길 수없는 사용자를 숨 깁니다 . 이 경우 제품 디스플레이 페이지에서 가격 및 장바구니에 추가 창을 숨 깁니다. 허용 된 국가 이외의 방문자는 페이지의 전자 상거래 요소가 아닌 제품 정보 만 보았습니다.

    세 번째 옵션으로 동일한 코드를 사용하여 Drupal 블록을 표시/숨기기 위해 사용할 수도 있습니다.

    마지막으로 사용자 테마 기능을 만들었으므로 사람의 위치에 따라 개별 메뉴 항목을 표시하거나 숨길 수 있습니다. 이 경우, 허용 된 국가에 있지 않는 한 Shop 메뉴 항목을 숨기려고했습니다. 여기에 더 자세히 설명하는 방법에 대해 썼습니다 : https://fiveminutelessons.com/learn-drupal-sitebuilding/show-or-hide-menu-item-drupal-7-based-users-location

    관련 문제