Имя машины блока просмотра «хэшируется» (?)

20

Новичок в Drupal, так что поправьте меня, если мое понимание неверно, но обычно, когда Блок создается Представлениями, имя машины блока добавляется к имени машины Представлений.

то есть "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"

имеет идентификатор хэшированной машины:

"92a591f5a81d13a3dd5492f073f9e135"

Я говорю «хэшировано», потому что идентификатор машины изменяется в зависимости от имени машины блока. Если я изменю его с block_1 на block, он изменится, и когда я вернусь обратно из block в block_1, он вернет идентификатор машины обратно к описанному выше. Таким образом, существует прямая корреляция между именем машины и «хэшированным» идентификатором, который она генерирует.

Вместо вызова block_load («views», «имя машины») я должен использовать хешированный идентификатор машины, что не является проблемой, но мне понадобилось много времени, чтобы разобраться. Я понял, что нужно зайти в Structure -> Blocks и навести курсор мыши на ссылку «Configure» и посмотреть URL. Я заметил, что у всех моих других Блоков есть URL, который включал его идентификатор машины, но для этого конкретного блока это был хешированный идентификатор машины. Как только я вставил идентификатор машины в block_load, альт, это сработало как шарм!

Поэтому я думаю, что вопрос сводится к следующему: что происходит, и почему Drupal хэширует мое имя машины? Это ошибка или ошибка с моей стороны?

Питер
источник

Ответы:

23

Это связано с тем, что блочный модуль ожидает «дельта» (идентификатор блока) длиной до 32 символов. Но отображение блока просмотра может содержать до 65 символов: до 32 символов из имени представления и 32 символа из отображаемого имени и дефис «-» между ними.

Когда дельта превышает ограничение в 32 символа, Views хэширует его через md5 - это не случайная строка. Вы можете безопасно использовать его для селекторов CSS и jQuery.

Capi Etheriel
источник
большая часть моего ответа взята из drupal.org/node/346602
Capi Etheriel
Благодарность! Я знал, что это не случайно, но я точно не знал, что происходит. Это объясняет это :).
Питер
4

Имена компьютеров представлений хэшируются только в том случае, если длина имени превышает 32 символа.

tim.plunkett
источник