<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2portuguesefull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Alex Hiroshi</title>
	
	<link>http://alexhiroshi.com.br</link>
	<description />
	<lastBuildDate>Sat, 04 Jun 2011 14:39:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/alexhiroshi" /><feedburner:info uri="alexhiroshi" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/alexhiroshi" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://www.plusmo.com/add?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://plusmo.com/res/graphics/fbplusmo.gif">Subscribe with Plusmo</feedburner:feedFlare><feedburner:feedFlare href="http://www.thefreedictionary.com/_/hp/AddRSS.aspx?http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://img.tfd.com/hp/addToTheFreeDictionary.gif">Subscribe with The Free Dictionary</feedburner:feedFlare><feedburner:feedFlare href="http://www.bitty.com/manual/?contenttype=rssfeed&amp;contentvalue=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.bitty.com/img/bittychicklet_91x17.gif">Subscribe with Bitty Browser</feedburner:feedFlare><feedburner:feedFlare href="http://www.live.com/?add=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://tkfiles.storage.msn.com/x1piYkpqHC_35nIp1gLE68-wvzLZO8iXl_JMledmJQXP-XTBOLfmQv4zhj4MhcWEJh_GtoBIiAl1Mjh-ndp9k47If7hTaFno0mxW9_i3p_5qQw">Subscribe with Live.com</feedburner:feedFlare><feedburner:feedFlare href="http://mix.excite.eu/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://image.excite.co.uk/mix/addtomix.gif">Subscribe with Excite MIX</feedburner:feedFlare><feedburner:feedFlare href="http://www.webwag.com/wwgthis.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.webwag.com/images/wwgthis.gif">Subscribe with Webwag</feedburner:feedFlare><feedburner:feedFlare href="http://www.podcastready.com/oneclick_bookmark.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.podcastready.com/images/podcastready_button.gif">Subscribe with Podcast Ready</feedburner:feedFlare><feedburner:feedFlare href="http://www.wikio.com/subscribe?url=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.wikio.com/shared/img/add2wikio.gif">Subscribe with Wikio</feedburner:feedFlare><feedburner:feedFlare href="http://www.dailyrotation.com/index.php?feed=http%3A%2F%2Ffeeds.feedburner.com%2Falexhiroshi" src="http://www.dailyrotation.com/rss-dr2.gif">Subscribe with Daily Rotation</feedburner:feedFlare><item>
		<title>Como Desenvolver Extensões para ExpressionEngine 2 – Parte 2</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/CZDBw5tooZw/</link>
		<comments>http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 11:48:28 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[ee]]></category>
		<category><![CDATA[extensões]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=134</guid>
		<description><![CDATA[<p>Vamos dar continuidade ao tutorial de <a title="Como Desenvolver Extensões para ExpressionEngine 2 - Parte 1" href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1">como desenvolver extensões para o CMS ExpressionEngine 2</a>. Se você ainda não leu a primeira parte do tutorial, <a title="Como Desenvolver Extensões para ExpressionEngine 2 - Parte 1" href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1">leia</a> para conseguir entender melhor esse post.</p>
<p>Como havia falado na primeira parte, agora só falta o método que enviará o título e o link do post para o Twitter. </p>
<p>Com a nova API do Twitter, é preciso fazer autenticação para atualizar a nossa timeline. Para faciltar, [...] <a href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>Vamos dar continuidade ao tutorial de <a title="Como Desenvolver Extensões para ExpressionEngine 2 - Parte 1" href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1">como desenvolver extensões para o CMS ExpressionEngine 2</a>. Se você ainda não leu a primeira parte do tutorial, <a title="Como Desenvolver Extensões para ExpressionEngine 2 - Parte 1" href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1">leia</a> para conseguir entender melhor esse post.</p>
<p>Como havia falado na primeira parte, agora só falta o método que enviará o título e o link do post para o Twitter. </p>
<p>Com a nova API do Twitter, é preciso fazer autenticação para atualizar a nossa timeline. Para faciltar, vamos baixar uma biblioteca de autenticação do Twitter <a href="http://www.haughin.com/code/twitter/" title="Biblioteca CodeIgniter para API Twitter">nesse site</a>.  Essa biblioteca é para o CodeIgniter, o que servirá tranquilamente para essa extensão.</p>
<p>Após descompactar o zip, copie o arquivo Twitter.php, que está em CodeIgniter Twitter API/libraries para a pasta da extesão do Twitter que estamos criando. <em>(system/expressionengine/third_party/twitter_post)</em>. Uma pergunta que pode ser feita neste ponto, é: por ser uma biblioteca feita para o CodeIgniter, podemos copiar o arquivo para  <em>system/codeigniter/system/libraries</em> ou até mesmo para <em>system/expressionengine/libraries</em>? A reposta é sim! Mas é importante que sempre deixe os arquivos utilizados em uma extensão (plugins, módulos etc), em uma única pasta, no caso a pasta da própria extensão.  Se a biblioteca ficasse em algum desses diretórios, seria só incluir a classe utilizando o método padrão do framework:</p>
<div class="igBar"><span id="lphp-5"><a href="#" onclick="javascript:showPlainTxt('php-5'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-5">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span>-&gt;<span style="color:#006600;">load</span>-&gt;<span style="color:#006600;">library</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'twitter'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Bom, voltando ao desenvolvimento da extensão, agora é só começar a escrever o método que irá atualizar o Twitter.</p>
<p>O método, que será nomeada como <strong>twitter_update</strong>, descrito nas configurações do método activate_extension, irá receber três parâmetros: $id, que é o id do post; $post, que é um array com algumas informações do post (channel_id, author_id, ip_address, title, url_title etc) e $opc, que também tem informações do post - essas informações são de campos adicionais e da revisão do post, que é praticamente igual ao parâmetro $post. Nessa extensão, não usaremos nem o $id, nem o $opc, o que não impede você usar futuramente.</p>
<h3>O método twitter_update</h3>
<p>Comentei linha por linha do código e explicarei melhor logo abaixo.</p>
<div class="igBar"><span id="lphp-6"><a href="#" onclick="javascript:showPlainTxt('php-6'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-6">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> twitter_update<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$id</span>, <span style="color:#0000FF;">$post</span>, <span style="color:#0000FF;">$opc</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Verifica se o arquivo da classe existe</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span> !<a href="http://www.php.net/file_exists"><span style="color:#000066;">file_exists</span></a><span style="color:#006600; font-weight:bold;">&#40;</span>PATH_THIRD . <span style="color:#FF0000;">'twitter_post/Twitter.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">FALSE</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Carrega o arquivo com a classe de autenticação do Twitter</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">include_once</span><span style="color:#006600; font-weight:bold;">&#40;</span>PATH_THIRD . <span style="color:#FF0000;">'twitter_post/Twitter.php'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Verifica se a classe existe</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span> !<a href="http://www.php.net/class_exists"><span style="color:#000066;">class_exists</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'Twitter'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#000000; font-weight:bold;">FALSE</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Cria uma instância da classe 'Twitter'</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">twitter</span> = <span style="color:#000000; font-weight:bold;">new</span> Twitter;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Busca as configurações do banco de dados</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$conf_consumer_key</span>&nbsp; &nbsp; &nbsp; &nbsp; = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'consumer_key'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$conf_consumer_secret</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;= <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'consumer_secret'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$conf_consumer_keyacess_token</span>&nbsp; &nbsp;= <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'acess_token'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$conf_acess_token_secret</span>&nbsp; &nbsp; &nbsp; &nbsp; = <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'acess_token_secret'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Envia a autenticação com as configurações</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">twitter</span>-&gt;<span style="color:#006600;">oauth</span><span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$conf_consumer_key</span>, <span style="color:#0000FF;">$conf_consumer_secret</span>, <span style="color:#0000FF;">$conf_consumer_keyacess_token</span>, <span style="color:#0000FF;">$conf_acess_token_secret</span> <span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#008000;">/**</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Verifica qual é o status do post.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * O Twitter só deve ser atualizado se o post estiver aberto (open)</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#616100;">if</span> <span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#0000FF;">$post</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'status'</span><span style="color:#006600; font-weight:bold;">&#93;</span> == <span style="color:#FF0000;">"open"</span> <span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#008000;">/*</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Preparando mensagem que será enviada para o Twitter</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; * Ex.: Novo Post: título do post - http://site.com.br/view/url_do_post</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; */</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$mensagemTwitter</span> = <span style="color:#0000FF;">$post</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'title'</span><span style="color:#006600; font-weight:bold;">&#93;</span> . <span style="color:#FF0000;">" - "</span> . <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span>-&gt;<span style="color:#006600;">config</span>-&gt;<span style="color:#006600;">item</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'site_url'</span><span style="color:#006600; font-weight:bold;">&#41;</span> . <span style="color:#FF0000;">"view/"</span> . <span style="color:#0000FF;">$post</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'url_title'</span><span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">twitter</span>-&gt;<span style="color:#006600;">call</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'statuses/update'</span>, <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'status'</span> =&gt; <span style="color:#0000FF;">$mensagemTwitter</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span>&nbsp; &nbsp;&nbsp; &nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>As primeiras linhas são bem simples. Apenas verifica, adiciona e instância a classe que baixamos. Veja que foi usado uma constante para adicionar o arquivo (PATH_THIRD). Essa é uma das constantes que o ExpressionEngine disponibiliza para uso por todo o sistema. Caso queira saber outras constantes disponíveis, use a função <a href="http://php.net/manual/en/function.get-defined-constants.php" title="Função get_defined_constants">get_defined_constants()</a>, do php.</p>
<div class="igBar"><span id="lphp-7"><a href="#" onclick="javascript:showPlainTxt('php-7'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-7">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><a href="http://www.php.net/print_r"><span style="color:#000066;">print_r</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><a href="http://www.php.net/get_defined_constants"><span style="color:#000066;">get_defined_constants</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>As quatro linhas seguintes recuperam as configurações salvas no banco de dados. Isso é feito só colocando o nome da configuração nas chaves de $this->settings.</p>
<p>Logo depois foi chamado o método oauth() para fazer a autenticação com o sistema do Twitter.  Enviamos para o método as configurações que foram cadastradas no banco de dados. Essas configurações são disponibilizadas pelo Twitter (<a href="#api-twitter" title="Como obter o Consumer Key, Consumer Secret, Access Token e o Access Token Secret">veja abaixo como pegar essas informações</a>). Após a autenticação, é preciso verificar se o post foi publicado – o post pode ficar fechado/pendente.</p>
<p>A linha seguinte formata a mensagem que será publicada no Twitter.</p>
<div class="igBar"><span id="lphp-8"><a href="#" onclick="javascript:showPlainTxt('php-8'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-8">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$mensagemTwitter</span> = <span style="color:#0000FF;">$post</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'title'</span><span style="color:#006600; font-weight:bold;">&#93;</span> . <span style="color:#FF0000;">" - "</span> . <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span>-&gt;<span style="color:#006600;">config</span>-&gt;<span style="color:#006600;">item</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'site_url'</span><span style="color:#006600; font-weight:bold;">&#41;</span> . <span style="color:#FF0000;">"view/"</span> . <span style="color:#0000FF;">$post</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#FF0000;">'url_title'</span><span style="color:#006600; font-weight:bold;">&#93;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Nesse linha usamos um dos parâmetros do método, o $post. Como foi dito no começo desse post, essa variável é um array e com ele é possível recuperar o título e a url do post. A url, nesse caso, não inclui o domínio do site, apenas a url referênte ao post. Para pegar o domínio todo é usado $this->EE->config->item('site_url'), que retorna o domínio e o caminho da instalação do ExpressionEngine. O “view” é o template criado para exibir o post (isso vai depender de como você nomeou o seu template).</p>
<p>Depois de formatar a mensagem, o sistema publica no Twitter chamando o método call().</p>
<h3 id="api-twitter">Como obter o Consumer Key, Consumer Secret, Access Token e o Access Token Secret</h3>
<p>Se você ainda não tem nenhuma aplicação no Twitter ou quer ter uma só para o uso da extensão, registre uma nova aplicação em <a href="http://dev.twitter.com/apps/new" title="Registrar nova aplicação no Twitter">http://dev.twitter.com/apps/new</a>.<br />
O cadastro é rápido e fácil. Atente-se, principalmente, aos itens “Application Type” e “Default Access type”. No primeiro, selecione “Browser” e no segundo, “Read &#038; Write”. Na página após o cadastro, será mostrado o seu Consumer Key e o Consumer Secret. Para ver o Access Token e o Access Token Secret, clique no menu lateral “My Access Token”.</p>
<p>Feito todo esse processo, é só publicar alguma coisa e conferir o seu twitter.</p>
<p><a href="http://alexhiroshi.com.br/download/twitterPost.zip" title="Faça o download da extensão completa.">Clique aqui para fazer o download da extensão.</a></p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2010/05/tag-cloud-para-expressionengine/' rel='bookmark' title='Tag Cloud Para ExpressionEngine'>Tag Cloud Para ExpressionEngine</a></li>
<li><a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/' rel='bookmark' title='O Que é ExpressionEngine?'>O Que é ExpressionEngine?</a></li>
<li><a href='http://alexhiroshi.com.br/2010/06/extensoes-para-o-safari-5/' rel='bookmark' title='Extensões Para o Safari 5'>Extensões Para o Safari 5</a></li>
<li><a href='http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/' rel='bookmark' title='Como Instalar ExpressionEngine'>Como Instalar ExpressionEngine</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=CZDBw5tooZw:Nj-N-8gs8js:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=CZDBw5tooZw:Nj-N-8gs8js:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=CZDBw5tooZw:Nj-N-8gs8js:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=CZDBw5tooZw:Nj-N-8gs8js:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=CZDBw5tooZw:Nj-N-8gs8js:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/CZDBw5tooZw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/</feedburner:origLink></item>
		<item>
		<title>Como Desenvolver Extensões para ExpressionEngine 2 – Parte 1</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/KAMZxoVdXf8/</link>
		<comments>http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 17:20:31 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[CodeIgniter]]></category>
		<category><![CDATA[ee]]></category>
		<category><![CDATA[extensões]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=130</guid>
		<description><![CDATA[<p>No ExpressionEngine, você pode modificar algumas funcionalidades internas do sistema sem a necessidade de mexer em uma linha do core. Com isso, é possível atualizar a versão do CMS sem perder as modificações. Essas alterações são feitas com extensões, por meio de <a title="Hooks (Ganchos) ExpressionEngine" href="http://expressionengine.com/user_guide/development/extension_hooks/index.html">hooks</a> (ganchos) localizadas em alguns pontos do sistema.</p>
<p>Por padrão, o EE não vem com nenhuma extensão pré-instalada. Para saber se na sua instalação existe alguma extensão, vá até o menu principal Add-Ons > Extensions, como na imagem abaixo.</p>
<p></p>
<p>Toda extensão instalada deve ficar no diretório [...] <a href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>No ExpressionEngine, você pode modificar algumas funcionalidades internas do sistema sem a necessidade de mexer em uma linha do core. Com isso, é possível atualizar a versão do CMS sem perder as modificações. Essas alterações são feitas com extensões, por meio de <a title="Hooks (Ganchos) ExpressionEngine" href="http://expressionengine.com/user_guide/development/extension_hooks/index.html">hooks</a> (ganchos) localizadas em alguns pontos do sistema.</p>
<p>Por padrão, o EE não vem com nenhuma extensão pré-instalada. Para saber se na sua instalação existe alguma extensão, vá até o menu principal Add-Ons > Extensions, como na imagem abaixo.</p>
<p><img class="aligncenter size-full wp-image-131" title="Menu de Extensões do ExpressionEngine" src="http://alexhiroshi.com.br/wp-content/uploads/2011/01/menu-extensao-ee.jpg" alt="Menu de Extensões do ExpressionEngine" width="234" height="181" /></p>
<p>Toda extensão instalada deve ficar no diretório <em>/system/expressionengine/third_party/</em> e será mostrada nessa página de extensões.</p>
<h3>Primeiros passos para o desenvolvimento de uma extensão</h3>
<p>Toda extensão é escrita em um arquivo que deve ficar dentro de uma pasta que, por sua vez, fica dentro da pasta third_party citada anteriormente. O nome da pasta deve ser igual ao nome da classe, em minúsculo. O nome do arquivo deve ser o mesmo nome da classe, também em minúsculo, com o prefixo <strong>ext.</strong> e o sufixo <strong>.php</strong>. Para ficar mais claro, vamos criar uma extensão que irá twittar o nome e a url do post quando o mesmo for publicado. Essa extensão se chamará <em>Twitter Post</em>. =]</p>
<p>A primeira coisa é criar uma pasta chamada <strong>twitter_post</strong> em <em>/system/expressionengine/third_party/</em>. Depois, um arquivo php dentro dessa pasta com o nome de <strong>ext.twitter_post.php</strong>. O conteúdo do arquivo deve conter uma classe php chamada Twitter_post_ext, com um construtor e algumas variáveis de configurações. Veja:</p>
<div class="igBar"><span id="lphp-14"><a href="#" onclick="javascript:showPlainTxt('php-14'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-14">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">class</span> Twitter_post_ext <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$name</span>&nbsp; &nbsp;&nbsp; &nbsp;= <span style="color:#FF0000;">'Twitter Post'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$version</span> &nbsp; &nbsp;&nbsp; &nbsp;= <span style="color:#FF0000;">'1.0'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$description</span>&nbsp; &nbsp; = <span style="color:#FF0000;">'Twitta o título e a url do post.'</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$settings_exist</span>&nbsp;= <span style="color:#FF0000;">'y'</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$docs_url</span>&nbsp; &nbsp;&nbsp; &nbsp;= <span style="color:#FF0000;">''</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">var</span> <span style="color:#0000FF;">$settings</span> &nbsp; &nbsp; = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; </div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#000000; font-weight:bold;">function</span> __construct<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$settings</span>=<span style="color:#FF0000;">''</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span> =&amp; get_instance<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span> = <span style="color:#0000FF;">$settings</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>As três primeiras variáveis são autoexplicativas. A variável $settings_exist, informa se a extensão terá ou não uma página de configurações. Os valores aceitos são y, para sim, ou n, para não. Vamos deixar como y porque temos que adicionar nome e senha do Twitter. A variável $settings é o array que guarda as configurações, se existir. Na variável $docs_url, você pode adicionar o link para a documentação da extensão.</p>
<p>O construtor recebe um parâmetro com as configurações e adiciona na variável settings. Como agora o EE é baseado no Framework <a title="Site Oficial do Framework CodeIgniter" href="http://codeigniter.com/">CodeIgniter</a>, Você deve chamar a função get_instance(), que retorna o super objeto do CodeIgniter, para usar as funções nativas do framework e do CMS.</p>
<p>Feito isso, você pode navegar até a página de extensões e ver a sua extensão. Se na coluna Status estiver escrito Disabled, sem link, será necessários habilitar o uso de extensões. Isso é fácil, é só clicar no botão "Enable Extensions?" que fica na mesma página. Quando habilitado, um link aparecerá ao lado do Disabled, o link <em>Enable?</em>.  O link, nesse momento, não tem nenhuma ação, já que ainda precisamos criar alguns métodos na classe.</p>
<p><a href="http://alexhiroshi.com.br/wp-content/uploads/2011/01/pagina-extensoes-ee.jpg"><img class="aligncenter size-medium wp-image-132" title="Página de Extensões do ExpressionEngine" src="http://alexhiroshi.com.br/wp-content/uploads/2011/01/pagina-extensoes-ee-300x54.jpg" alt="Página de Extensões do ExpressionEngine" width="300" height="54" /></a></p>
<p>Vamos criar mais dois métodos: activate_extension e disable_extension. Os nomes não podem ser diferentes porque o sistema irá procurar por eles para ativar e desativar a extensão.</p>
<p><em>Método activate_extension():</em></p>
<div class="igBar"><span id="lphp-15"><a href="#" onclick="javascript:showPlainTxt('php-15'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-15">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> activate_extension<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Configurações para adicionarmos o usuário e a senha do twitter</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'consumer_key'</span>&nbsp; &nbsp; &nbsp; =&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'consumer_secret'</span>&nbsp; &nbsp;&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'acess_token'</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'acess_token_secret'</span>&nbsp; &nbsp; =&gt; <span style="color:#FF0000;">''</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Configurações obrigatórias da extensão</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$data</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'class'</span>&nbsp;&nbsp;=&gt; <span style="color:#000000; font-weight:bold;">__CLASS__</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'method'</span>&nbsp; &nbsp; =&gt; <span style="color:#FF0000;">'twitter_update'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'hook'</span>&nbsp; &nbsp; =&gt; <span style="color:#FF0000;">'entry_submission_end'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'settings'</span>&nbsp; =&gt; <a href="http://www.php.net/serialize"><span style="color:#000066;">serialize</span></a><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">settings</span><span style="color:#006600; font-weight:bold;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'priority'</span>&nbsp; =&gt; <span style="color:#CC66CC;color:#800000;">1</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'version'</span>&nbsp; &nbsp;=&gt; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">version</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'enabled'</span>&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">'y'</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; </div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF9933; font-style:italic;">// Adiciona as configurações na tabela extensions</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span>-&gt;<span style="color:#006600;">db</span>-&gt;<span style="color:#006600;">insert</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'extensions'</span>, <span style="color:#0000FF;">$data</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Como podem ver, usamos um array $settings com configurações que vamos usar para postar no Twitter. Essa configuração pode ou não existir. Já o array $data é obrigatório para o sistema ativar a extensão. O array é formado pelos campos da tabela extensions, são elas:</p>
<ul class="listaConteudo">
<li><strong>class</strong> - Nome da classe da extensão</li>
<li><strong>method</strong> - Método que será chamado pelo hook (item abaixo)</li>
<li><strong>hook</strong> - Nome do hook que chamará o método. <a title="Hooks (Ganchos) ExpressionEngine" href="http://expressionengine.com/user_guide/development/extension_hooks/index.html">Veja a lista de hooks disponíveis</a>.</li>
<li><strong>settings</strong> - Array de configurações serializadas</li>
<li><strong>priority</strong> - Prioridade de chamada da extensão. Pode ser de 1 (primeiro a ser chamado) a 10 (último chamado)</li>
<li><strong>version</strong> - Versão da extensnão</li>
<li><strong>enabled</strong> - se a extensão é habilitada</li>
</ul>
<p>Agora o método para desabilitar é bem mais simples. Basta deletar da tabela extensions.</p>
<p><em>Método disable_extension():</em></p>
<div class="igBar"><span id="lphp-16"><a href="#" onclick="javascript:showPlainTxt('php-16'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-16">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> disable_extension<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span>-&gt;<span style="color:#006600;">db</span>-&gt;<span style="color:#006600;">where</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'class'</span>, <span style="color:#000000; font-weight:bold;">__CLASS__</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$this</span>-&gt;<span style="color:#006600;">EE</span>-&gt;<span style="color:#006600;">db</span>-&gt;<span style="color:#006600;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#FF0000;">'extensions'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Um detalhe importante, é que quando a opção de ter uma página de configurações é ativada, o sistema procura um arquivo de idiomas em <em>/system/expressionengine/language/english</em>. Esse arquivo é simples e deve ser nomeado praticamente igual ao nome do arquivo de extensão, a diferença é o prefixo, que fica como <strong>lang.</strong> e não <strong>ext.</strong>. Ex.: <em>/system/expressionengine/language/english/<strong>lang.twitter_post.php</strong></em>. O sistema só exige que o arquivo exista, se você não escrever nada no arquivo, ele vai funcionar do mesmo jeito. =] Mas caso queira fazer uso do arquivo (já que ele tem que existir...), crie um array $lang e adicione o termo (chave do array) e a tradução (valor do array).</p>
<div class="igBar"><span id="lphp-17"><a href="#" onclick="javascript:showPlainTxt('php-17'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-17">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#0000FF;">$lang</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF0000;">'consumer_key'</span>&nbsp; &nbsp; &nbsp; =&gt; <span style="color:#FF0000;">'Consumer Key'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF0000;">'consumer_secret'</span>&nbsp; &nbsp;&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">'Consumer Secret'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF0000;">'acess_token'</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">'Acess Token'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#FF0000;">'acess_token_secret'</span>&nbsp; &nbsp; =&gt; <span style="color:#FF0000;">'Acess Token Secret'</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>consumer_key, consumer_secret, acess_token e acess_token_secret é o que será usado no método settings() que deve ser criado para a página de configuração.</p>
<p><em>Método settings():</em></p>
<div class="igBar"><span id="lphp-18"><a href="#" onclick="javascript:showPlainTxt('php-18'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-18">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> settings<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF;">$settings</span> = <a href="http://www.php.net/array"><span style="color:#000066;">array</span></a><span style="color:#006600; font-weight:bold;">&#40;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'consumer_key'</span>&nbsp; &nbsp; &nbsp; =&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'consumer_secret'</span>&nbsp; &nbsp;&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'acess_token'</span>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;=&gt; <span style="color:#FF0000;">''</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color:#FF0000;">'acess_token_secret'</span>&nbsp; &nbsp; =&gt; <span style="color:#FF0000;">''</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#616100;">return</span> <span style="color:#0000FF;">$settings</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Nessa extensão, a página de configuração é bem simples, só com quatro campos text. Assim sendo, o sistema cria automaticamente os campos só adicionando o array no método settings(). Se as configurações fossem mais complexas, com mais campos e/ou com textos, seria interessante fazer uso do método <a title="Exemplo de uso do método settings_form()" href="http://expressionengine.com/user_guide/development/extensions.html#settings">settings_form</a>() e de uma view para montar a página customizada.</p>
<p>Depois de criar o arquivo da extensão com os métodos __construct(), activate_extension(), disable_extension(), settings(), e criar o arquivo de linguagem, já será possível habilitar e desabilitar a extensão, além de ver e editar a página de configurações.</p>
<p><a href="http://alexhiroshi.com.br/wp-content/uploads/2011/01/configuracoes-extensao-twitter-ee.jpg"><img src="http://alexhiroshi.com.br/wp-content/uploads/2011/01/configuracoes-extensao-twitter-ee-300x153.jpg" alt="Configurações da Extensão Twitter Post" title="Configurações da Extensão Twitter Post" width="300" height="153" class="aligncenter size-medium wp-image-135" /></a></p>
<p>Para não deixar este post muito longo, vou dividí-lo em duas partes. Nessa primeira parte, a extensão já está praticamente pronta, faltando apenas a função responsável em enviar as informações para o Twitter. Essa função ficará para a segunda parte.</p>
<p><a href="http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/" title="Segunda parte do tutorial - Como Desenvolver Extensões para ExpressionEngine 2">Não deixe de ler a segunda parte deste tutorial.</a></p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2010/05/tag-cloud-para-expressionengine/' rel='bookmark' title='Tag Cloud Para ExpressionEngine'>Tag Cloud Para ExpressionEngine</a></li>
<li><a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/' rel='bookmark' title='O Que é ExpressionEngine?'>O Que é ExpressionEngine?</a></li>
<li><a href='http://alexhiroshi.com.br/2010/06/extensoes-para-o-safari-5/' rel='bookmark' title='Extensões Para o Safari 5'>Extensões Para o Safari 5</a></li>
<li><a href='http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/' rel='bookmark' title='Como Instalar ExpressionEngine'>Como Instalar ExpressionEngine</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=KAMZxoVdXf8:zs93_zLfcXQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=KAMZxoVdXf8:zs93_zLfcXQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=KAMZxoVdXf8:zs93_zLfcXQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=KAMZxoVdXf8:zs93_zLfcXQ:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=KAMZxoVdXf8:zs93_zLfcXQ:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/KAMZxoVdXf8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/</feedburner:origLink></item>
		<item>
		<title>Holiday Bundle – Pacote de Ferramentas com desconto</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/M5lxQQMP7rk/</link>
		<comments>http://alexhiroshi.com.br/2010/12/holiday-bundle-pacote-de-ferramentas-com-desconto/#comments</comments>
		<pubDate>Wed, 22 Dec 2010 20:51:51 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[Geral]]></category>
		<category><![CDATA[ee]]></category>
		<category><![CDATA[icones]]></category>
		<category><![CDATA[promoção]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[vídeo]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=126</guid>
		<description><![CDATA[<p>Quem não gosta de promoções, não é? Então, pra quem ainda não está sabendo, está rolando uma promoção com 13 itens, o <a title="Holiday Bundle" href="https://fusionads.net/bundle/">Holiday Bundle, da Fusion Ads</a>.</p>
<p><a href="http://alexhiroshi.com.br/wp-content/uploads/2010/12/holiday_bundle.png"></a></p>
<p>O pacote conta com 13 ferramentas/aplicativos para Mac, tanto para programadores, quanto para designers, são eles: <a title="Versions" href="http://www.versionsapp.com/">Versions</a>, <a title="FontCase" href="http://www.bohemiancoding.com/fontcase">FontCase</a>, <a title="DrawIt" href="http://www.bohemiancoding.com/drawit">DrawIt</a>, <a title="Billings" href="http://www.marketcircle.com/billings">Billings</a>, <a title="ExpanDrive" href="http://www.expandrive.com/">ExpanDrive</a>, <a title="TextExpander" href="http://www.smilesoftware.com/TextExpander">TextExpander</a>, <a title="Kaleidoscope" href="http://www.kaleidoscopeapp.com/">Kaleidoscope</a>, <a title="Postmark" href="http://www.postmarkapp.com/">Postmark</a>, <a title="Pictos" href="http://pictos.drewwilson.com/">Pictos</a>, <a title="Gedy's Social Icons" href="http://www.lifetreecreative.com/icons">Gedy's Social Icons</a>, <a title="Keynote Kung-Fu" href="http://www.keynotekungfu.com/">Keynote Kung-Fu</a> e outros dois que, pra [...] <a href="http://alexhiroshi.com.br/2010/12/holiday-bundle-pacote-de-ferramentas-com-desconto/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>Quem não gosta de promoções, não é? Então, pra quem ainda não está sabendo, está rolando uma promoção com 13 itens, o <a title="Holiday Bundle" href="https://fusionads.net/bundle/">Holiday Bundle, da Fusion Ads</a>.</p>
<p><a href="http://alexhiroshi.com.br/wp-content/uploads/2010/12/holiday_bundle.png"><img class="aligncenter size-medium wp-image-127" title="Holiday Bundle" src="http://alexhiroshi.com.br/wp-content/uploads/2010/12/holiday_bundle-300x222.png" alt="Fusion Ads Holiday Bundle" width="300" height="222" /></a></p>
<p>O pacote conta com 13 ferramentas/aplicativos para Mac, tanto para programadores, quanto para designers, são eles: <a title="Versions" href="http://www.versionsapp.com/">Versions</a>, <a title="FontCase" href="http://www.bohemiancoding.com/fontcase">FontCase</a>, <a title="DrawIt" href="http://www.bohemiancoding.com/drawit">DrawIt</a>, <a title="Billings" href="http://www.marketcircle.com/billings">Billings</a>, <a title="ExpanDrive" href="http://www.expandrive.com/">ExpanDrive</a>, <a title="TextExpander" href="http://www.smilesoftware.com/TextExpander">TextExpander</a>, <a title="Kaleidoscope" href="http://www.kaleidoscopeapp.com/">Kaleidoscope</a>, <a title="Postmark" href="http://www.postmarkapp.com/">Postmark</a>, <a title="Pictos" href="http://pictos.drewwilson.com/">Pictos</a>, <a title="Gedy's Social Icons" href="http://www.lifetreecreative.com/icons">Gedy's Social Icons</a>, <a title="Keynote Kung-Fu" href="http://www.keynotekungfu.com/">Keynote Kung-Fu</a> e outros dois que, pra mim, já vale a pena, <a title="ExpressionEngine" href="http://www.expressionengine.com/">ExpressionEngine</a> e <a title="Mijingo - Learn ExpressionEngine" href="http://www.mijingo.com/">Learning EE2</a>.</p>
<p>Só para ter uma ideia, a licença Freelancer do ExpressionEngine custa $99.95 (mais ou menos R$170,00), o pacote com 13 itens, custa $79 (mais ou menos R$135,00), menos que a licença.</p>
<p>Se você já leu <a title="O que é ExpressionEngine?" href="http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/">sobre o ExpressionEngine</a> ou quer aprender mais mexendo direto nesse CMS, pense na hipótese de comprar esse pacote. Faltam apenas 9 dias para acabar a promoção.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=M5lxQQMP7rk:mTzuzzgye6Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=M5lxQQMP7rk:mTzuzzgye6Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=M5lxQQMP7rk:mTzuzzgye6Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=M5lxQQMP7rk:mTzuzzgye6Y:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=M5lxQQMP7rk:mTzuzzgye6Y:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/M5lxQQMP7rk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/12/holiday-bundle-pacote-de-ferramentas-com-desconto/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/12/holiday-bundle-pacote-de-ferramentas-com-desconto/</feedburner:origLink></item>
		<item>
		<title>Como Instalar ExpressionEngine</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/i8cYy1o8HJI/</link>
		<comments>http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 21:22:34 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[ee]]></category>
		<category><![CDATA[instalação]]></category>
		<category><![CDATA[passo-a-passo]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=64</guid>
		<description><![CDATA[<p>Depois de uma <a title="O que é ExpressionEngine?" href="http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/">breve explicação</a> do que é esse tal de <a title="O que é ExpressionEngine?" href="http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/">ExpressionEngine</a>, hoje vou falar como instalá-lo. Apesar da instalação ser fácil como outros CMS, nada melhor do que ter uma explicação em português.</p>
<p>A primeira coisa a fazer, é claro, é o download no site <a title="Donwload do ExpressionEngine" href="https://secure.expressionengine.com/download.php">do ExpressionEngine</a>. A versão atual é a 1.6.9.</p>
<p>Depois de baixado, descompacte o arquivo. Ela vai gerar uma pasta chamada EECore1.6.9. Dentro dessa pasta encontramos três pastas e cinco arquivos, sendo três [...] <a href="http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>Depois de uma <a title="O que é ExpressionEngine?" href="http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/">breve explicação</a> do que é esse tal de <a title="O que é ExpressionEngine?" href="http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/">ExpressionEngine</a>, hoje vou falar como instalá-lo. Apesar da instalação ser fácil como outros CMS, nada melhor do que ter uma explicação em português.</p>
<p>A primeira coisa a fazer, é claro, é o download no site <a title="Donwload do ExpressionEngine" href="https://secure.expressionengine.com/download.php">do ExpressionEngine</a>. A versão atual é a 1.6.9.</p>
<p>Depois de baixado, descompacte o arquivo. Ela vai gerar uma pasta chamada <em>EECore1.6.9</em>. Dentro dessa pasta encontramos três pastas e cinco arquivos, sendo três com a extensão .php e as outras duas, .txt. Um arquivo de texto é da licença e o outro um leia-me básico;. Os arquivos .php são referentes ao sistema em si, um para instalar (install.php), o path.php, para algumas configurações de variáveis pra caso você mude o local da pasta principal (system) e por fim, a index.php. As pastas são as seguintes:</p>
<ul>
<li><strong>images</strong> = é onde o sistema guarda as imagens do sistema. os arquivos enviados em uploads também ficam nessa pasta, em subpastas.</li>
<li><strong>system</strong> = essa pasta é a principal. é nela que encontramos a pasta core, referênte a todo código do sistema, e outras pastas como a cache, extensions, plugins, modules, language etc.</li>
<li><strong>themes</strong> = nessa pasta ficam temas tanto para módulos, quanto para o próprio tema do site.</li>
</ul>
<p>Depois de ter descompactada a pasta, mova o conteúdo dela para o seu servidor.<br />
Feito isso,  acesse http://seu-site/ e ele será redirecionado para a página de instalação (http://seu-site/install.php). Essa página tem algumas informações do sistema. Clique no botão “Click here to begin!”. A próxima página é a dos  termos de uso, basta selecionar “I agree to abide by the license Terms and Conditions as stated above.” e clicar em Submit.</p>
<p><a title="Página inicial da instalação do ExpressionEngine" href="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-instalacao.jpg"><img class="size-medium wp-image-121 aligncenter" title="Página inicial da instalação do ExpressionEngine" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-instalacao-300x200.jpg" alt="Página inicial da instalação do ExpressionEngine" width="300" height="200" /></a></p>
<p>Depois do submit, entramos em uma etapa importante, onde você pode alterar o nome da pasta system. Como eu falei, é nessa pasta que encontramos os arquivos do sistema, então é importante mantê-la segura. <strong>Renomeie</strong>! No meu caso, vou manter o padrão system para não confundir no meio do artigo.</p>
<p>Depois de renomeado, é a hora de dar permissões nas pastas que o sistema vai usar para gravar futuros arquivos.</p>
<ul>
<li>path.php</li>
<li>./system/config.php</li>
<li>./system/cache/</li>
<li>images/uploads</li>
<li>images/captchas</li>
</ul>
<p><a title="Permissão de diretórios na instalação do ExpressionEngine" href="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-permissao-diretorios.jpg"><img class="aligncenter size-medium wp-image-122" title="Permissão de diretórios na instalação do ExpressionEngine" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-permissao-diretorios-300x167.jpg" alt="Permissão de diretórios na instalação do ExpressionEngine" width="300" height="167" /></a></p>
<p>Depois de setar as permissões de leitura e escritas nos arquivos e pastas, temos que configurar o sistema e o banco de dados.</p>
<p>As informações do Server Settings normalmente estão corretas. Database settings é necessário configurar, já que você precisa criar um banco de dados e depois preencher os dados. Existe um campo chamado Database Prefix, que é o prefixo das tabelas. Por questões de segurança e organização, é bom mudar o padrão (exp).</p>
<p>Para finalizar essa etapa, preencha os campos para criar o seu usuário, configure a localização e clique em Click Here to Install ExpressionEngine!</p>
<p>Se tudo der certo, aparecerá a mensagem falando que a instalação foi feita e que você deve <strong>deletar o arquivo install.php do seu servidor.</strong></p>
<p><a title="Configurações de instalação do ExpressionEngine" href="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-configuracoes.jpg"><img class="aligncenter size-medium wp-image-123" title="Configurações de instalação do ExpressionEngine" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-configuracoes-300x223.jpg" alt="Configurações de instalação do ExpressionEngine" width="300" height="223" /></a></p>
<p>O página principal do site está acessível no endereço http://seu-site/ e o painel de administração em http://seu-site/system (lembrando que system é o nome padrão).</p>
<p><a title="Página principal do painel administrativo ExpressionEngine" href="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-administracao.jpg"><img class="aligncenter size-medium wp-image-124" title="Página principal do painel administrativo ExpressionEngine" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/expressionengine-administracao-300x126.jpg" alt="Página principal do painel administrativo ExpressionEngine" width="300" height="126" /></a></p>
<p>Como falei no início, a instalação é simples. Agora comece a navegar nos links da administração para ter - ou tentar ter - uma noção de como tudo funciona.</p>
<p>Em outros posts vou dar algumas dicas de como criar um tema para o <a title="Site Oficial do ExpressionEngine" href="http://expressionengine.com/">ExpressionEngine</a>.</p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/' rel='bookmark' title='O Que é ExpressionEngine?'>O Que é ExpressionEngine?</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=i8cYy1o8HJI:g_XLlLuPTtE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=i8cYy1o8HJI:g_XLlLuPTtE:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=i8cYy1o8HJI:g_XLlLuPTtE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=i8cYy1o8HJI:g_XLlLuPTtE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=i8cYy1o8HJI:g_XLlLuPTtE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/i8cYy1o8HJI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/</feedburner:origLink></item>
		<item>
		<title>Extensões Para o Safari 5</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/ucNm3U5SMEU/</link>
		<comments>http://alexhiroshi.com.br/2010/06/extensoes-para-o-safari-5/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 02:02:18 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[Geral]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[extensões]]></category>
		<category><![CDATA[navegador]]></category>
		<category><![CDATA[safari 5]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=63</guid>
		<description><![CDATA[<p>No dia 7 de Junho, a <a title="Safari 5" href="http://www.apple.com/pr/library/2010/06/07safari.html">Apple anunciou</a> uma nova versão do seu navegador, o <a title="Safari 5" href="http://www.apple.com/safari/">Safari 5</a>. Dentre as novidades dessa nova versão, está o suporte a extensões - o que eu sentia bastante falta.</p>
<p>Fiz uma listinha com algumas extensões para você instalar e fazer os testes. Ainda não existem muitas extensões interessantes, mas já dá para fazer algumas coisas.</p>
<p>Vale lembrar que, para poder fazer uso das extensões, é necessário habilitar o uso delas. Siga esse procedimento: abra o Safari, vá no menu Safari [...] <a href="http://alexhiroshi.com.br/2010/06/extensoes-para-o-safari-5/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>No dia 7 de Junho, a <a title="Safari 5" href="http://www.apple.com/pr/library/2010/06/07safari.html">Apple anunciou</a> uma nova versão do seu navegador, o <a title="Safari 5" href="http://www.apple.com/safari/">Safari 5</a>. Dentre as novidades dessa nova versão, está o suporte a extensões - o que eu sentia bastante falta.</p>
<p>Fiz uma listinha com algumas extensões para você instalar e fazer os testes. Ainda não existem muitas extensões interessantes, mas já dá para fazer algumas coisas.</p>
<p>Vale lembrar que, para poder fazer uso das extensões, é necessário habilitar o uso delas. Siga esse procedimento: abra o Safari, vá no menu Safari &gt; Preferences &gt; Aba Advanced &gt; Marque a opção "Show Develop menu in bar". Feito isso, um novo menu estará visível ao lado do menu Window, o menu Develop. Clique nele e selecione a opção "Enable Extensions". Depois disso já é possível instalar extensões no Safari. A administração das extensões fica no menu Safari &gt; Preferences &gt; Aba Extensions.</p>
<h3>Encurtadores de URL's</h3>
<p><a title="Goo.gl Shortener" href="http://code.google.com/p/safari-extensions/downloads/list"><strong>Goo.gl Shortener</strong></a></p>
<p><img class="alignnone size-thumbnail wp-image-114" title="Goo.gl Shortener" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/googl_shortener.jpg" alt="Goo.gl Shortener" width="195" height="132" /></p>
<p>Encurta a URL usando o encurtador goo.gl.</p>
<p><a title="Rename!me" href="http://rnm.me/_tools"><strong>rename!me</strong></a></p>
<p>Encurta a url usando o encurtador http://rnm.me</p>
<p><a title="Bitlyify" href="http://telliott.net/projects/safari/bitlyify/"><strong>bitlyify</strong></a></p>
<p><img class="alignnone size-thumbnail wp-image-115" title="Rename!me" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/renameme.jpg" alt="Rename!me" width="302" height="165" /></p>
<p>Encurta urls com o encurtador bit.ly</p>
<h3>Web / Programação</h3>
<p><a title="View Style Sheets" href="http://sonereker.com/labs/vss/"><strong>View Style Sheets</strong></a></p>
<p><a href="http://alexhiroshi.com.br/wp-content/uploads/2010/06/view_style_sheets.jpg"><img class="alignnone size-medium wp-image-117" title="View Style Sheets" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/view_style_sheets-300x162.jpg" alt="View Style Sheets" width="300" height="162" /></a></p>
<p>Possibilita a fácil visualização dos estilos CSS do site.</p>
<p><a title="User CSS" href="http://code.grid.in.th/"><strong>User CSS</strong></a></p>
<p>Com essa extensão você pode escrever novos CSS para uma determinada página. É como um Firebug, do Firefox, que você pode editar e adicionar novos estilos. É um pouco chato de trabalhar com essa extensão porque ele abre uma nova aba para escrever o CSS.</p>
<p><a title="Safari PageRank" href="http://www.seolondon.com/safari-pagerank/"><strong>Safari PageRank</strong></a></p>
<p><img class="alignnone size-full wp-image-116" title="Safari Pagerank" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/safari_pagerank.png" alt="Safari Pagerank" width="154" height="54" /></p>
<p>Mostra o pagerank da página atual em um ícone no navegador. É bom para saber o pagerank das páginas, mas não me agrada ter um ícone com uma bolinha vermelha e o número no topo do navegador.</p>
<h3>Navegação</h3>
<p><a title="AutoPagerize" href="http://autopagerize.net/"><strong>AutoPagerize</strong></a></p>
<p><a href="http://alexhiroshi.com.br/wp-content/uploads/2010/06/autopagerize.jpg"><img class="alignnone size-medium wp-image-118" title="AutoPagerize" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/autopagerize-300x109.jpg" alt="AutoPagerize" width="300" height="109" /></a></p>
<p><a title="AutoPagerize" href="http://autopagerize.net/"></a>A AutoPagerize remove as paginações e deixa tudo em uma única página. Conforme você rola a página, ele vai carregando as outras páginas.</p>
<p><a title="Gentle Status Bar" href="http://able-archer.net/"><strong>Gentle Status Bar</strong></a></p>
<p>Adiciona uma barra de status no estilo do navegador Chrome. Para o efeito ser legal, não esqueça de desabilitar a barra de status padrão do navegador em View &gt; Hide Status Bar.</p>
<p><a title="Invisible Status Bar" href="http://danielbergey.com/software/safari_extensions.php"><strong>Invisible Status Bar</strong></a></p>
<p><img class="alignnone size-full wp-image-119" title="Invisible Status Bar" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/invisible_status_bar.jpg" alt="Invisible Status Bar" width="209" height="77" /></p>
<p>Assim como a extensão anterior, essa também adicionar uma barra de status como a do Chrome.</p>
<p><a title="GoMBox" href="http://gombox.rnm.me/GoMBoX.html"><strong>GoMBox</strong></a></p>
<p>Faz com que as imagens exibidas na busca do Google Imagens abram em lightbox.</p>
<h3>Vídeo e E-mail</h3>
<p><a title="YouTube Downloader" href="http://code.google.com/p/safari-extensions/downloads/list"><strong>YouTube Downloader</strong></a></p>
<p>Para quem gosta de baixar vídeos do YouTube, esse plugin é uma boa. Ele adiciona na página do vídeo dois  botões para download: um para download FLV e o outro para MP4.</p>
<p><a title="Gmail Checker" href="http://lifefrombelow.com/gmail-checker/"><strong>Gmail Checker</strong></a></p>
<p>Checa emails da sua conta do Gmail. Como o Safari Pagerank, esse mostra um ícone com o número de e-mails não lidos.</p>
<p>A quantidade de extensões vai crescendo e melhorando com o tempo. Se quiser ver mais extensões, visite o site <a title="Safari Extensions" href="http://safariextensions.tumblr.com/">Safari Extensions</a>.</p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=ucNm3U5SMEU:OUdBOFVef4k:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=ucNm3U5SMEU:OUdBOFVef4k:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=ucNm3U5SMEU:OUdBOFVef4k:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=ucNm3U5SMEU:OUdBOFVef4k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=ucNm3U5SMEU:OUdBOFVef4k:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/ucNm3U5SMEU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/06/extensoes-para-o-safari-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/06/extensoes-para-o-safari-5/</feedburner:origLink></item>
		<item>
		<title>O Que é ExpressionEngine?</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/vJlRcbSOZ4g/</link>
		<comments>http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 15:49:34 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[ee]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=62</guid>
		<description><![CDATA[<span style="font-weight: normal; font-size: 13px;">O <a title="Site Oficial do ExpressionEngine" href="http://expressionengine.com/">ExpressionEngine</a> é um CMS, (em português, Sistema de Gerenciamento de Conteúdo), assim como o <a title="Site Oficial do Joomla" href="http://www.joomla.org/">Joomla</a>, <a title="Site Oficial do WordPress" href="http://wordpress.org">WordPress</a>, <a title="Site Oficial do Drupal" href="http://drupal.org/">Drupal</a>.</span>
<p>Você pode fazer o <a title="Download do ExpressionEngine" href="https://secure.expressionengine.com/download.php">download</a> da versão gratuita do sistema ou optar por <a title="Comprar o ExpressionEngine" href="https://secure.expressionengine.com/">comprar</a>. O valor para a versão 1.6.9 é de $99.95 (Personal license) ou $249.95 (Commercial license).</p>
<p>A principal característica que a grande maioria fala, é a flexibilidade. ExpressionEngine tem suporte a módulos, [...] <a href="http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<h3><span style="font-weight: normal; font-size: 13px;">O <a title="Site Oficial do ExpressionEngine" href="http://expressionengine.com/">ExpressionEngine</a> é um <acronym title="Content Management System">CMS</acronym>, (em português, Sistema de Gerenciamento de Conteúdo), assim como o <a title="Site Oficial do Joomla" href="http://www.joomla.org/">Joomla</a>, <a title="Site Oficial do WordPress" href="http://wordpress.org">WordPress</a>, <a title="Site Oficial do Drupal" href="http://drupal.org/">Drupal</a>.</span></h3>
<p>Você pode fazer o <a title="Download do ExpressionEngine" href="https://secure.expressionengine.com/download.php">download</a> da versão gratuita do sistema ou optar por <a title="Comprar o ExpressionEngine" href="https://secure.expressionengine.com/">comprar</a>. O valor para a versão 1.6.9 é de $99.95 (Personal license) ou $249.95 (Commercial license).</p>
<p>A principal característica que a grande maioria fala, é a flexibilidade. ExpressionEngine tem suporte a módulos, extensões e plugins para modificar e adicionar funcionalidades nos sites. A versão disponível para download já vem com mais de 15 módulos prontos para serem usados, a versão paga vem com alguns a mais.</p>
<h3>Vantagens</h3>
<p>A grande vantagem são para designers que não tem conhecimento em linguagens de programação.ExpressionEngineusa tags próprias no desenvolvimento de temas. Essas tags são delimitadas por <strong>{</strong> e <strong>}</strong>. Assim como no HTML, existem pares de tags que devem ser abertas e fechadas, por exemplo: <em>{exp:weblog} conteúdo {/exp:weblog}</em>. Há também as tags simples, que são tags que não precisam ser fechadas, como a tag <em>{site_url}</em>, que mostra a url do site.</p>
<p>Com a <a title="Documentação do ExpressionEngine" href="http://expressionengine.com/docs/">documentação</a> é fácil de desenvolver temas, módulos, plugins e extensões. Em breve será lançada uma versão baseada no <a title="Framework CodeIgniter" href="http://codeigniter.com/">Framework CodeIgniter</a> que pode facilitar  mais ainda pra quem já desenvolve com o framework (Hoje já existe a versão 2.0 que você pode testar por 30 dias, mas ainda é beta).</p>
<p>Junto com a documentação existem alguns <a title="Vídeos sobre ExpressionEngine" href="http://expressionengine.com/tutorials/">vídeos</a> que ensinam o necessário para começar a se aventurar no sistema. Se tiver dúvidas, o <a title="Fórum ExpressionEngine" href="http://expressionengine.com/forums/">suporte no fórum</a> é bom.</p>
<p>Nas licenças Personal e Commercial, você pode comprar o <a title="Multiple Site Manager" href="http://expressionengine.com/downloads/details/multiple_site_manager/">multiple site manager</a>, que habilita a criação de sites usando um único painel de controle para administrar.</p>
<h3>Desvantagens</h3>
<p>Uma desvantagem que eu vejo, é a falta de conteúdo para o nosso idioma. Eles tem um suporte bom no fórum, mas é só em inglês. Tutoriais em português é praticamente nulo.</p>
<p>Se você tiver um site com muitos plugins, módulos e extensões instaladas, vai dar uma certa dor de cabeça na hora de <a title="Update ExpressionEngine" href="http://expressionengine.com/docs/installation/update.html">atualizar</a> o sistema para uma versão mais recente. Pegando os módulos como exemplo, você terá que fazer um backup do módulo e do arquivo de idioma que é obrigatório em um módulo, ou seja, se você tiver muitos, vai ser um trabalho chato fazer backup um por um. Isso é necessário porque o ExpressionEngine não separa os arquivos instalados dos arquivos padrões, como o WordPress, que tem a pasta wp-content só para plugins e temas.</p>
<p>Por padrão, o editor do sistema é um textarea normal e a formatação do texto funciona com <a title="BBCodes no Wikipédia" href="http://pt.wikipedia.org/wiki/BBCode">BBCodes</a>. Não tem um editor <a title="WYSIWYG no Wikipédia" href="http://pt.wikipedia.org/wiki/WYSIWYG">WYSIWYG</a>, mas você pode instalar uma extensão para esse fim. O <a title="LG TinyMCS Custom Field" href="http://expressionengine.com/downloads/details/lg_tinymce_custom_field/">LG TinyMCE Custom Field</a> possibilita isso.</p>
<h3>Screens da Administração</h3>
<h3>
<a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/admin_principal/' title='Administração'><img width="150" height="150" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/admin_principal-150x150.jpg" class="attachment-thumbnail" alt="Administração" title="Administração" /></a>
<a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/admin_editor/' title='Editor De Posts'><img width="150" height="150" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/admin_editor-150x150.jpg" class="attachment-thumbnail" alt="Editor De Posts" title="Editor De Posts" /></a>
<a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/admin_system/' title='Opções da Administração'><img width="150" height="150" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/admin_system-150x150.jpg" class="attachment-thumbnail" alt="Opções da Administração" title="Opções da Administração" /></a>
<a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/admin_modules/' title='Página de Módulos'><img width="150" height="150" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/admin_modules-150x150.jpg" class="attachment-thumbnail" alt="Página de Módulos" title="Página de Módulos" /></a>
<a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/admin_templates/' title='Página de Templates'><img width="150" height="150" src="http://alexhiroshi.com.br/wp-content/uploads/2010/06/admin_templates-150x150.jpg" class="attachment-thumbnail" alt="Página de Templates" title="Página de Templates" /></a>
</h3>
<h3>Visão Geral</h3>
<p>Se você é designer ou não sabe nenhuma linguagem de programação, o ExpressionEngine é uma boa na hora de criar os temas - escrever códigos será necessário, mas é mais fácil escrever/lembrar um <a title="Global Variables - ExpressionEngine" href="http://expressionengine.com/docs/templates/globals/single_variables.html#var_site_url">{site_url}</a> do que um <a title="Template Tags - WordPress" href="http://codex.wordpress.org/Template_Tags/bloginfo">&lt;?php bloginfo('url'); ?&gt;</a>.</p>
<p>Se você ficou interessado, visite a página <a title="Site Oficial do ExpressionEngine" href="http://expressionengine.com">oficial</a> e veja, também, alguns sites desenvolvidos com o ExpressionEngine na seção <a title="Showcase ExpressionEngine" href="http://expressionengine.com/showcase/">showcase</a>.</p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2010/06/como-instalar-expressionengine/' rel='bookmark' title='Como Instalar ExpressionEngine'>Como Instalar ExpressionEngine</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=vJlRcbSOZ4g:2gqWm5lOEO8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=vJlRcbSOZ4g:2gqWm5lOEO8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=vJlRcbSOZ4g:2gqWm5lOEO8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=vJlRcbSOZ4g:2gqWm5lOEO8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=vJlRcbSOZ4g:2gqWm5lOEO8:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/vJlRcbSOZ4g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/</feedburner:origLink></item>
		<item>
		<title>Tag Cloud Para ExpressionEngine</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/5emuwr4xCuM/</link>
		<comments>http://alexhiroshi.com.br/2010/05/tag-cloud-para-expressionengine/#comments</comments>
		<pubDate>Fri, 28 May 2010 16:03:21 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[ee]]></category>
		<category><![CDATA[módulo]]></category>
		<category><![CDATA[tag]]></category>
		<category><![CDATA[tag cloud]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=59</guid>
		<description><![CDATA[<p><a title="Tag Cloud no Wikipedia" href="http://en.wikipedia.org/wiki/Tag_cloud">Tag Cloud</a> ou <a title="Nuvem de Tags no Wikipédia" href="http://pt.wikipedia.org/wiki/Nuvem_de_Tags">Nuvem de Tags</a>, é uma representação visual de tags, muito usado em blogs feito com <a title="Site Oficial do WordPress" href="http://wordpress.org">WordPress</a>. No WordPress, basta chamar a função <a href="http://codex.wordpress.org/Template_Tags/wp_tag_cloud">wp_tag_cloud()</a> que a nuvem de tags será exibida, simples assim. Infelizmente não posso falar o mesmo do <a title="Site Oficial do ExpressionEngine" href="http://expressionengine.com/">EE</a>. Ele não possui um sistema de tag cloud nativo! Uma coisa simples que não EE não possui.</p>
<p>O bom é que existem empresas e pessoas que [...] <a href="http://alexhiroshi.com.br/2010/05/tag-cloud-para-expressionengine/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p><a title="Tag Cloud no Wikipedia" href="http://en.wikipedia.org/wiki/Tag_cloud">Tag Cloud</a> ou <a title="Nuvem de Tags no Wikipédia" href="http://pt.wikipedia.org/wiki/Nuvem_de_Tags">Nuvem de Tags</a>, é uma representação visual de tags, muito usado em blogs feito com <a title="Site Oficial do WordPress" href="http://wordpress.org">WordPress</a>. No WordPress, basta chamar a função <a href="http://codex.wordpress.org/Template_Tags/wp_tag_cloud">wp_tag_cloud()</a> que a nuvem de tags será exibida, simples assim. Infelizmente não posso falar o mesmo do <a title="Site Oficial do ExpressionEngine" href="http://expressionengine.com/">EE</a>. Ele não possui um sistema de tag cloud nativo! Uma coisa simples que não EE não possui.</p>
<p>O bom é que existem empresas e pessoas que colaboram para o crescimento do CMS. A Solspace tem um módulo para gerar e gerenciar tags clouds, o <a title="Solspace - Tag Module" href="http://www.solspace.com/software/detail/tag/">Módulo Tag</a>. É, você precisa desembolsar 40 dólares para poder usar o módulo. Vale o que é pago, mas se você não tem como pagar ou não quer pagar para ter um sistema de tag cloud, também existem as opções free.</p>
<p><a title="Simple Tags - utilitEEs" href="http://utilitees.silenz.org/index.php/addons/software/simple-tags//">Simple Tags</a> é uma dessas opções. Não posso falar muito desse módulo, pois eu nunca usei, mas pelas imagens do site, parece ser simples e funcional. Mais simples que o <a title="Tagger Lite - DevDemon" href="http://www.devdemon.com/store/detail/tagger_lite/">Tagger Lite</a>, outro módulo gratuito. Esse eu instalei e configurei algumas coisas, e posso falar que é fácil usar. É uma boa se você quer nuvem de tags no seu site.</p>
<p>O Tagger Lite cria uma aba na página do editor, e você pode escolher o título dessa aba nas configurações do módulo. Cada  tag fica bem organizada e você também pode fazer busca por tags sem sair da página.</p>
<p>É isso, se você pode e quer pagar, use o Tag Module, senão, teste uma das alternativas gratuitas e use o que for melhor para você.</p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/' rel='bookmark' title='O Que é ExpressionEngine?'>O Que é ExpressionEngine?</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-1/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 1</a></li>
<li><a href='http://alexhiroshi.com.br/2011/01/como-desenvolver-extensoes-para-expressionengine-2-parte-2/' rel='bookmark' title='Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2'>Como Desenvolver Extensões para ExpressionEngine 2 &#8211; Parte 2</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=5emuwr4xCuM:CuEpFENtD6E:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=5emuwr4xCuM:CuEpFENtD6E:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=5emuwr4xCuM:CuEpFENtD6E:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=5emuwr4xCuM:CuEpFENtD6E:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=5emuwr4xCuM:CuEpFENtD6E:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/5emuwr4xCuM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/05/tag-cloud-para-expressionengine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/05/tag-cloud-para-expressionengine/</feedburner:origLink></item>
		<item>
		<title>Ativar cache no Expression Engine</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/EwyGwdfTlhE/</link>
		<comments>http://alexhiroshi.com.br/2010/05/ativar-cache-no-expression-engine/#comments</comments>
		<pubDate>Thu, 27 May 2010 13:51:10 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[ee]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=28</guid>
		<description><![CDATA[<p>Sites de grande porte normalmente tem problemas com o servidor por conta do alto número de requisições das páginas dinânmicas. Para evitar que o servidor caia, nós usamos um sistema de <a title="Cache" href="http://pt.wikipedia.org/wiki/Cache">cache</a>. Leia um trecho retirado da Wikipedia:</p>
<p><strong>Cache</strong> é um dispositivo de acesso rápido, interno a um sistema, que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede. A vantagem principal na utilização de uma cache consiste em evitar o acesso ao dispositivo de armazenamento - que pode [...] <a href="http://alexhiroshi.com.br/2010/05/ativar-cache-no-expression-engine/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>Sites de grande porte normalmente tem problemas com o servidor por conta do alto número de requisições das páginas dinânmicas. Para evitar que o servidor caia, nós usamos um sistema de <a title="Cache" href="http://pt.wikipedia.org/wiki/Cache">cache</a>. Leia um trecho retirado da Wikipedia:</p>
<blockquote><p><strong>Cache</strong> é um dispositivo de acesso rápido, interno a um sistema, que serve de intermediário entre um operador de um processo e o dispositivo de armazenamento ao qual esse operador acede. <em>A vantagem principal na utilização de uma cache consiste em evitar o acesso ao dispositivo de armazenamento - que pode ser demorado -, armazenando os dados em meios de acesso mais rápidos.</em></p></blockquote>
<p>Ou seja, a idéia é evitar que o sistema faça buscas no banco de dados sem necessidade, por exemplo.</p>
<p>Mas, como fazer isso no <a title="Site oficial do ExpressionEngine" href="http://expressionengine.com/">ExpressionEngine</a>?</p>
<p>O ExpressionEngine já vem com um sistema de cache. Aliás, vem com alguns sistemas de cache independentes. Você pode fazer cache das query do banco de dados, das tags, dos templates (página por página), entre outros.</p>
<h3>Cache nos Templates</h3>
<p>É possível habilitar e desabilitar o cache de cada um dos templates criados. Isso é bom, porque você pode ter um template que faça buscas no banco de dados e um que é só tenha textos.</p>
<p>Para habilitar é fácil, entre na aba Templates e clique no link Template Preferences Manager. Nesse link é possível habilitar e desabilitar algumas opções relativa aos templates, como o cache. Primeiro selecione o grupo de template (Template Groups) que você quer cachear. Ao seleccionar um grupo, ele mostrará a lista de templates desse grupo. Clique no(s) template(s) e depois, na opção Enable Caching, selecione Yes (o padrão é Do Not Change).</p>
<p>Com o cache ativo, você deve determinar o tempo de vida do cache, em minutos, no campo Refresh Interval. Feito isso, basta clicar no botão Update.</p>
<p>Outro lugar que você pode habilitar o cache nos templates, é clicando em Preferences, na segunda coluna da aba Templates. As opções são as mesmas citadas acima.</p>
<p>Lembre-se de dar permissões de escrita no diretório <em>system/cache/page_cache</em>.</p>
<h3>Cache das Tags</h3>
<p>Em alguns casos você pode optar por não fazer o cache de um template inteiro, já que algumas partes desse template precisam ser atualizadas frequentemente. Porém, seria interessante fazer cache de uma determinada parte. Para isso, basta adicionar esses dois parâmetros em qualquer tag:</p>
<div class="igBar"><span id="lhtml-21"><a href="#" onclick="javascript:showPlainTxt('html-21'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-21">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">cache=&quot;yes&quot; refresh=&quot;tempo_em_minutos&quot; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Por exemplo:</p>
<div class="igBar"><span id="lhtml-22"><a href="#" onclick="javascript:showPlainTxt('html-22'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-22">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">{exp:weblog:entries cache=&quot;yes&quot; refresh=&quot;5&quot;} </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Permissão de escrita no diretório <em>system/cache/tag_cache</em> também é necessário.</p>
<h3>Cache Tags Query Weblog</h3>
<p>Para exibir informações de posts, é usado a tag {exp:weblog:entries}. Podemos utilizar a opção anterior para fazer o cache dessas tags, mas o ExpressionEngine permite fazer isso dinamicamente em todas as tags que buscam informações com a tag {exp:weblog:entreis}.</p>
<p>Essa opção está localizada na aba <em>Admin &gt; Weblog Administration &gt; Global Weblog Preferences</em>. Selecione Yes, em Cache Dynamic Weblog Queries? e clique em Update.</p>
<p>Essas são algumas opções para habilitar o cache no sistema do ExpressionEngine. É bom lembrar que isso tudo só vai funcionar se as pastas que estão em system/cache/ estiverem com permissões de escrita.</p>
<h4>Leia Também:</h4><ol>
<li><a href='http://alexhiroshi.com.br/2010/06/o-que-e-expressionengine/' rel='bookmark' title='O Que é ExpressionEngine?'>O Que é ExpressionEngine?</a></li>
</ol></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=EwyGwdfTlhE:JdJo6DHFf8g:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=EwyGwdfTlhE:JdJo6DHFf8g:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=EwyGwdfTlhE:JdJo6DHFf8g:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=EwyGwdfTlhE:JdJo6DHFf8g:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=EwyGwdfTlhE:JdJo6DHFf8g:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/EwyGwdfTlhE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/05/ativar-cache-no-expression-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/05/ativar-cache-no-expression-engine/</feedburner:origLink></item>
		<item>
		<title>Removendo meta boxes do WordPress</title>
		<link>http://feedproxy.google.com/~r/alexhiroshi/~3/LgFUHxIjr-E/</link>
		<comments>http://alexhiroshi.com.br/2010/05/removendo-meta-boxes-do-wordpress/#comments</comments>
		<pubDate>Wed, 26 May 2010 17:00:27 +0000</pubDate>
		<dc:creator>Alex Hiroshi</dc:creator>
				<category><![CDATA[WordPress]]></category>
		<category><![CDATA[meta boxes]]></category>
		<category><![CDATA[plugin]]></category>

		<guid isPermaLink="false">http://alexhiroshi.com.br/?p=1</guid>
		<description><![CDATA[<p>O WordPress é um sistema muito bacana, simples de mexer e configurar. Ideal para blogs e, por que não, para sites de pequeno e médio porte. Porém, apesar de ser simples, ele mostra algumas informações não muito úteis para seus clientes na página inicial da administração, Dashboard, e na página do editor de posts, as meta boxes. Essas informações, felizmente, podem ser removidas, deixando o Dashboard e a página do editor mais limpa. Para isso, existem alguns plugins, como o <a title="Plugin iMasters WP Hacks" href="http://wordpress.org/extend/plugins/imasters-wp-hacks/">iMasters WP Hacks</a>, que removem essas e [...] <a href="http://alexhiroshi.com.br/2010/05/removendo-meta-boxes-do-wordpress/" title="Leia o post completo" class="mais">Continue lendo »</a>]]></description>
			<content:encoded><![CDATA[<p>O WordPress é um sistema muito bacana, simples de mexer e configurar. Ideal para blogs e, por que não, para sites de pequeno e médio porte. Porém, apesar de ser simples, ele mostra algumas informações não muito úteis para seus clientes na página inicial da administração, Dashboard, e na página do editor de posts, as meta boxes. Essas informações, felizmente, podem ser removidas, deixando o Dashboard e a página do editor mais limpa. Para isso, existem alguns plugins, como o <a title="Plugin iMasters WP Hacks" href="http://wordpress.org/extend/plugins/imasters-wp-hacks/">iMasters WP Hacks</a>, que removem essas e outras informações.</p>
<p>Se você gosta de facilidade, instale e use o <a title="Plugin iMasters WP Hacks" href="http://wordpress.org/extend/plugins/imasters-wp-hacks/">iMasters WP Hacks</a>, que além de remover as informações que mencionei, ele te dá a opção de remover alguns itens do menu conforme o nível do usuário. Agora, se você prefere uma coisa mais simples, sem menu, para uso pessoal, faça o seu próprio plugin. Eu, por exemplo, quando um plugin não é muito complexo, tento fazer os meus próprios, assim tenho mais controle do que é feito por trás da interface do sistema e o que é inserido na barra de menus da administração - muita informação acaba confundindo os clientes e a mim mesmo. Quanto menos eu precisar procurar, melhor, não acha?</p>
<p>Para começar, todo plugin precisa ter um cabeçalho padrão para que o WordPress reconheça o mesmo na página de plugins.</p>
<div class="igBar"><span id="lphp-25"><a href="#" onclick="javascript:showPlainTxt('php-25'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-25">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/*</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Plugin Name: Remove Meta Box</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Plugin URI: http://alexhiroshi.com.br/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Description: Remove as meta boxes do dashboard e da página de edição de posts</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Version: 1.0</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Author: Alex Hiroshi</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Author URI: http://alexhiroshi.com.br</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">*/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>
Esse cabeçalho é autoexplicativo, caso queira saber mais ou tenha alguma dúvida, não hesite em ler o <a title="Codex: como escrever um plugin" href="http://codex.wordpress.org/Writing_a_Plugin#Standard_Plugin_Information">Codex do WordPress</a>.</p>
<p>Feito isso, agora é só remover as meta boxes utilizando a função remove_meta_box(). Essa função recebe três parâmetros:</p>
<ol class="listaConteudo">
<li>id - O id da meta box. Esse id é o atributo id que foi definido no html;</li>
<li>page - A página onde essa meta box se encontra. Pode ser dashboard, post, page ou link;</li>
<li>context - O contexto de onde a meta box está na página. Pode ser normal ou advanced.</li>
</ol>
<p>O context, por padrão, na hora que um meta box é criado, é usado o advanced, então para remover, usarei o mesmo. A página vai depender de onde  a meta box que você quer remover está, no meu caso, vou usar o dashboard. O id é fácil de saber, é só olhar no código fonte. No total são oito meta boxes: dashboard_right_now, dashboard_quick_press, dashboard_recent_comments, dashboard_recent_drafts, dashboard_incoming_links, dashboard_primary, dashboard_secondary e dashboard_plugins.</p>
<p>Na prática:</p>
<div class="igBar"><span id="lphp-26"><a href="#" onclick="javascript:showPlainTxt('php-26'); return false;">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">PHP:</span>
<div id="php-26">
<div class="php">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">&lt;?php</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">/*</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Plugin Name: Remove Meta Box</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Plugin URI: http://alexhiroshi.com.br/</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Description: Remove as meta boxes do dashboard e da página de edição de posts</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Version: 1.0</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Author: Alex Hiroshi</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">Author URI: http://alexhiroshi.com.br</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000;">*/</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">add_action<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#FF0000;">'admin_menu'</span>, <span style="color:#FF0000;">'alx_remove_meta_box'</span> <span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#FF9933; font-style:italic;">//chama a função que remove</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">function</span> alx_remove_meta_box<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#FF9933; font-style:italic;">// remove a box Quick Press</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">remove_meta_box<span style="color:#006600; font-weight:bold;">&#40;</span> <span style="color:#FF0000;">'dashboard_quick_press'</span>, <span style="color:#FF0000;">'dashboard'</span>, <span style="color:#FF0000;">'advanced'</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#000000; font-weight:bold;">?&gt;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>Depois é só salvar o arquivo com um nome único (dica: use prefixo com o seu nome ou as inicias do seu nome) , enviar para a pasta de plugins wp-content/plugins e ativar.</p>
<p>Se você não quiser criar um plugin para remover as boxes, adicione o código no arquivo functions.php do seu tema (nesse caso, não é necessário o cabeçalho). O ruim de ficar no arquivo functions, é que ele só funciona se o tema desse arquivo estiver em uso.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=LgFUHxIjr-E:q2noreTfZGM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=LgFUHxIjr-E:q2noreTfZGM:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=LgFUHxIjr-E:q2noreTfZGM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/alexhiroshi?a=LgFUHxIjr-E:q2noreTfZGM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/alexhiroshi?i=LgFUHxIjr-E:q2noreTfZGM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/alexhiroshi/~4/LgFUHxIjr-E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://alexhiroshi.com.br/2010/05/removendo-meta-boxes-do-wordpress/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://alexhiroshi.com.br/2010/05/removendo-meta-boxes-do-wordpress/</feedburner:origLink></item>
	</channel>
</rss>

