<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Flávio Silveira &#187; CodeIgniter</title>
	<atom:link href="http://flaviosilveira.com/tag/codeigniter/feed/" rel="self" type="application/rss+xml" />
	<link>http://flaviosilveira.com</link>
	<description>Programação &#38; Desenvolvimento</description>
	<lastBuildDate>Sun, 23 May 2010 01:33:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</title>
		<link>http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/</link>
		<comments>http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 08:15:37 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programação em geral]]></category>
		<category><![CDATA[facilidade]]></category>
		<category><![CDATA[framework php]]></category>
		<category><![CDATA[Layouts]]></category>
		<category><![CDATA[mozart petter]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[Template engine]]></category>

		<guid isPermaLink="false">http://flaviosilveira.com/?p=153</guid>
		<description><![CDATA[Continuando a parte 1 deste post.
Se você perdeu a primeira parte clique aqui para ler a primeira parte.
5 &#8211; Construindo sua View
Sua View deve ser feita normalmente, como voce já está acostumado a fazer, com o nome que você colocaria normalmente.
Apenas com o conteúdo que muda de uma página para outra.
O HTML que você colocar [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter'>Múltiplos sites com CodeIgniter</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Continuando a parte 1 deste post.<br />
Se você perdeu a primeira parte <a href="http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1">clique aqui para ler a primeira parte</a>.</p>
<p><strong>5 &#8211; Construindo sua View</strong></p>
<p>Sua View deve ser feita normalmente, como voce já está acostumado a fazer, com o nome que você colocaria normalmente.<br />
Apenas com o conteúdo que muda de uma página para outra.</p>
<p>O HTML que você colocar aqui na View irá substituir a variável <em>{content_for_layout}</em> que definimos no layout acima.<br />
Vou colocar nessa nossa view de exemplo apenas um título e um parágrafo para demonstrar.<br />
Ficando assim:</p>
<pre class="brush: xml;">

&lt;h1&gt;Titulo VIEW&lt;/h1&gt;

&lt;p&gt;Paragrafo teste teste teste teste.&lt;/p&gt;
</pre>
<p>Chamei essa view de <em>home.php</em>.</p>
<p><strong>6 &#8211; Desenvolvendo a Classe</strong></p>
<p>Quando definimos nosso Hook no passo 2, setamos que a pasta onde ficaria nossa classe seria a pasta hooks que vem por padrão no projeto do CodeIgniter.</p>
<p>Vamos criar nossa classe dentro dessa pasta, e, com o nome que também especificamos na definição do Hook que foi Layout.php<br />
Se você não seguiu o exemplo, faça suas devidas adaptações.</p>
<p>A classe é um pouco extensa, leia com atenção.<br />
Para ajudar ela está com os comentários do próprio <a href="http://www.mozartpetter.com/pt/">Mozart Petter</a>.<br />
<span id="more-153"></span></p>
<pre class="brush: php;">
// Padrao do CI para não acessar a Classe direto pelo Browser
&lt;?php if (!defined('BASEPATH')) exit('No direct script access allowed');

/**
 * Layout Class
 *
 * @package hooks
 * @description Implementa as views do tipo layout no framework.
 */

class Layout
{

public $base_url;

/**
* Metodo que executa as implementacoes.
* Este metodo e chamado atraves do arquivo hooks.php
* na pasta config.
*
* @return
*/
public function init()
{
// Instancia do CI.
$CI =&amp; get_instance();

// Definindo o base_url.
$this-&gt;base_url = $CI-&gt;config-&gt;slash_item('base_url');

// Pegando a saida que o CI gera normalmente.
$output = $CI-&gt;output-&gt;get_output();

// Pegando o valor de title, se definido no controller.
$title = (isset($CI-&gt;title)) ? $CI-&gt;title : '';

// Links CSS definidos no controlador.
$css = (isset($CI-&gt;css)) ? $this-&gt;createCSSLinks($CI-&gt;css) : '';

// Links JS definidos no controlador.
$js = (isset($CI-&gt;js)) ? $this-&gt;createJSLinks($CI-&gt;js) : '';

// Se layout estiver definido e a regexp nao bater.
if (isset($CI-&gt;layout) &amp;&amp; !preg_match('/(.+).php$/', $CI-&gt;layout))
{
$CI-&gt;layout .= '.php';
}
else
{
$CI-&gt;layout = 'default.php';
}

// Definindo caminho completo do layout.
$layout = LAYOUTPATH . $CI-&gt;layout;

// Se o layout for diferente do default, e o arquivo nao existir.
if ($CI-&gt;layout !== 'default.php' &amp;&amp; !file_exists($layout))
{
// Exibe a mensagem, se o layout for diferente de '.php'.
if ($CI-&gt;layout != '.php') show_error(&quot;You have specified a invalid layout: &quot; . $CI-&gt;layout);
}

// Se o arquivo layout existir.
if (file_exists($layout))
{
// Carrega o conteudo do  arquivo.
$layout = $CI-&gt;load-&gt;file($layout, true);

// Substitui o texto {content_for_layout} pelo valor de output em layout.
$view = str_replace('{content_for_layout}', $output, $layout);

// Substitui o texto {title_for_layout} pelo valor de title em view.
$view = str_replace('{title_for_layout}', $title, $view);

// Links CSS.
$view = str_replace('{css_for_layout}', $css, $view);

// Links JS.
$view = str_replace('{js_for_layout}', $js, $view);
}
else
{
$view = $output;
}

echo $view;
}

/**
* Gera os links CSS utilizados no layout.
*
* @return void
*/
private function createCSSLinks($links)
{
$html = &quot;&quot;;

for ($i = 0; $i &lt; count($links); $i++)
{
$html .= &quot;&lt;link rel='stylesheet' type='text/css' href='&quot; . $this-&gt;base_url . CSSPATH . $links[$i] . &quot;.css' media='screen' /&gt;\n&quot;;
}

return $html;

}

/**
* Gera os links JS utilizados no layout.
*
* @return void
*/
private function createJSLinks($links)
{
$html = &quot;&quot;;

for ($i = 0; $i &lt; count($links); $i++)
{
$html .= &quot;&lt;script type='text/javascript' src='&quot; . $this-&gt;base_url . JSPATH . $links[$i] . &quot;.js'&gt;&lt;/script&gt; \n&quot;;
}

return $html;
}

}
</pre>
<p><strong>7 &#8211; Fazendo as chamadas no Controller</strong></p>
<p>Chegou o momento final!<br />
É hora de juntar tudo isso que fizemos até agora.</p>
<p>A construção do seu controller é normal, como você está acostumado, mas temos que inserir algumas variáveis globais nele.</p>
<ul>
<li>Uma para o Layout default do controller, para que você não precise fazer a mesma definição várias vezes.</li>
<li>Uma para o título, onde você pode definir um default para todos as páginas que vão surgir desse controller mas, o interessante é estar um título por página.</li>
<li>Outra para guardar um Array dos CSS&#8217;s que você vai usar na página.</li>
<li>E por último, outro Array para guardar os JavaScripts que você vai usar na página.</li>
</ul>
<p>Vejamos como fica.<br />
Acompanhe pelos comentários.</p>
<pre class="brush: php;">

&lt;?php

/**
 *
 */
class Principal extends Controller
{

/**
* Layout default utilizado pelo controlador.
*/
public $layout = 'default';

/**
* Titulo default.
*/
public $title = '::: Titulo default :::';

/**
* Definindo os css default.
*/
public $css = array('default');

/**
* Carregando os js default.
*/
public $js = array('home');

/**
* Construtora.
* @return
*/
function Principal()
{

parent::Controller();

}

// Metodoo index
function index()
{
// Carregando a view.
$this-&gt;load-&gt;view('home');
}

// Metodo teste
function teste()
{
//Title
$this-&gt;title = '::: TESTE Título :::';

//CSS
$this-&gt;css = array('test');

//JS
$this-&gt;js = array('jquery');

// Carregando a View
$this-&gt;load-&gt;view('teste');
}

}

?&gt;
</pre>
<p>Vamos reparar no seguinte.<br />
Há dois métodos nesse controller que vão chamar páginas diferentes, o index e o teste.</p>
<p>Para o index não definimos nada de Layout, Titulo, CSS ou JS.<br />
Ou seja, vai vir tudo do valor default que usamos quando definimos as variáveis globais.</p>
<p>Já no método teste, por algum motivo precisamos de um CSS, um JS e um Título diferente.<br />
Então redefinimos esses valores no nosso método com o que precisamos.</p>
<p>A gente poderia ter definido um outro Layout caso tivesse a necessidade, da mesma forma com que fiz com esses valores.<br />
Aí, claro, teria que criar um outro Layout na pasta layouts.</p>
<p>Pessoal é isso!<br />
Fazia tempo que queria escrever sobre isso, espero que ajude a galera por aí.<br />
Dúvidas podem mandar sem problemas, vou responder no que estiver a meu alcance.</p>
<p>Se você teve dificuldades, <a title="Baixar projeto Exemplo" href="http://flaviosilveira.com/wp-content/uploads/2010/02/projetoExemplo.zip">baixe o projeto pronto aqui</a> e dê uma olhada mais de perto.</p>
<p>Agradeço novamente ao <a title="Mozart Petter Developer" href="http://www.mozartpetter.com/pt/">Mozart Petter</a>, grande Brother, que implementou essa solução que uso até hoje em meus projetos. E, como sempre, também ao pessoal que garante minhas 30 visitas diárias, Valeu!</p>
<p>É isso pessoal.<br />
Até a próxima!!!</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter'>Múltiplos sites com CodeIgniter</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1</title>
		<link>http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/</link>
		<comments>http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 08:00:45 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programação em geral]]></category>
		<category><![CDATA[facilidade]]></category>
		<category><![CDATA[framework php]]></category>
		<category><![CDATA[Layouts]]></category>
		<category><![CDATA[mozart petter]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[Template engine]]></category>

		<guid isPermaLink="false">http://flaviosilveira.com/?p=145</guid>
		<description><![CDATA[Vejo muitos desenvolvedores criticarem o CodeIgniter por ele não utilizar o conceito de Layout ou ter um Template Engine dentro dele.
Template engine ou o conceito Layouts , falando em um exemplo rápido e prático seria mais ou menos o seguinte:
Pense que você tem um topo e um rodapé que nunca mudam no seu portal.
Ou seja, [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter'>Múltiplos sites com CodeIgniter</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Vejo muitos desenvolvedores criticarem o CodeIgniter por ele não utilizar o conceito de Layout ou ter um Template Engine dentro dele.</p>
<p>Template engine ou o conceito Layouts , falando em um exemplo rápido e prático seria mais ou menos o seguinte:<br />
Pense que você tem um topo e um rodapé que nunca mudam no seu portal.<br />
Ou seja, muda apenas o meio das páginas. Veja a figura abaixo.</p>
<p><img class="aligncenter size-full wp-image-146" title="Exemplo Template Engine" src="http://flaviosilveira.com/wp-content/uploads/2010/02/Screen-shot-2010-02-18-at-6.54.49-PM.png" alt="Exemplo" width="228" height="259" /><br />
<br style="clear: both;" /><br />
E aí? Você vai ter que colocar esse topo e esse rodapé em todas as páginas que você chamar?<br />
Ou você é malandro e vai fazer um include dentro das telas?<br />
<span id="more-145"></span><br />
O Include seria uma solução interessante mais uma Template Engine faria isso sozinho para você.</p>
<p>Pra quem não conhece nenhuma solução para isso, o <a href="http://www.smarty.net/">Smarty</a> é uma template Engine das mais conhecidas no mundo do PHP.<br />
Você tem uma lista com outras sugestões de Templates Engine nesse link da <a href="http://www.webresourcesdepot.com/19-promising-php-template-engines/">web Resources</a><br />
Outros frameworks como o CakePHP tem uma solução dentro dele que faz esse trabalho.</p>
<p>Nesses tempos que desenvolvo em CodeIgniter já vi bizarrices do tipo colocar o Smarty dentro do CodeIgniter ou trazer bibliotecas de outras frameworks para o Core do CodeIgniter.</p>
<p>Mas podemos estender o Core do Framework e fazer ele trabalhar junto com a gente sem precisar de muitas manobras e malabarismos. Na documentação do CodeIgniter achamos essa prática com o nome de Hooks ou se preferir o português ganchos.</p>
<p>Há alguns anos um cara que considero um dos Gurus do desenvolvimento, <a href="http://www.mozartpetter.com/pt/">Mozart Petter</a>, o qual tive a honra de trabalhar junto, pesquisou uma solução nesse sentido para que não precisássemos abandonar o CodeIgniter.</p>
<p>Você encontra vários links pesquisando no google por Layouts in CodeIgniter, onde destaco o seguinte Blog <a href="http://hasin.wordpress.com/2007/03/05/adding-yield-codeigniter/">http://hasin.wordpress.com/2007/03/05/adding-yield-codeigniter/</a></p>
<p>Abaixo vou colocar uma solução em 7 passos para você implementar isso em seu projeto de CI.<br />
É importante que você procure entender em cada passo como o CodeIgniter vai visualizar isso tudo.<br />
<em>*Não se deixe confundir. É fácil. Se ficar difícil há algo errado, volte e reveja os passos.</em></p>
<p>Como os códigos são muito extensos, vou dividir em dois posts.<br />
Parte 1 &#8211; Esse (passo 1 ao 4) e Parte 2 (passo 5 ao 7) que você <a href="http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2">acessa aqui</a>.</p>
<p>Para quem não estiver com muita paciência, estou disponibilizando também um exemplo pronto de tudo funcionando que você pode <a href="http://flaviosilveira.com/wp-content/uploads/2010/02/projetoExemplo.zip">baixar aqui</a>.<br />
Apenas confira se o .htaccess serve para o seu servidor ou máquina.</p>
<p><strong>1 &#8211; Habilitando o Codeigniter para estender o Core</strong></p>
<p>A primeira coisa a fazer é habilitar o codeIgniter para estender o Core, permitir os hooks.<br />
Isso é feito no arquivo config.php dentro da pasta config.<br />
Procure a variável $config['enable_hooks'] e troque seu valor para TRUE, ficando como abaixo.</p>
<pre class="brush: php;">
/*
|--------------------------------------------------------------------------
| Enable/Disable System Hooks
|--------------------------------------------------------------------------
|
| If you would like to use the &quot;hooks&quot; feature you must enable it by
| setting this variable to TRUE (boolean).  See the user guide for details.
|
*/
$config['enable_hooks'] = TRUE;
</pre>
<p>Pronto! Próximo passo.</p>
<p><strong>2 &#8211; Definindo um Hook</strong></p>
<p>Dentro da pasta config temos um arquivo onde deve ser feitas as definições dos hooks que você quer utilizar.<br />
Para cada hook é preciso definir um array com alguns parâmetros para que o CodeIgniter saiba o que fazer.</p>
<p><em>Importante:</em> O índice do array vai funcionar como nome do seu hook.</p>
<p>Para o nosso Hook vamos definir.</p>
<ul>
<li> O nome da Classe que você precisa.</li>
<li> O nome do método da classe que você deseja chamar.</li>
<li> O nome do arquivo onde está desenvolvida a classe.</li>
<li> O directório onde ela se encontra.</li>
</ul>
<p>Fica da seguinte forma:</p>
<pre class="brush: php;">
$hook['display_override'][] = array('class' =&gt; 'Layout',
'function' =&gt; 'init',
'filename' =&gt; 'Layout.php',
'filepath' =&gt; 'hooks');
</pre>
<p>Esses itens podem variar de acordo com o que você quiser ou precisar fazer.<br />
O manual é uma grande referência para te ajudar com isto e traz alguns detalhes que não abordo aqui.</p>
<p>Certo! Você habilitou e definiu um Hook, ou gancho. Vamos para o próximo passo.</p>
<p><strong>3 &#8211; Adicionando algumas constantes necessárias</strong></p>
<p>No arquivo index da aplicação são definidas algumas constantes que ajudam no desenvolvimento da nossa aplicação, como por exemplo,<br />
a extensão dos arquivos que serão usados, constante EXT, e o BASEPATH que traz o caminho da pasta do sistema.</p>
<p>Vamos adicionar aqui mais 3 constantes que vai nos facilitar lá na frente quando formos fazer nossa classe.</p>
<ul>
<li> LAYOUTPATH &#8211; Caminho onde ficará os layouts que construirmos.</li>
<li> JSPATH &#8211; Caminho onde ficará os arquivos com javascript.</li>
<li> CSSPATH &#8211; Caminho onde ficará os arquivos de estilo. CSS.</li>
</ul>
<p>Ficando da seguinte forma:</p>
<pre class="brush: php;">
/*
|---------------------------------------------------------------
| DEFINE APPLICATION CONSTANTS
|---------------------------------------------------------------
|
| EXT		- The file extension.  Typically &quot;.php&quot;
| SELF		- The name of THIS file (typically &quot;index.php&quot;)
| FCPATH	- The full server path to THIS file
| BASEPATH	- The full server path to the &quot;system&quot; folder
| APPPATH	- The full server path to the &quot;application&quot; folder
|
*/
define('EXT', '.php');
define('SELF', pathinfo(__FILE__, PATHINFO_BASENAME));
define('FCPATH', str_replace(SELF, '', __FILE__));
define('BASEPATH', $system_folder.'/');
define('LAYOUTPATH', $application_folder.'/layouts/');
define('JSPATH', $application_folder . '/js/');
define('CSSPATH', $application_folder . '/css/');
</pre>
<p>Reparem que usei a variável <em>$application_folder</em>, que é definida no mesmo arquivo, para completar o caminho das minhas constantes.<br />
Você pode e deve mudar isso de acordo com seu projeto.</p>
<p>Essas constantes vão facilitar também para caso você precise mudar o caminho dos arquivos CSS por exemplo. Basta alterar aqui.</p>
<p><strong>4 &#8211; Construindo seu Layout</strong></p>
<p>Vamos agora construir o seu Layout.<br />
Seria aquele topo e aquele rodapé que você não quer mexer. Ou um menu lateral.<br />
Você pode construir o que quiser.</p>
<p>O local onde vamos criar nossos layouts foi definido na constante LAYOUTPATH.</p>
<p>Você pode ter quantos layouts quiser e nomeá-los como quiser.<br />
Mas quando formos construir a classe você verá que definimos um Layout default para quando nenhum for chamado.<br />
É esse que vamos criar agora. default.php</p>
<p>No exemplo abaixo eu criei um topo que tem um menu e um rodapé simples.</p>
<pre class="brush: xml;">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1//EN&quot;
&quot;http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd&quot;&gt;
&lt;html&gt;
&lt;head&gt;

&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=iso-8859-1&quot;&gt;
&lt;title&gt;{title_for_layout}&lt;/title&gt;

{css_for_layout}
        	{js_for_layout}

&lt;/head&gt;
&lt;body&gt;
&lt;div id=&quot;geral&quot;&gt;

&lt;div id=&quot;topo&quot;&gt;
&lt;ul id=&quot;menu&quot;&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;#&quot;&gt;Link&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;

&lt;div id=&quot;meio&quot;&gt;

{content_for_layout}

&lt;/div&gt;

&lt;br style=&quot;clear: both;&quot; /&gt;

&lt;div id=&quot;rodape&quot;&gt;
&lt;p class=&quot;rodape&quot;&gt;
Todos os direitos reservados - Bla Bla Bla
&lt;/p&gt;
&lt;/div&gt;

&lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>É necessário prestar atenção em 4 variáveis que deixamos soltas no meio desse HTML do Layout.</p>
<ul>
<li> Primeira &#8211; {title_for_layout}</li>
<li> Segunda &#8211; {css_for_layout}</li>
<li> Terceira &#8211; {js_for_layout}</li>
<li> Quarta &#8211; {content_for_layout}</li>
</ul>
<p>Explicando rapidamente:<br />
Essas Strings vão ser substituídas de acordo com o que definirmos no Controller em um próximo passo.</p>
<p>No lugar de {title_for_layout} irá o título da página. É legal podermos definir um título pelo controlador para deixá-lo dinâmico e assim ajudar no SEO.</p>
<p>No lugar de {css_for_layout} e {js_for_layout} entrarão os arquivos de CSS e JavaScript que definirmos para nossa página.<br />
Você não precisa chamar todos os CSS ou JavaScripts se não for usá-los. Essa é uma grande sacada dessa solução.<br />
Lembro de pegar projetos em Smarty onde estavão definidos inúmeros JavaScripts e CSS em um top.php onde em várias páginas eles nem era usados.</p>
<p>Por último, no lugar de {content_for_layout} irá o conteúdo da nossa View.<br />
É o meio, o que muda.<br />
É o que vamos fazer no próximo passo que está no <a href="http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2">próximo post</a>.</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter'>Múltiplos sites com CodeIgniter</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</title>
		<link>http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/</link>
		<comments>http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/#comments</comments>
		<pubDate>Mon, 27 Jul 2009 03:03:23 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Programação em geral]]></category>

		<guid isPermaLink="false">http://flaviosilveira.com/?p=113</guid>
		<description><![CDATA[Cenário: 
Você compra o domínio principal, www.site.com.br. E você vai ter duas versões desse site, uma para cada cliente, que vai usar todas as regras de negócio iguais. A única diferença será o layout. Os clientes pediram os subdomínios branco.site.com.br e preto.site.com.br.
Você pode fazer duas cópias do site em pastas diferentes, mas levando em consideração [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
<li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-internet-explorer-e-o-tempo-de-expiracao-da-sessao/' rel='bookmark' title='Permanent Link: CodeIgniter, Internet Explorer e o tempo de expiração da sessão'>CodeIgniter, Internet Explorer e o tempo de expiração da sessão</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Cenário: </p>
<p>Você compra o domínio principal, <em>www.site.com.br</em>. E você vai ter duas versões desse site, uma para cada cliente, que vai usar todas as regras de negócio iguais. A única diferença será o layout. Os clientes pediram os subdomínios <em>branco.site.com.br</em> e <em>preto.site.com.br</em>.</p>
<p>Você pode fazer duas cópias do site em pastas diferentes, mas levando em consideração que eles tem o mesmo CORE, isso não é muito inteligente. Pense se você tiver que fazer uma atualização, você vai ter de mexer em ambos os projetos.</p>
<p>Porque não fazer os subdomínios como links simbólicos para uma mesma pasta? De lá você pode fazer uma verificação. Se for um site, pega o layout branco, se for o outro pega o layout preto.</p>
<p>Problema:</p>
<p>No Codeigniter você define a URL principal do seu projeto nos arquivos de configuração, na variável <em>$config['base_url']</em>. Você não vai ter como colocar os subdomínios lá. O que fazer?</p>
<p>Solução:<br />
Usar a Global <em>$_SERVER</em>.</p>
<p>Essa Global traz informações como o host que você está acessando, o email do administrador da máquina, o software usado, a configuração do TimeOut entre outras.</p>
<p>Para que você mesmo visualize tudo isso faça o seguinte. Abra o seu config.php do CodeIgniter e logo acima de onde está setado a variável <em>$config['base_url']</em> de um print_r, como abaixo:</p>
<pre class="brush: php;">

|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|       http://example.com/
|
*
print_r($_SERVER);
die;
$config['base_url']     = &quot;http://www.site.com.br/&quot;;
</pre>
<p><span id="more-113"></span><br />
Veja em seu browser todas as opções que você tem nessa global.</p>
<p>Dê uma atenção na primeira opção que vêm no array, o <em>HTTP_HOST</em>. Ele traz o endereço primário que você está acessando. É o que você precisa para setar seu config de acordo com a url que seu visitante acessar.</p>
<p>Dando um print apenas nesse cara,</p>
<pre class="brush: php;">

|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|       http://example.com/
|
*
print_r($_SERVER['HTTP_HOST']);
die;
$config['base_url']     = &quot;http://www.site.com.br/&quot;;
</pre>
<p>ele retorna o seu subdomínio.</p>
<p>Agora é só fazer uma adaptação.</p>
<pre class="brush: php;">

|--------------------------------------------------------------------------
| Base Site URL
|--------------------------------------------------------------------------
|
| URL to your CodeIgniter root. Typically this will be your base URL,
| WITH a trailing slash:
|
|       http://example.com/
|
*

$config['base_url']     = &quot;http://&quot; . $_SERVER['HTTP_HOST'];
</pre>
<p>Seja lá qual subdomínio você acessar, ele vai setar como <em>base_url</em> para você.</p>
<p>Caso você não use subdomínios, esse artifício pode ser usado para você deixar o base_url automatizado para seus projetos. </p>
<p>Espero que tenham curtido a idéia.<br />
Qualquer dúvida só mandar.<br />
Abraços!!</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
<li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-1/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 1</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-internet-explorer-e-o-tempo-de-expiracao-da-sessao/' rel='bookmark' title='Permanent Link: CodeIgniter, Internet Explorer e o tempo de expiração da sessão'>CodeIgniter, Internet Explorer e o tempo de expiração da sessão</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CodeIgniter, Internet Explorer e o tempo de expiração da sessão</title>
		<link>http://flaviosilveira.com/2009/codeigniter-internet-explorer-e-o-tempo-de-expiracao-da-sessao/</link>
		<comments>http://flaviosilveira.com/2009/codeigniter-internet-explorer-e-o-tempo-de-expiracao-da-sessao/#comments</comments>
		<pubDate>Sat, 17 Jan 2009 16:11:49 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[Internet Explorer não salva session]]></category>
		<category><![CDATA[Tempo de sessão codeIgniter]]></category>

		<guid isPermaLink="false">http://flaviosilveira.com/?p=40</guid>
		<description><![CDATA[Nesta Quinta-feira antes de sair do trabalho me deparo com uma surpresa no novo sistema que estou trabalhando.  O login de acesso havia parado de funcionar no Internet Explorer. No Firefox tudo normal. Chata mania de ficar testando só no Firefox por conta das facilidades como Firebug e WebDeveloper, ai quando vamos testar no browser [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter'>Múltiplos sites com CodeIgniter</a></li>
<li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Nesta Quinta-feira antes de sair do trabalho me deparo com uma surpresa no novo sistema que estou trabalhando.  O login de acesso havia parado de funcionar no Internet Explorer. No Firefox tudo normal. Chata mania de ficar testando só no Firefox por conta das facilidades como Firebug e WebDeveloper, ai quando vamos testar no browser do usuário acontece essas coisas.</p>
<p>Sexta pela manhã, foi minha primeira tarefa do dia. Achei que seria algo bobo. Realmente era, mas levei 4 horas para descobrir.</p>
<p>Comecei pelos arquivos de JavaScript vendo se estava tudo ok.<br />
Os retornos via ajax do banco estavam ok.<br />
Parti para os controllers que gravam a sessão no browser.<br />
Comentei a biblioteca que faz verificação da sessão para deixar eu acessar livremente a aplicação. Dei um print no valor da sessão, que pelo codeIgniter se verifica assim:</p>
<pre class="brush: php;">
//Não esqueça de chamar o helper session
// Login é o valor que eu estava gravando na sessão
print($this-&gt;session-&gt;userdata('login'));

// A tradicional global session não funcionará no codeIgniter
print($_SESSION['login']);
</pre>
<p>No Firefox tudo ok. No Internet Explorer em branco. Que beleza, o Internet Explorer não está deixando escrever na sessão&#8230;<br />
<span id="more-40"></span><br />
Navegando pelo <a href="http://www.google.com">segundo cérebro</a> não tive nenhuma resposta conclusiva. As soluções propostas não se encaixavam para mim. Atualizar versão do apache, tirar Underlines da url, tirar números do nome do servidor, nada disso fez sentido pra mim.</p>
<p>Sem idéias, me juntei ao meu amigo <a href="http://www.ronieneubauer.com">Ronie</a> e ao Rafael que também faz parte da minha equipe nesse projeto para caçar uma solução.</p>
<p>Tiramos o redirecionamento do Login, para manter na mesma página. E demos ali também um print, dessa vez em todos os valores da sessão</p>
<pre class="brush: php;">
//Print_r por se tratar de array
print_r($this-&gt;session-&gt;userdata);
</pre>
<p>Os valores estavam ali, o problema estava no redirecionamento então.</p>
<p>Quebramos a cabeça demais, e como antes estava funcionando no IE, resolvemos rever tudo de brusco que mudamos no sistema.<br />
Verificamos rotas, Jquery e seus plugins, Verificações de nível de acesso, nada.<br />
Até que me lembrei que havia mudado a configuração da sessão, para expirar em meia hora (1800 segundos) tirando do padrão de duas horas (7200 segundos) que vem no CodeIgniter. Esses valores são alterados no config.php, ali você dá de encontro com outras configurações para sua sessão, como nome dela e etc.</p>
<p>E, Sim, era isso. Voltamos ao default do codeIgniter e tudo voltou a funcionar. Me lembro de ter tido uns problemas similares trabalhando com PHP sem frameworks, mas nem suspeitava. Fomos testando para ver o mínimo que o IE iria aceitar de tempo de expiração. Chegamos no valor de 3835 segundos. Mesmo assim continuou muita instável, e setamos em 4000 segundos.</p>
<p>Problema resolvido após 4 horas de Prints, Alerts, Pesquisa, Palpites e Indignação&#8230;</p>
<p>Valeu..<br />
Abraços !!!</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter'>Múltiplos sites com CodeIgniter</a></li>
<li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2009/codeigniter-internet-explorer-e-o-tempo-de-expiracao-da-sessao/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Múltiplos sites com CodeIgniter</title>
		<link>http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/</link>
		<comments>http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/#comments</comments>
		<pubDate>Sat, 20 Dec 2008 00:08:35 +0000</pubDate>
		<dc:creator>Flávio Silveira</dc:creator>
				<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[Php]]></category>
		<category><![CDATA[framework php]]></category>
		<category><![CDATA[multiple site]]></category>

		<guid isPermaLink="false">http://www.flaviosilveira.com/?p=6</guid>
		<description><![CDATA[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 [...]

<div id="RelatedPosts">
Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/multiplos-sites-com-codeigniter-exemplo-pratico/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter &#8211; Exemplo prático'>Múltiplos sites com CodeIgniter &#8211; Exemplo prático</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
</ul></div>]]></description>
			<content:encoded><![CDATA[<p>Entrei em uma empresa recentemente, e acredito que conquistei a vaga por já ter trabalhado com CodeIgniter antes. Pra quem não sabe o <a href="http://codeigniter.com/">CodeIgniter</a> é um framework PHP com estrutura em <a href="http://pt.wikipedia.org/wiki/MVC">MVC</a>, o que deixa tudo mais organizado. E foi a ferramenta escolhida pela empresa para organizar os seus bagunçados projetos.</p>
<p>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.</p>
<p>Porém pediram para mim e meu amigo <a href="http://twitter.com/RonieNeubauer">Ronie</a>, 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 (<a href="http://www.google.com">Google</a>)!</p>
<p>Um <a href="http://codeigniter.com/wiki/Multiple_Applications/">Wiki </a>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).<br />
<img class="alignnone size-full wp-image-54" title="ci1" src="http://flaviosilveira.com/wp-content/uploads/2008/12/ci1.jpg" alt="ci1" width="148" height="139" /><br />
<br style='clear: both' /></p>
<p><span id="more-6"></span><br />
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).<br />
<img class="alignnone size-full wp-image-55" title="ci2" src="http://flaviosilveira.com/wp-content/uploads/2008/12/ci2.jpg" alt="ci2" width="126" height="119" /><br />
<br style='clear: both' /></p>
<p>Outro passo que a documentação pede, para as duas formas, é replicar o arquivo &#8220;index.php&#8221; (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.<br />
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: <strong><em>http://www.seudominio.com/site1</em></strong> ou <strong><em>http://www.seudominio.com/site2</em></strong></p>
<p>Porém, precisavamos de outra coisa.<br />
Foi pedido que separacemos a pasta dos arquivos css&#8217;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.</p>
<p>Depois de algumas idéias, rodando o tal arquivo &#8220;index.php&#8221; veio toda a solução. Simples !</p>
<p>Nesse arquivo é setado o endereço da pasta System, e, como já vimos antes, da pasta Application. Putz.. Ai fica tudo muito fácil.</p>
<p>Jogamos uma pasta system na raiz do servidor, e renomeamos para CI.</p>
<p>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 &#8220;app&#8221;, Uma pasta &#8220;www&#8221;, para os CSS&#8217;s e Imagens de Layout, e por último uma pasta &#8220;includes&#8221;, para Uploads do usuário como fotos de notícias, PDF&#8217;s e etc. Ficou como tento demonstrar abaixo:</p>
<p><img class="alignnone size-full wp-image-56" title="ci3" src="http://flaviosilveira.com/wp-content/uploads/2008/12/ci3.jpg" alt="ci3" width="169" height="210" /><br />
<br style="clear: both" /></p>
<p>Não queriamos deixar as cópias dos &#8220;index.php&#8221; 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 &#8220;index&#8221; não é mesmo ? Então para acessar cada site, é só entrar na pasta principal. Ele pega o index.php, e faz todo o Trabalho <em>Hard Mode.</em><em></em></p>
<p><em></em>Nossa URL então, ficou apenas com o dominio do site<em>, </em>que é apontado para pasta do site. Como cada pasta tem o index, fechou.<em><br />
</em></p>
<p>Na edição dos arquivos &#8220;index.php&#8221;, setamos a variável $system_folder da seguinte maneira:</p>
<pre class="brush: php;">

$system_folder = &quot;../CI&quot;;
</pre>
<p>Dois pontos para quem não sabe, volta um diretório. e CI, foi o nome que demos para nossa pasta system. Resumindo: <em>Volta um e entra na pasta CI</em></p>
<p>Apontamos a variável $application_folder para nossa réplica da pasta Application, que é a pasta app no exemplo acima.</p>
<pre class="brush: php;">

$application_folder = &quot;app&quot;;
</pre>
<p>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 &#8220;index.php&#8221;, da maneira correta.</p>
<p>Confira um exemplo passo a passo, <a href="http://flaviosilveira.com/2009/multiplos-sites-com-codeigniter-exemplo-pratico/">clicando aqui.</a></p>
<p>Em breve mais posts sobre CodeIgniter. Valeu !!!</p>


<div id="RelatedPosts"><p>Posts Relacionados<ul><li><a href='http://flaviosilveira.com/2009/multiplos-sites-com-codeigniter-exemplo-pratico/' rel='bookmark' title='Permanent Link: Múltiplos sites com CodeIgniter &#8211; Exemplo prático'>Múltiplos sites com CodeIgniter &#8211; Exemplo prático</a></li>
<li><a href='http://flaviosilveira.com/2009/codeigniter-use-a-global-_server-no-config-para-ganhar-dinamismo-com-subdominios/' rel='bookmark' title='Permanent Link: CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.'>CodeIgniter: Use a Global $_SERVER no config para ganhar dinamismo com subdomínios.</a></li>
<li><a href='http://flaviosilveira.com/2010/habilitando-layouts-no-codeigniter-template-engine-2/' rel='bookmark' title='Permanent Link: Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2'>Habilitando Layouts no CodeIgniter (Template Engine) &#8211; Parte 2</a></li>
</ul></p></div>]]></content:encoded>
			<wfw:commentRss>http://flaviosilveira.com/2008/alterando-configuracao-do-codeigniter/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
	</channel>
</rss>
