set 16

Sistema de temes per rails

Tag: Programació, rails, rubymad93 @ 3:41 am

L'altre dia mirant de fer una web programada sota ruby on rails amb diversos temes no vaig trobar cap plugin que em permetés fer això. Tampoc vaig trobar cap codi vàlid per a fer-ho, i el plugin que vaig trobar ja estava desfasat i no estava suportat per les noves versions de rails. Així que em vaig haver d'espavilar una mica ;)

Per a fer-ho vaig anar a app/controllers/application.rb , allí vaig afegir-hi:


class ApplicationController < ActionController::Base
# Pick a unique cookie name to distinguish our session data from others'
session :session_key => 'fansub'
helper :Application
before_filter :tria_tema


private
def tria_tema
unless params[:tema].blank?
@cookies[:tema] = params[:tema]
@session[:tema] = params[:tema]
else
@session[:tema] = @cookies[:tema]
end
if @session[:tema].blank?
@tema="Tema_per_defecte"
else
@tema=@session[:tema]
end
end
end

Amb el before_filter obliguem a executar-se al mètode tria_tema. Aquest mètode busca la cookie tema, que contindria el tema que ha triat l'usuari. Si no el troba llavors tria el tema per defecte.

Llavors a views/layout només fa falta fer un fitxer rhtml, per exemple _rediccionador.rhtml:

<%= render :partial=> "#{@tema}/principal" %>

El primer és un fitxer comodí, m'explico. A ell l'hi apuntarem qualsevol altre enllaç a layout, com seria per exemple, enllacos.rhtml, on per fer-ho posaríem el mateix codi però amb layout/redireccionador (tingueu en compte que dono per suposat que el lloc web té una imatge 'general' i no va canviant de plana en plana, tot i així no és problema, doncs com veieu es tracta de redireccionar, per tant es pot fer com vulgui i redireccionant cada arxiu al que es vulgui.

Els temes estarien a dintre views, en una carpeta amb el nom del tema.

No és molt ruby style, n'estic segur... però funciona de conya ;)

Comparteix i gaudeix:
  • La Tafanera
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks

Leave a Reply