Views Block의 머신 이름이“해시”(?)


20

Drupal 초보자이므로 이해가 잘못되면 나를 수정하십시오. 그러나 일반적으로 Views가 블록을 만들 때 블록의 시스템 이름이 Views의 시스템 이름에 추가됩니다.

즉 "article_listing_view-block_1"

block_load ($ module, $ block_id) 함수를 사용할 때, 내가 한 방법은 다음과 같이 호출하는 것입니다. $ block = block_load ( "views", "article_listing_view-block_1");

그러나 매우 이상한 이유로 머신 이름을 가진 하나의 특정 블록이 있습니다.

"flag_comments_as_offensive-block_1"

해시 된 컴퓨터 ID는 다음과 같습니다.

"92a591f5a81d13a3dd5492f073f9e135"

머신 ID는 블록의 머신 이름을 기반으로 직접 변경되므로 "해시"라고 말합니다. block_1에서 block으로 변경하면 변경되고 block에서 block_1로 되돌릴 때 컴퓨터 ID를 위의 상태로 되돌립니다. 따라서 머신 이름과 생성 된 "해시 된"ID 사이에는 직접적인 상관 관계가 있습니다.

block_load ( "views", "machine name")를 호출하는 대신 해시 된 컴퓨터 ID를 사용해야하는데 문제가되지 않지만 알아내는 시간 이 오래 걸렸습니다 . 내가 알아 낸 방법은 구조-> 블록으로 이동하여 "구성"링크를 가리키고 URL을 보는 것입니다. 나는 것으로 나타났습니다 모든 내 다른 블록이 컴퓨터 ID 포함 된 URL을 가지고 있지만이 특정 블록의 경우, 해시 컴퓨터 ID이었다. 비올라를 block_load에 컴퓨터 ID를 넣으면 매력처럼 작동했습니다!

그래서 질문은 다음과 같이 요약됩니다. 무엇이 진행되고 있으며 Drupal이 내 컴퓨터 이름을 해시합니까? 이것이 버그입니까, 아니면 제 실수입니까?

답변:


23

이는 블록 모듈이 최대 32 자 길이의 '델타'(블록 ID)를 예상하기 때문입니다. 그러나 뷰 블록 디스플레이는 최대 65 자 (뷰 이름에서 최대 32 자, 디스플레이 이름에서 최대 32 자)와 하이픈 '-'를 사용할 수 있습니다.

델타가 32자를 초과하면 Views는 임의의 문자열이 아닌 md5를 통해 해시합니다. CSS 및 jQuery 선택기에 안전하게 사용할 수 있습니다.


내 답변의 대부분은 drupal.org/node/346602
Capi Etheriel

감사! 나는 그것이 무작위가 아니라는 것을 알고 있었지만, 무슨 일이 일어나고 있는지 정확히 알지 못했습니다. 이것은 그것을 설명합니다 :).
Peter

4

뷰 시스템 이름은 이름이 32자를 초과하는 경우에만 해시됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.