/ / Campos personalizados en Refinery CMS - ruby-on-rails, ruby, content-management-system, refinerycms

Campos personalizados en CMS de refinería: ruby-on-rails, ruby, content-management-system, refinerycms

¿Cómo agregar campos personalizados en Refinery CMS? Es decir, me gustaría ampliar el modelo de página básico para incluir un montón de otras cosas, como capturas de pantalla, nombre del editor, categoría y una variedad de otros campos. ¿Cómo implementas eso?

Respuestas

2 para la respuesta № 1

Eche un vistazo a la (excelente) Guía de Introducción a la Refinería. En la Sección 6, la guía explica cómo agregar campos adicionales, en el ejemplo de fecha, imagen y propaganda, utilizando motores:

http://refinerycms.com/guides/getting-started-with-refinery#extending-refinery-with-your-first-engine


7 para la respuesta № 2

Para expandir un modelo base de refinería, generar un motor no siempre es una opción.

Amplié el modelo de página por un campo de fecha

  • migrar la tabla de páginas
  • parche mono el modelo de página
  • Añadir (de hecho expandir) un parcial en el formulario.

en detalle:

rails g migration AddDateToPage event_date:date
rake db:migrate

añadir app / models / page.rb con

require Refinery::Pages::Engine.config.root + "app" + "models" + "page"
class Page
attr_accessible :event_date
end

expande el modelo de página para que mi campo personalizado se establezca por asignación de masa (gracias a http://railsrx.com/2011/04/15/overriding-refinery-extending-globalize-and-pow/ para la declaración de exigencia).

Ahora cree el archivo app / views / admin / pages / _form_fields_after_title.html.erb que es un código auxiliar proporcionado por la refinería. También puedes crearlo con

rake refinery:override view=admin/pages/_form_fields_after_title

Aquí definí el campo de formulario (f se establece con un objeto form_for por refinería)

<div class="field">
<%= f.label :event_date, t("admin.pages.event_date") %>
<%= f.text_field :event_date %>
</div>

Después de reiniciar la aplicación, el nuevo campo está activo.