Вы здесь

Хранить данные полей блоков в таблице variable?

2

Привет друпалурги.

Собственно сабж, какие плюсы и минусы?

Для примера: Есть блок с каруселью логотипов партнеров и их названия. Штук 20 - 30 условно. С каким подводными камнями я столкнусь? Создавать conent type для этого не хотелось бы. Плюс ко всему сейчас очень много лендингов, и типа материалов не нужны, только блоки.
Что думаете?

Версия Drupal: 
7.x
Категория: 
Block APIDatabase API
Вопрос задан 09.07.2015 - 19:10

Ответы

2

Можно хранить в переменных, но лучше создать свою таблицу, как например делает модуль block_class.

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

Ответ дан 09.07.2015 - 20:18
Аватар пользователя drupby
drupby
456

Может я что путаю, но разве можно сериализованные данные не в blob столбец пихать?

Комментарий оставлен 09.07.2015 - 20:38

переменная жрёт память при каждом бутстрапе

Комментарий оставлен 09.07.2015 - 20:44

Может я что путаю, но разве можно сериализованные данные не в blob столбец пихать?

Вот таблица variable

CREATE TABLE IF NOT EXISTS `variable` (
  `name` varchar(128) NOT NULL DEFAULT '' COMMENT 'The name of the variable.',
  `value` longblob NOT NULL COMMENT 'The value of the variable.'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='Named variable/value pairs created by Drupal core or any...';
Комментарий оставлен 09.07.2015 - 20:49

переменная жрёт память при каждом бутстрапе

так или иначе переменные при бутстрапе берутся из кеша, или ты имеешь в виду, что если $conf будет больше на один элемент, то он займет больше памяти?

Комментарий оставлен 09.07.2015 - 21:01

если $conf будет больше на один элемент, то он займет больше памяти?

Так точно.

Комментарий оставлен 09.07.2015 - 22:02
1

Можно хранить в переменных, но лучше создать свою таблицу, как например делает модуль block_class.

Ответ дан 09.07.2015 - 19:17
Аватар пользователя xandeadx
xandeadx
1542

Я тоже за отдельную таблицу в БД.

Комментарий оставлен 09.07.2015 - 19:24
1

Модуль Block Attributes добавляет поля к блоку и позволяет через хук создавать свои. Хранит данные в дополнительном поле в БД в таблице blocks в сериализованном виде.
Для лендингов недавно нашел модуль Paragraphs. В деле испробовать не успел, но по словам разработчиков можно создавать свои типы блоков (параграфов) и перетаскивать драг-н-дропом.

Ответ дан 09.07.2015 - 20:52

тоже видел, даже пытался заюзать для лонгиридов. Хотел слайдшоу сделать внутри ноды, так там картинки 1440x600 5 штук, перетаскивать (d&d) очень неудобно.
Админка неюзабельна для клиента. Пытался сделать как в https://buildwithcraft.com/features/matrix, но пока отложил.

Комментарий оставлен 10.07.2015 - 10:04

Хотел слайдшоу сделать внутри ноды, так там картинки 1440x600 5 штук, перетаскивать (d&d) очень неудобно.

Заверните группу полей с картинками в Fieldset какой-нибудь, и сделайте по умолчанию свернутым. Ну, как в модуле Field Group. Плюс картинки же в админке не в полный размер? :-)

Комментарий оставлен 10.07.2015 - 14:52

По хорошему нужно чтобы были реальные размеры. И в идеале in place :), чтобы минимизировать время затраченное на оформление ноды. Но не думаю что paragraphs тут поможет, нужет такой wysiwyg, ждем 8ку :)

Комментарий оставлен 15.07.2015 - 12:05

А, ну тогда надо для CKEditor виджеты делать, и панельку плавающую со списком виджетов.
Плюс в 8-ке как раз есть инлайн-редактирование.

Комментарий оставлен 15.07.2015 - 12:37