Centralização do Administrator do JOOMLA
Enviado: 04 Abr 2007, 15:15
Centralização do ADMINISTRATOR do JOOMLA
A idéia da alteração realizada é centralizar o administrador dos site em um único diretório, ou seja, qualquer site criado com o joomla terá a manutenção realizada em um único “Administrator”.
Obs.: Os testes foram realizados localmente e depois transferidos para o servidor.
Primeiramente instalamos o joomla na raiz do htdocs, gerando uma base de dados que chamamos de BANCO_1. Faremos um backup da base gerada para montar a estrutura das demais bases de dados: BANCO_2, BANCO_3.
Alterações
BANCO
No banco de dados BANCO_1, crie uma tabela que conterá todos os sites que irão utilizar o administrator.
Insira na tabela os registros:
Alterações no arquivo: administrator/template/joomla_admin/login.php
No início do arquivo administrator/template/joomla_admin/login.php acrescentar o código php abaixo:
A variável $combo gerada iremos imprimir logo abaixo do input com o name=‘pass’
Alterações no arquivo administrator/index.php
Acrescentar o código abaixo na verificação if (isset( $_POST['submit'] )) {
No mesmo arquivo procure pela criação da sessão $_SESSION['session_id'] e adicione o código abaixo acima da criação da sessão:
Alteração no arquivo includes/joomla.php
Neste arquivo procure por $database = new. Altere acrescentando acima da linha o código em negrito abaixo:
Alteração no arquivo administrator/index2.php
A sessão deve ser inicializada antes de ser incluído o arquivo joomla.php. Procure pelo código:
Recorte esta inicialização e cole acima do código:
Faça o mesmo procedimento nos arquivos:
Com as alteração acima as pastas images/stories e images/banners ficam acessível para todos os "BANCOS" sites que utilizarão o administrator. No próximo post quero estar colocando aqui como fazer para que o site acesse somente a pasta pertinente a ele. ;D
Abraços, espero ter contribuido....
A idéia da alteração realizada é centralizar o administrador dos site em um único diretório, ou seja, qualquer site criado com o joomla terá a manutenção realizada em um único “Administrator”.
Obs.: Os testes foram realizados localmente e depois transferidos para o servidor.
Primeiramente instalamos o joomla na raiz do htdocs, gerando uma base de dados que chamamos de BANCO_1. Faremos um backup da base gerada para montar a estrutura das demais bases de dados: BANCO_2, BANCO_3.
Alterações
BANCO
No banco de dados BANCO_1, crie uma tabela que conterá todos os sites que irão utilizar o administrator.
Código: Selecionar todos
CREATE TABLE `sites` (
`banco` varchar(50) NOT NULL default '',
`site` varchar(200) default NULL,
`diretorio` varchar(50) default NULL,
PRIMARY KEY (`banco`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
Código: Selecionar todos
Insert into sites (banco, site, diretorio) values (‘BANCO_1’, ‘SITE 1’, ‘site_1’);
Insert into sites (banco, site, diretorio) values (‘BANCO_1’, ‘SITE 1’, ‘site_1’);
Insert into sites (banco, site, diretorio) values (‘BANCO_1’, ‘SITE 1’, ‘site_1’);
No início do arquivo administrator/template/joomla_admin/login.php acrescentar o código php abaixo:
Código: Selecionar todos
<?php
Require (‘conexoes.php’);
Mysql_select_db($database_conexoes, $conexoes);
$sql = “select banco, site from sites order by site”;
$res = mysql_query($sql);
$combo = ‘’;
While ($ar_site = mysql_fetch_array($res)){
$combo = $combo.'<option value="'.$ar_site['banco'].'">'.$ar_site['site'].'</option>';
}
?>
Código: Selecionar todos
<div class="inputlabel">Site</div>
<div>
<select name="database" id="database" class="inputbox">
<?php print $combo; ?>
</select>
</div>
Alterações no arquivo administrator/index.php
Acrescentar o código abaixo na verificação if (isset( $_POST['submit'] )) {
Código: Selecionar todos
$bancodados = stripslashes( mosGetParam( $_POST, 'database', NULL ) );
/* seleciono o diretório para images e doawnloads */
$query = "select diretorio from sites
where banco like '".$bancodados."'";
$database->setQuery( $query );
$diretorio = $database->loadResult();
/* conecta novamente o banco de dados */
$mosConfig_db = $bancodados;
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
if ($database->getErrorNum()) {
$mosSystemError = $database->getErrorNum();
$basePath = dirname( __FILE__ );
include $basePath . '/../configuration.php';
include $basePath . '/../offline.php';
exit();
}
$database->debug( $mosConfig_debug );
$acl = new gacl_api();
Código: Selecionar todos
$_SESSION['diretorio'] = $diretorio;
$_SESSION['bancodados'] = $bancodados;
Neste arquivo procure por $database = new. Altere acrescentando acima da linha o código em negrito abaixo:
Código: Selecionar todos
[b]if (isset($_SESSION['bancodados'])){
$mosConfig_db = $_SESSION['bancodados'];
}
print 'banco --> '.$mosConfig_db;[/b]
/* conecta ao banco de dados */
$database = new database( $mosConfig_host, $mosConfig_user, $mosConfig_password, $mosConfig_db, $mosConfig_dbprefix );
if ($database->getErrorNum()) {
$mosSystemError = $database->getErrorNum();
$basePath = dirname( __FILE__ );
include $basePath . '/../configuration.php';
include $basePath . '/../offline.php';
exit();
}
$database->debug( $mosConfig_debug );
$acl = new gacl_api();
Alteração no arquivo administrator/index2.php
A sessão deve ser inicializada antes de ser incluído o arquivo joomla.php. Procure pelo código:
Código: Selecionar todos
session_name( md5( $mosConfig_live_site ) );
session_start();
Código: Selecionar todos
require_once( $mosConfig_absolute_path . '/includes/joomla.php' );
- Administrator/index3.php
Includes/auth.php
Com as alteração acima as pastas images/stories e images/banners ficam acessível para todos os "BANCOS" sites que utilizarão o administrator. No próximo post quero estar colocando aqui como fazer para que o site acesse somente a pasta pertinente a ele. ;D
Abraços, espero ter contribuido....