У меня была схожая проблема, я хотел, чтобы у меня были изображения с собственными описаниями и другими атрибутами, а также были включены в Галерею с описанием галереи.
Это может быть больше, чем вы ищете, но вот модель изображения:
var keystone = require('keystone'),
Types = keystone.Field.Types;
/**
* Image Model
* ==================
*/
var Image = new keystone.List('Image', {
map: { name: 'name' },
autokey: { path: 'slug', from: 'name', unique: true }
});
Image.add({
name: { type: String, required: true },
image: { type: Types.CloudinaryImage, autoCleanup: true, required: true, initial: false },
description: { type: Types.Textarea, height: 150 },
});
Image.relationship({ ref: 'Gallery', path: 'heroImage' });
Image.relationship({ ref: 'Gallery', path: 'images' });
Image.register();
И Галереи, содержащие эти изображения выглядит следующим образом:
var keystone = require('keystone'),
Types = keystone.Field.Types;
/**
* Gallery Model
* =============
*/
var Gallery = new keystone.List('Gallery', {
map: { name: 'name' },
autokey: { path: 'slug', from: 'name', unique: true }
});
Gallery.add({
name: { type: String, required: true},
published: {type: Types.Select, options: 'yes, no', default: 'no', index: true, emptyOption: false},
publishedDate: { type: Types.Date, index: true, dependsOn: { published: 'yes' } },
description: { type: Types.Textarea, height: 150 },
heroImage : { type: Types.Relationship, ref: 'Image' },
images : { type: Types.Relationship, ref: 'Image', many: true }
});
Gallery.defaultColumns = 'title, published|20%, publishedDate|20%';
Gallery.register();
Вам нужно будет создать Template Views и Routes to Handle this, но это не слишком большая работа - это только модели. Сообщите мне, если вы хотите, чтобы я опубликовал маршруты, которые я использую для этого, я использую Handlebars для своих просмотров, поэтому это может быть не так полезно.
Я сейчас изучаю проблему. Добавление описания ко всей галерее довольно просто: все, что вам нужно сделать, - это изменить модель галереи в 'models/Gallery.js', чтобы добавить поле типа' Types.Textarea', а затем изменить шаблон галереи, чтобы отобразить описание, и вы настроены. Но добавление заголовка к * каждому * изображению является гораздо более сложной задачей, поскольку для добавления описания потребуется какой-то интерфейс, а затем сохранить данные в базе данных. – MaxArt
Что вы подразумеваете под «caption»? какой-нибудь текст на веб-странице рядом с изображением, который его описывает? какой-нибудь текст? некоторый заголовок текста? их сочетание? –
Я имею в виду текст, связанный с каждым изображением. На данный момент вы можете добавить общее поле, описывающее галерею, но связать описание с загруженным изображением невозможно. – Katie