Как сохранить контент вне функций?


У меня есть множество страниц панелей, которые я отслеживаю с помощью модуля функций. В настоящее время, если я создаю пользовательскую панель содержимого внутри страницы, все содержимое, находящееся внутри этой панели, затем сохраняется в коде.

Если я сделаю пользовательскую панель содержимого многоразовой или вместо нее буду использовать блок, на нее будет ссылаться идентификатор. Я тоже не хочу такого поведения. Например, я создаю блок в своей среде разработки, добавляю его на свою страницу и фиксирую свою функцию, содержащую эту страницу для контроля версий. Когда я переношу эти изменения в свою тестовую среду, страница ищет блок с определенным идентификатором. Скорее всего, блок не будет существовать, и я должен пойти и создать его. Однако, когда я это сделаю, нет никакой гарантии, что у моего блока будет тот же идентификатор. Что еще хуже, блок может уже существовать с этим идентификатором, и страница будет использовать блок с совершенно нежелательным контентом!

Блоки, организованные с использованием контекстного модуля, а не панелей, имеют ту же проблему, я думать.

Я ищу модуль или подход, который позволит мне зарезервировать место для контента. Я вообще не хочу, чтобы этот контент содержался в коде (моя функция), но я хочу, чтобы функция знала, что на моей панели или в контексте есть место, зарезервированное для этого контента. Изменение содержимого не должно приводить к тому, что функция будет отображаться как переопределенная.

Существует ли существующий модуль, который обеспечивает эту функциональность? Если нет, с какими разработчиками модулей мне следует связаться, чтобы получить такие вещи реализовано? Или для этого потребуется создать целый новый модуль?

Возможно, я даже неправильно понимаю текущее поведение этих модулей. Любая помощь будет признательна.

Кстати, я не думаю, что это проблема, характерная для одной версии Drupal, но если вам нужно выбрать версию Drupal для обсуждения, я бы сказал 7.

 4
Author: arussell84, 2011-06-08

3 answers

Хотя я не думаю, что это решает вашу проблему нежелания включать контент в функцию вообще, я знаю 2 способа создания блоков, которые не используют числовые идентификаторы, и поэтому их можно безопасно включить в функцию.

  1. Коробки

  2. Бобы

Лично я предпочитаю бобовый подход, так как бобовые пакеты полностью доступны на местах, что позволяет создавать очень продвинутые типы блоков. Оба однако, по сути, эти модули позволяют создавать блоки с именами машин (доказательство функций), а не с числовыми идентификаторами, которые, как вы знаете, являются настоящей занозой в заднице, когда дело доходит до интеграции функций.

РЕДАКТИРОВАТЬ: на самом деле, теперь, когда я думаю об этом, Bean не создает блоки с именами машин - он использует числовые идентификаторы. Это типы компонентов (например, Типы контента), которые имеют имена машин. Итак, если вам нужны блоки с именами машин, то лучше всего использовать коробки.

 3
Author: Tom Kirkpatrick, 2011-06-08 20:08:44

Поэтому я открыл несколько билетов с соответствующими модулями:

К сожалению, кажется, что вообще нет элегантного способа добиться этого.

 1
Author: arussell84, 2012-02-27 18:03:03

Я только что прочитал о модуле, который позволяет вам это делать, Панели фасоли:

Предоставляет тип содержимого ctools для модуля bean, позволяющий размещать его на панелях.

Особенности
Ослабьте сцепление, введите свою дельту бобов - дельте не нужно существовать. Если дельта не существует и разрешений достаточно представляет ссылку для добавления компонента. Чистое отделение от содержимого и конфигурации - ваша панель привязана к дельте бобов , но содержимое не обязательно существовать.

 0
Author: arjan, 2012-07-14 23:17:17