2010-04-16 2 views
4

Я хотел бы добавить медиа-библиотеку в специально созданный CMS, который построен на Zend Framework и Doctrine. Цель состоит в том, чтобы создать что-то вроде медиа-библиотеки Worpress: вы можете загружать медиафайлы и затем прикреплять их, например, к статье.Написание собственной медиа-библиотеки: с чего начать?

У вас есть предложения, как начать с этого? Как создать базу данных? Есть ли какой-нибудь код, который я могу (повторно) использовать для его создания? Есть ли литература, которую я должен прочитать по этому вопросу? Благодаря!!

ответ

2

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

Что касается структуры таблицы, если вы хотите связать многие-ко-многим вы хотите перекрестную таблицу ссылок, что-то вроде:

record_id (int) 
media_id (int) 
title (text) 
caption (text) 
rank (int) 

Затем стол СМИ будет что-то вроде:

id (int) 
title (text) 
caption (text) 
filename (text) 
type (image|multimedia|document) 

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

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

Если контент, который ссылается на носитель, поступает из нескольких таблиц, скажем, что у вас есть таблица под названием «штат», а другая называется «продукты», и они могут ссылаться на носитель, тогда в таблице перекрестных ссылок также должно быть table_name поле. Поле типа - это то, что вы можете легко получить только мультимедийные файлы, прикрепленные к записи, или только изображения; вы можете подсчитать, сколько документов прилагается, сколько изображений и т. д., основываясь на этом имени файла при каждом запросе, означает, что у вас более медленные запросы.

Одна вещь, которая не совсем удовлетворяет, - это размещение СМИ вне сайта. Если вы используете «Amazon S3» для хранения этих изображений, поле «filename» на самом деле будет URL-адресом для изображения. Я просто снимаю это там, как что-то, что нужно учитывать при разработке медиа-библиотеки.

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

Удачи.

0

написать файл загрузчик и файловый браузер
, что все