Flávio Silveira Programação & Desenvolvimento

  • BLOG
  • SOBRE

Múltiplos sites com CodeIgniter

December 19th, 2008  |  Published in CodeIgniter, Php  |  10 Comments

Entrei em uma empresa recentemente, e acredito que conquistei a vaga por já ter trabalhado com CodeIgniter antes. Pra quem não sabe o CodeIgniter é um framework PHP com estrutura em MVC, o que deixa tudo mais organizado. E foi a ferramenta escolhida pela empresa para organizar os seus bagunçados projetos.

Apesar de já ter trabalhado com CodeIgniter antes, nunca havia me envolvido tanto, entrado em suas configurações principais e etc. Me limitava ao superficial para fazer funcionar. Controler, consulta no banco pelo Model, chama a view para mostrar o conteúdo e fechou. No máximo chamar uma library.

Porém pediram para mim e meu amigo Ronie, que já tinhamos experiência com a ferramenta, para deixar ela configurada para múltiplos sites. Já tinhamos visto isso antes. Vamos lá! Pesquisar no segundo cérebro (Google)!

Um Wiki no site oficial propõe duas maneiras para se trabalhar com múltiplos sites em CodeIgniter. A primeira seria criando as pastas principais dos sites dentro de Application (Application é onde fica a estrutura do site). Funciona como se cada pasta dessa, fosse um application. Logo, você deve replicar o conteúdo da pasta application que vem por padrão no CodeIgniter para cada site que for ter, renomeando para um nome de acordo (No exemplo abaixo a pasta site1 e a pasta site2).
ci1


A segunda forma é bem similar. Você tiraria as pastas principais de dentro do Application, trazendo para a mesma raiz do system(system é onde fica o core do codeigniter).
ci2

Outro passo que a documentação pede, para as duas formas, é replicar o arquivo “index.php” (Nos exemplos acima representados por site1.php e site2.php), que vem por padrão na raiz do codeigniter, junto com a pasta system e a pasta application.
Deve se fazer essa réplica, para cada site/pasta principal, e editar a variável $application_folder, que devem conter o caminho para sua respectiva pasta principal. Nos exemplos do Wiki ele renomeia cada index para sua pasta do site, para ter como acessar cada site. que ficaria: http://www.seudominio.com/site1 ou http://www.seudominio.com/site2

Porém, precisavamos de outra coisa.
Foi pedido que separacemos a pasta dos arquivos css’s para fora da aplicação do CodeIgniter. Para que apenas o pessoal da programação tivesse acesso a isso. O pessoal do Layout (do CSS) não interferiria na Aplicação.

Depois de algumas idéias, rodando o tal arquivo “index.php” veio toda a solução. Simples !

Nesse arquivo é setado o endereço da pasta System, e, como já vimos antes, da pasta Application. Putz.. Ai fica tudo muito fácil.

Jogamos uma pasta system na raiz do servidor, e renomeamos para CI.

Para cada site, fizemos uma pasta principal (para onde o domínio é apontado). Dentro dessa pasta principal colocamos a Réplica do Application, com o nome de “app”, Uma pasta “www”, para os CSS’s e Imagens de Layout, e por último uma pasta “includes”, para Uploads do usuário como fotos de notícias, PDF’s e etc. Ficou como tento demonstrar abaixo:

ci3

Não queriamos deixar as cópias dos “index.php” soltas para fora de tudo, como o Wiki deixa a entender. Colocamos dentro de cada Pasta Principal. O que facilitou no sentido da URL, pois geralmente quando você entra em uma pasta pelo browser, ele procura por um “index” não é mesmo ? Então para acessar cada site, é só entrar na pasta principal. Ele pega o index.php, e faz todo o Trabalho Hard Mode.

Nossa URL então, ficou apenas com o dominio do site, que é apontado para pasta do site. Como cada pasta tem o index, fechou.

Na edição dos arquivos “index.php”, setamos a variável $system_folder da seguinte maneira:


$system_folder = "../CI";

Dois pontos para quem não sabe, volta um diretório. e CI, foi o nome que demos para nossa pasta system. Resumindo: Volta um e entra na pasta CI

Apontamos a variável $application_folder para nossa réplica da pasta Application, que é a pasta app no exemplo acima.


$application_folder = "app";

E isso resolve tudo. Ou seja, Podemos fazer a organização do nosso projeto para múltiplos sites como achar melhor. É só editar o cara que manda em tudo, que é o arquivo “index.php”, da maneira correta.

Confira um exemplo passo a passo, clicando aqui.

Em breve mais posts sobre CodeIgniter. Valeu !!!

Compartilhe
  • Print
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • LinkedIn
  • Live
  • MySpace
  • PDF
  • RSS
  • Twitter
  • email

Posts Relacionados

  • Múltiplos sites com CodeIgniter – Exemplo prático
  • CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.
  • Habilitando Layouts no CodeIgniter (Template Engine) – Parte 2

Comentários

Feed
Trackback
  1. Leonardo disse:

    December 19th, 2008 at 16:40 (#)

    Começou bem cara!
    Vou estar sempre lendo por aqui.
    Eu gosto muito do Symfony, mas o CodeIgniter é muito bom também.
    Abraços!

  2. admin disse:

    December 19th, 2008 at 17:41 (#)

    Valeu cara…

  3. Ahcor disse:

    January 7th, 2009 at 07:20 (#)

    Só uma dúvida…
    CI fica no seguinte caminho:

    raiz/CI

    Logo o ‘index.php’ fica no caminho:

    raiz/nome do site/index.php ou

    raiz/nome do site/App/index.php

    ‘Brigadão’!

  4. admin disse:

    January 7th, 2009 at 17:57 (#)

    CI fica na raiz do servidor….

    Também na raiz do servidor estão as pastas principais dos sites…
    Dentro dessa pasta principal eu tenho a app e as outras funcionalidades para o site…

    O index.php está dentro da pasta App, ou seja..
    raiz/nome do site/App/index.php

    Qualquer dúvida manda ai…
    Valeu!!! grande Abraço !!

  5. Ahcor disse:

    January 8th, 2009 at 08:43 (#)

    MUITO FERA!
    Resolveu vários problemas…

    Estou pensando em criar um TÓPICO no forum do http://www.codeigniter.com.br para repassar sua dica para outros desenvolvedores – com os devidos créditos e link.

    O que você acha? Me autoriza?

    Um forte abraço.

  6. admin disse:

    January 8th, 2009 at 16:12 (#)

    Claro cara….

    Mande ver lá….Aí nos mande o Link…
    Grande Abraço !!!

  7. Djalma disse:

    January 22nd, 2009 at 10:33 (#)

    xo ve s entendi..

    a pasta CI ta um nivel antes de ‘htdocs’ no caso? quando vc fala em raiz do servidor.. certo?

    e pra cada aplicacao vc cria http://www.aplicacao.com e configura a variavel $application_folder = “app”; ?

    mas como ficaria a url no caso ?

  8. admin disse:

    January 22nd, 2009 at 17:17 (#)

    htdocs ??? caso você instale um xampp ou um similar você coloca os seus sites na pasta htdocs…será isso que você está falando ??

    Se for…htdocs é a sua raiz.
    Ali estará o seu core do CodeIgniter (Pasta CI)….
    e para cada site que você quiser você criará uma pasta dele…
    Dentro dessa pasta, vai ter a pasta da aplicação..
    Também dentro desta pasta você terá um index.php, que ai você vai configurar os caminhos e etc…

    Acho que são os pseudo-desenhos que estão confundindo a galera….

    Vou rever o texto, dar uma melhorada nele..e colocar umas imagens…quem sabe soltar um exemplo…

    Valeu Cara….

  9. Djalma disse:

    January 26th, 2009 at 06:05 (#)

    Isso, deve ser isso mesmo, a minha duvida é em relacao ao index.php Principal de todo o CI, o que chama tanto o application_folder como o core..

    como seria esse redirecionamento..

    tenta por uns desenhos, que so assim burro entende (EU)

    se nao quiser, tudo bem, ta tranquilo e valeu pela resposta..

    abraços

  10. admin disse:

    January 27th, 2009 at 16:15 (#)

    Fiz um post montando um exemplo passo a passo para a galera entender melhor…

    http://flaviosilveira.com/2009/multiplos-sites-com-codeigniter-exemplo-pratico/

    Valeu !!

Deixe um comentário

Flávio Silveira

Programação & Desenvolvimentominha foto

Rss Logo Twitter Logo

Blogroll

  • Aurélio Marinho Jargas
  • Fábio Tomio
  • Mozart Petter
  • Renie Siqueira
  • Willian Rodriguez

Tags & Categorias

add-ons Apache apple arrays Banco de Dados CodeIgniter complementos Configuração PHP debug erro 500 erros de servidor facilidade formatação via sql Forms framework php geração de cadastros Geração de formulários Internet Explorer não salva session iphone ipod touch Layouts mozart petter mozilla firefox multiple site múltiplos sites com codeIgniter Php postgres Programação em geral reestruturando CodeIgniter Shell smarty SQL Template engine Tempo de sessão codeIgniter Apache (1)
Banco de Dados (3)
Browsers (2)
CodeIgniter (7)
IPhone – Desenvolvimento (2)
JavaScript (1)
Php (9)
Programação em geral (9)
Programação SQL (3)
Screencast (1)
Servidor (1)
Shell Script (1)

WP Cumulus Flash tag cloud by Roy Tanck requires Flash Player 9 or better.



©2010 Flávio Silveira
Powered by WordPress adapted of Gridline Lite of author Graph Paper Press.