2009-09-06 6 views
2

그래서 몇 가지 사용자 정의 프로파일 필드 (관리 -> 프로파일)를 추가했습니다. 데이터베이스에 정보를 저장할 수없는 경우에는 괜찮지 만 완전히 쓸모가 없습니다. 저는 지금 거의 행운이 일을하지 않고 "최선의 방법"을 찾아 내려고 노력하고 있습니다.Drupal 6 : 사용자 정의 프로파일 필드 및 DB에 데이터 저장

사용자 테이블에 새 열을 추가합니까? 완전히 새로운 테이블을 만들 수 있습니까? 어쨌든 코어 프로파일 모듈이 저 컬럼을 추가 했어야한다는 모호한 언급을 발견했습니다. 그리고 핵심 프로파일 모듈에서 CCK를 사용할 수 있어야합니다 (그러나 이에 대한 옵션은 없습니다).

는 그리고 나는 ...

PS의 arrrggg을 분명히 사용자가 자신의 필드를 업데이트 할 수 있도록 할 것입니다하지만, 사용자 정의 프로파일 필드는 $ 양식 배열에 포함되지 않습니다! 드루팔 (Drupal)은 불일치로 나를 굴러 다니며 항상 해킹해야합니다!

+0

하하, 지금 정확히 똑같은 것을 찾고 있습니다. –

답변

4

핵심 프로파일 모듈을 사용하는 경우 데이터베이스 저장소가 자동으로 제공되므로 데이터베이스에서 어떤 것도 수정할 필요가 없습니다. 설치시 모듈은 사용자 정의 필드 정의를 저장하는 profile_fields과 해당 필드에 대한 사용자 제공 데이터를 저장하는 profile_values 두 개의 테이블을 데이터베이스에 추가합니다.

필드는 구현을 통해 profile_user()에 자동으로 사용자 편집 양식에 추가됩니다.로드 할 때 해당 필드의 값을 사용자 개체에 추가하는 데 동일한 메커니즘이 사용됩니다.

필드가 표시되지 않으면 문제가 생깁니다. 필드에 '카테고리'를 추가 했습니까? 그렇다면 표준 사용자 편집 페이지에는 표시되지 않지만 추가 새로운 페이지 (카테고리 당 하나)에 표시됩니다. 이들은 메뉴 유형 MENU_LOCAL_TASK으로 추가되므로 사용자 편집 페이지 상단에 새로운 '탭'항목을 만들어야합니다. 탭을 표시하지 않는 테마가있을 수도 있습니다.
확인해야 할 또 다른 사항은 필드 구성 양식에서 선택한 필드 표시 설정입니다. '숨김'으로 설정하면 관리자 및 모듈/테마 코드에서만 필드에 액세스 할 수 있습니다. 사용자가 직접 편집해야한다면 '비공개'로 설정해야합니다.

CCK 필드를 사용하는 경우 핵심 프로필 모듈 (아마도 일부 확장 모듈에서 제공)을 사용하여 가능하지 않다고 생각합니다. 다른 접근 방식은 Content Profile Module입니다. 프로파일 값이 표준 Drupal 노드로 저장되도록 사용자 프로파일에 대한 사용자 정의 노드 유형을 작성합니다. 한 가지 이점은 프로파일에 대해 모든 CCK 필드를 사용할 수 있다는 것입니다. 생성 된 노드 유형에 추가해야하기 때문입니다.

+0

profile_fields 테이블 (모든 필드 저장)과 profile_values ​​테이블 (필드 ID와 사용자 ID가 일치 함) ... oh ... 잠시만 기다려주십시오 ... 1 초 ... 알았습니다. 소급하지 마라! 해당 입력란은 새 등록 사용자에게만 적용되며 이전 사용자에게는 적용되지 않습니다. 바보 같으니, 이제 테이블에 매번 기존 필드에 새 필드를 추가해야한다는 것을 기억해야합니다. 이 필드가 기존 사용자에게 적용되는지 확인하는 옵션이 있는지 알고 있습니까? – EddyR

+0

테이블 이름 - yup에 관해서는'profile_schema'가 아닌'profile_values'입니다. 수정하여 수정합니다. '소급 적용되지 않는다'는 것에 대해 나는 당신이 정확히 무엇을 의미하는지 확신 할 수 없다. 이 부분을 로컬에서 테스트하면 범주/필드가 모든 사용자의 사용자 편집 페이지에 즉시 표시되지만 사용자가 실제로 필드를 채운 경우에만 'profile_values' 테이블에 항목이 있습니다 (즉, Drupal은 거기에서 '비어있는'입구). –

관련 문제