Интегрированная модель на основе CMS для Rails - PullRequest
0 голосов
/ 24 марта 2012

У меня есть сайт, близкий к завершению строительства. По сути, он состоит из пользователей и фотографий. Тем не менее, фотографии имеют много связей HABTM, большинство из которых представляют собой различные виды тегов, а другие категории, коллекции и т. Д. *

Мой клиент хотел бы иметь условную CMS на основе контента, просматриваемого для различных рекламных целей или еще чего-нибудь. Например, если пользователь просматривает категорию «Лепреконы», он может захотеть показать html-контент о Дне Святого Патрика или о чем-то подобном. Он может даже захотеть легко включить имя пользователя в браузере, если оно доступно. В этом случае было бы неплохо иметь какую-то систему шаблонов. Часть, которая делает это хитрым, состоит в том, что это небольшие блоки HTML для чего-то вроде 300x300 места на боковой панели, и НЕ являются основным контентом.

Я смотрел на нефтеперерабатывающий завод, но это кажется слишком сложным решением. Я также думал о создании с нуля, но я не знаю, с чего начать рассматривать динамически генерируемые страницы (такие как новая категория) как распознаваемый объект в Rails. Я бы хотел, чтобы он был более глобальным, чем ряд отношений HABTM, но, похоже, именно туда я и направляюсь. В идеале он мог бы создать HTML-код и установить флажок «Я хотел бы, чтобы это отображалось на страницах категорий x и y, а также на странице коллекции b и z, а также для тега Foo и для панели тегов, а также на моей домашней странице. «

Есть предложения? Я открыт, чтобы найти драгоценный камень или получить хорошее начало на домашнем пиве.

UPDATE

Я думаю о настройке некоторых моделей, например:

cms_contents
============
id:integer
contents:text
timestamps

cms_associations
================
id:integer
cms_content_id:integer
model_id:integer
record_id:integer #optional
secondary_model_id:integer #optional
secondary_record_id:integer #optional

models
======
id:integer
name:string

Где:

  • cms_content будет содержать HTML.
  • cms_associations будет моделью ActiveRecord, использующей has_many, :through
  • models будет содержать модели, с которыми может быть связан контент CMS
  • , если record_id не задано, оно ассоциируется с модельным индексом
  • если record_id задано , это связано с записью предоставленной модели с этим ID
  • если дана вторичная информация, создается комбинация для многих, многих ко многим отношения

например:

User has_many :photos
Browsing Photos for User(10)
model_id => #User model Id
record_id => 10
secondary_model_id => #Photo model id

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

Есть мысли об этой структуре?

Ответы [ 2 ]

2 голосов
/ 27 марта 2012

Это на самом деле не так уж сложно. Вот что вы должны сделать:

  • Введите новый объект в БД, назовите его htmlchunks
  • Для каждого объекта, который вы хотите связать с htmlchunks , создайте таблицу соединений и определите habtm отношение
  • Измените вашу боковую панель (для объектов, которые связаны с htmlchunks ) таким образом, чтобы они распознавали, существует ли htmlchunk , связанный с этим конкретным объектом. Например, предположим, что у вас есть htmlchunk под названием "April Fools 'Day", который содержит простой HTML-абзац. На боковой панели вы просто спросите что-то вроде @ category.htmlchunk? и вывод в соответствии с результатом. Вы бы идеально разместили все это в частичном
  • Что касается создания htmlchunks , вы бы просто предложили простой редактор wisiwig и возможность выбирать любое количество тегов, категорий, что угодно. Вы бы создали записи habtm между ними и htmlchunks в процессе создания

Дайте мне знать, если у вас есть дополнительные вопросы в комментариях.

0 голосов
/ 02 апреля 2012

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

http://railscasts.com/episodes/336-copycopter?autoplay=true

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...