2010-11-23 3 views
1

Drupal 6 모듈에 몇 가지 기능을 추가하고 싶습니다. 특정 노드 제목 옆에 이미지를 삽입하고 싶습니다 (스팬과 img 태그 포함). mymodule_preprocess_node()를 구현하고 제목을 수정하여이 작업을 수행 할 수 있다고 생각했습니다. 그러나 Drupal은 XSS 공격을 피하기 위해 모든 태그를 제거합니다.테마 레이어가 아닌 Drupal 모듈의 노드 제목에 HTML을 추가하십시오.

테마 레이어 (가장 일반적으로 http://drupal.org/node/28537)와 관련된 많은 솔루션을 보았지만 주제가 아닌 모듈에서이를 수행하고 싶습니다. .tpl.php 파일이나 template.php를 수정하고 싶지 않습니다. 아무도 나에게 이걸하는 방법에 대한 조언을 줄 수 있습니까?

답변

0

'특정 노드 제목'으로 - 특정 노드 유형의 모든 노드 제목을 의미합니까?

그렇다면 CSS 만 사용하여 노드 스타일을 지정할 수 있습니다. 기본적으로 모든 노드에는 노드 유형에 해당하는 클래스가 있습니다. CSS 배경 이미지를 사용하여 이미지를 노드 제목에 추가 할 수 있습니다.

모듈에서 drupal_add_css을 호출하고 필요한 CSS를 페이지에 추가 할 수 있습니다. 이 방법은 테마 독립적입니다.

+0

이 작동 것입니다 ... 예를 들어, 문서의 검색을 할 수 있으며, 뭔가 다른 제목을 변경하거나 정해진 ID 등을 사용할 수 있습니다 이미지를 추가하는 것이지만 그 이상의 것이 아닙니다. 그러나 내가 필요로하는 HTML 태그를 얻을 수있는 방법을 찾지 못하면이 방법을 사용할 수 있습니다. 이미지를 표시하는 것이 아무 것도없는 것보다 낫습니다. 위에서 언급했듯이 이미지는 상황에 따라 바뀌므로 각 이미지마다 다른 스타일 시트가 있어야하고로드 할 때 추가 할 스타일 시트를 선택해야합니다. – Elizabeth

2

여러분은 preprocess_node()를 시도해 본 결과, 노드 제목의 일부로 img 태그를 저장하는 경우 Drupal이 $ node-> title을 (를) 통해 check_plain in template_preprocess_node().

실제 이미지를 이미지 필드로 저장하는 것이 좋습니다 (크기 조정을 위해 imagefield 모듈과 imagecache의 조합을 사용). 지정된 필드 유형에 대한 CCK 표시 탭에서 해당 필드의 표시를 숨기도록 설정하십시오 , 그리고 모듈의 전처리 함수에 $ title 변수의 일부가 될 이미지를 첨부하십시오. 이 솔루션을 사용하면 만들 필요가있는 모든보기의 제목 옆에 이미지를 표시 할 수도 있습니다.

+1

불행히도 이미지 변경 - 표시되는 이미지는이 노드가 다른 노드와 비교하여 얼마나 자주로드되었는지에 따라 달라집니다. 따라서 노드와 함께 정적 이미지를 저장할 수는 없습니다. 페이지를로드 할 때마다 추가 할 이미지를 찾아야합니다. – Elizabeth

0

더 쉬운 방법은 javascript/Jquery를 사용하는 것입니다. 특정 노드 유형에서만 호출되는 Jquery 스크립트를 작성하고 drupal의 뷰 수를 jscript로 전달합니다.

module_preprocess_node에서 drupal_add_js()를 호출하고 뷰 수나 이미지 링크가 포함 된 변수를 스크립트에 전달할 수 있습니다. 다음과 같이 입력하십시오 :

<?php 
drupal_add_js("var mymodule_imagelink = " . drupal_to_js($imagelink) . ";", 'inline'); 
drupal_add_js("my_js_file.js"); 
?> 

그런 다음 my_js_file.js에서 텍스트를 변경하십시오. 이것을 성취하는 방법에는 여러 가지가 있습니다. 난 그냥 필요한 경우

Find text string using jQuery?

http://api.jquery.com/replaceWith/