2010-06-22 4 views
0

현재 뷰를 블록으로 표시 할 때 Drupal의 뷰가 인수로 작동하는 방법에 대해 머리 숙여하고 있습니다. 몇 가지 간단한 페이지 (예 : 스튜디오/브레멘)와 해당 페이지와 일치하는 사용자 (예 : 사용자 이름 : 브레멘)가 있습니다. 사용자는 스튜디오/* 페이지에서 티져야 할 뉴스를 게시 할 수 있습니다.뷰, 인수 및 블록

arg(1)의 node_id를 해당 사용자 이름으로 변환하는 인수 처리기를 사용해야합니까, 아니면 더 쉬운 방법이 있습니까?

당신이 이해할 수 있도록 내 문제를 설명 할 수 있기를 바랍니다 ...이 전체적인 논쟁은 다소 이상합니다.

답변

1

arg (1)은 사용자 이름이나 UID가 아니며 예상대로 작동하지 않습니다. 우리가 시도 할 수있는 것은 조회를 수행하여 원형 인수 방식으로 기본 인수 값을 제공하는 것입니다.

논증이 존재하지 않는 경우 취할 조치 :은 빈 텍스트로 설정하거나 404는 사용자의 취향에 상관없이 취할 수 있습니다. 통과 문자를 인수 (1)되는 특정 페이지에 사용자 이름이 포함되지 것입니다

if ($argument) { 
    $user = db_fetch_object(db_query('SELECT name FROM {users} WHERE name = "%s"', $argument)); 
    if ($user) { 
     $handler->argument = $user->name; 
     return $user->name; 
    } 
} 

여기에 대해 확인하고 싶은 부분 (또는 허용) :

유효성 검사기에 대한 PHP 코드를 제공 SQL 주입을 유발합니다.

사용자 이름 패턴은 Pathauto로 제어 할 수 있습니다. 이렇게하면 누군가가 URL에 정크를 입력하는 것을 막을 수 없으며 Drupal/Views는 URL의 문자를 회피 할 수 있어야합니다. 논쟁이에 404 페이지 또는 빈 텍스트를 표시하도록 설정하지 않은 경우 조치를 취하도록 을 설정하여 테스트 할 수 있습니다.

보기 및보기의 미리보기 부분을 사용하여 아무 것도 반환하는지 확인하십시오. 나는 이것을 머리 위로 내밀었지만, 나는 항상 다른 종류의 내용이나 검색으로 비슷한 일을한다.

유효성 검사기를 사용자로 설정하고 숫자 UID와 문자열 사용자 이름을 모두 허용 할 수도 있습니다. 나는 그 설정을 사용하지 않았지만 가장 잘 작동 할 것입니다.

+0

이 작업이 작동하지 않거나 잘못되었습니다. 나는 무엇을 주장 하는가? "User : Name"또는 "Node : ID"? 어쨌든 코드를 디버그하는 가장 좋은 방법은 무엇입니까? 모든 출력은 무시 된 것 같습니다. –

+0

사용자 시도 : 이름. 인수는 필터 (노드 유형, 노드 상태)를 기준으로 노드의 기본 테이블 (바라건대)을 사용하여 선택할 항목을 제공합니다. – Kevin