← WordPress

Um banner para cada país

Lida 2998 vezes

Offline

Necro 
Membro
Mensagens 9 Gostos 0
Troféus totais: 14
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 First Post Karma Sixth year Anniversary Fifth year Anniversary

Viva,
É um problema que já quero ver resolvido há bastante tempo. Eu quero mostrar um banner para o pessoal de Portugal e outro para o pessoal do Brasil.
E tem sido difícil fazer isso.
Já experimentei o openx e fiz uma instalação no meu servidor. E consegui até chegar onde queria. Criei um banner apenas para Portugal, e adicionei a "Zone" ao site. Agora o problema é que o banner aparece apenas quando lhe apetece... Não aparece sempre.

Se houver alguma alternativa mais fácil também ao OpenX. Porque eu não preciso de dados, só preciso mesmo que eles apareçam no determinado país.
Offline

diogoosorio 
Membro
Mensagens 134 Gostos 1
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Dá uma vista de olhos: http://www.php.net/manual/en/book.geoip.php

Uma solução escrita agora rapidamente. Basicamente a ideia é colocares todos os anúncios separados numa pasta chamada ads (podes também definir esta pasta, criando uma opção no WP).

Por exemplo para um mesmo anúncio chamado sidebar criarias um ficheiro sidebar_pt.php, outro sidebar_br.php e ainda um sidebar_default.php. Se o visitante for de Portugal, a função carrega o 1º, se do Brasil o 2º, senão carrega o default.

Onde queres que os anúncios te apareçam, basta chamares no tema:

Código: (php) [Seleccione]
show_ad_by_country( 'sidebar' );
show_ad_by_country( 'footer' );

O argumento que passares à função será o prefixo do ficheiro (sidebar_pt.php/footer_pt.php).

Código: (php) [Seleccione]
<?php

if( !function_exists'show_ad_by_country' ) ){

/**
 * Shows a given ad depending on the geolocation
 * of the user. All the ads should be placed within
 * an independent file that has the following
 * format {prefix}_{2 letter ISO}.php
 *
 * @param String $prefix The file prefix
 * @return boolean
 */
function show_ad_by_country($prefix ''){

// The geoip library is required
if( !in_array'geoip'get_loaded_extensions() ) ){
return false;
}

// Get the client's IP and country
$client_ip $_SERVER['REMOTE_ADDR'];
$country geoip_country_code_by_name$client_ip );

// Define the ads location
if( !( $location get_option'showad_files_location' ) ) ){
$location get_stylesheet_directory() . '/ads';
}

// Try to load the file
$file  $location '/' $prefix '_' strtolower$country ) . '.php';
$default $location '/' $prefix '_default.php';

if( file_exists$file ) ){
include $file;
return true;
} elseif ( file_exists $default ) ){
include $default;
return true;
}


return false;
}

}

Não testei o código, mas deve estar a funcionar. Também podes fazer o mesmo através de Javascript - qualquer browser decente também te oferece a localização do utilizador (se bem que é um pouco mais "intrusivo", porque tens de pedir autorização ao mesmo).
Offline

Necro 
Membro
Mensagens 9 Gostos 0
Troféus totais: 14
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 First Post Karma Sixth year Anniversary Fifth year Anniversary

Digo, agradeço a resposta.
Mas como só um 'nabo' nestas andanças.
Será que podias fazer-me um código muito simples em que baste eu enviar os códigos html po server com os nomes correctos ?
Envia-me o teu e-mail por PM.
Offline

diogoosorio 
Membro
Mensagens 134 Gostos 1
Feedback +1

Troféus totais: 22
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Poll Voter Level 4 Level 3 Level 2 Level 1 100 Posts 50 Posts

Passa a função acima para o functions.php do teu tema. Chama a função onde queres que o banner apareça, dentro do ficheiro do teu tema. Isto não é uma solução "chave-na-mão" (lol), é apenas uma ideia para como podes resolver o problema.

Escrevi a função aqui num instante, é provável que até contenha erros. Se não serve espera mais um pouco, pode ser que alguém conheça uma solução mais "user friendly" (um plugin ou algo do género).

Boa sorte!
Offline

Necro 
Membro
Mensagens 9 Gostos 0
Troféus totais: 14
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 First Post Karma Sixth year Anniversary Fifth year Anniversary

Ok, obrigado !
Offline

Necro 
Membro
Mensagens 9 Gostos 0
Troféus totais: 14
Trófeus: (Ver todos)
Super Combination Combination Topic Starter Level 3 Level 2 Level 1 First Post Karma Sixth year Anniversary Fifth year Anniversary

Bump.
Offline

Celso Azevedo 
Membro
Mensagens 3500 Gostos 38
Feedback +12

Troféus totais: 32
Trófeus: (Ver todos)
Level 6 Tenth year Anniversary Super Combination Combination Topic Starter 10 Poll Votes Poll Voter Level 5 Level 4 Level 3

O google ads manager não serve?