it-swarm-ko.tech

노드 콘텐츠 내에서 토큰을 교체하는 가장 좋은 방법은 무엇입니까?

나는 초보자이며 포럼 (이것을 포함하여), 책 및 설명서를 our이 찾았지만 이것에 대한 명확한 대답을 찾을 수 없습니다.

노드 본문 내의 토큰을 사용자 정의 사용자 프로파일 필드의 값으로 바꾸는 가장 좋은 방법 (사용자 정의 모듈? PHP 노드 내용 내? 다른?))은 무엇입니까?

유스 케이스 : 외부 URL 내의 텍스트를 현재 사용자에게 특정한 문자열로 바꿔야합니다. 노드 콘텐츠 내의 URL에 토큰 문자열을 넣고 현재 사용자의 프로필에서 지정된 값으로 토큰을 교체 할 수 있기를 바랍니다.

나는 사용자 정의 모듈을 만들지 않았지만 누군가가 취할 특정 경로를 추천하면 기꺼이 그것에 뛰어들 것입니다.

4
ctlarsen

토큰 필터

토큰 필터는 토큰 값을 입력 필터로 사용할 수있는 매우 간단한 모듈입니다.

5
Dave Reid

사용자 정의 토큰을 대체하는 시스템을 구현하려면 두 가지 가능성이 있는데, 동적 값으로 대체해야하는 노드 본문에있는 텍스트를 참조한다고 가정하십시오.

  • 어떤 텍스트를 대체해야하는지 정의 할 수있는 필터 모듈을 사용하십시오.
  • 노드가 표시되기 전에 노드 본문에있는 텍스트를 대체하는 사용자 정의 모듈을 사용하십시오.

첫 번째 경우, 주석에 대해서도 필터 모듈이 호출되며, 필터는 노드 본문 또는 주석 본문에서 텍스트를 바꾸는 것 사이에 차이를 만들 수 없습니다. 노드/설명 본문에 특정 텍스트가있을 때 실행되는 PHP 코드를 정의 할 수있는 모듈의 경우 성능 문제도 있습니다. PHP eval()에 대한 코드는 필요한 특정 텍스트를 대체하기 위해 특정 필터를 구현하는 사용자 정의 모듈을 정의하는 것이 좋습니다.이 경우 모듈은 알 수 없습니다 노드 또는 주석에 대해 호출되면 필터 콜백에 제공된 인수 외부에서 필터 모듈이 정보를 가져올 수 없음을 의미합니다. 이는 필터 콜백 이후 노드 작성자에 대한 정보를 얻을 수 없음을 의미합니다. 노드 또는 주석 객체를 얻지 못합니다.
Custom filter 의 경우 입력 형식에 대한 설명을 번역 할 수 없습니다. 즉, 사이트 (또는 표시되는 노드)의 언어로 영어에서 프랑스어로 전달하면보고 된 설명이 프랑스어로 표시되지 않습니다.

후자의 경우, Drupal 6에서 hook_nodeapi ( 'view') 를 구현하는 모듈은 $node->content 노드 노드를 변경합니다. 마찬가지로 hook_node_view () 를 구현하는 모듈은 Drupal 7 이상 버전에서 동일한 결과를 얻을 수 있습니다.
두 경우 모두 $node->content['body']는 양식 API에서 사용하거나 drupal_render () 에 필요한 형식을 따르는 배열로 노드 본문을 포함합니다.

개발/테스트 사이트로 사용되지 않는 사이트에 대해 PHP 입력 형식을 사용하는 것은 좋은 생각으로 간주되지 않습니다. 입력 형식을 사용하는 것보다는 사용자 지정 모듈을 구현하는 것이 좋습니다. PHP 입력 형식을 사용하여 컨텐츠 유형을 일반 컨텐츠 유형으로 바꾸고 특정 노드의 컨텐츠를 변경하는 사용자 정의 모듈을 구현 한 Drupal.org에서 수행되었습니다.

2
kiamlaluno

Custom filter 에 관심이있을 수 있습니다.

필요한 모든 필터에 대해 새 필터 모듈을 작성하는 대신이 태그를 사용하여 고유 한 태그 작성, 토큰 값 대체 및 텍스트에서 필요한 모든 변경 사항을 수행 할 수 있습니다. 간단한 대체를 사용하거나 PHP 코드를 사용하여 더 강력한 것을 작성할 수 있습니다 (예 : Geshi의 highligth 코드에 사용).

1
d3l3t3m3