나는 이것이 오래된 스레드라는 것을 알고 있지만, 반드시 드루팔 (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
어떻게 했습니까? smart_ip로 뷰를 어떻게 참여 시켰습니까? –