7
![Mejor respuesta del mensaje [MOD] Ver publicidad para obtener link [actualizado] 31.03.24](images/thx/star.png)
Ver publicidad para ver enlace!
Bueno la instalación es un poco larga, no es administrable por el momento... Los cambios deberán ser manuales, en otro momento crear una forma de hacerlo administrable.
El modo para usarlo es
Código PHP: ( Seleccionar Todo )
[encode]la url que desees esconder[/encode]
Espero que sea lo que estas buscando y lamento no tener capturas de pantalla... Pero es bastante parecido a lo que hace comparado con el html que compartiste @nakcho02#402
Exceptuando que cuando termina de contar, este cerrará la ventana emergente e insertará el enlace en la página como si fuese un enlace normal...
[font]Actualizado 31.03.2024[/font]
Paso 1:
En c.core.php buscamos
Código: ( Seleccionar Todo )
function parseBBCode(...) {
... códigoy dentro de esta línea en el array (es el primero que aparece)
Código: ( Seleccionar Todo )
$parser->setRestriction(array( ... ));añaden
Código: ( Seleccionar Todo )
, 'encode'Paso 2:
En bbcode.inc.php debajo de
Código: ( Seleccionar Todo )
require_once 'JBBCode/definitions/Video.php';Añadiremos
Código: ( Seleccionar Todo )
require_once 'JBBCode/definitions/Encode.php';más abajo buscamos
Código: ( Seleccionar Todo )
public function addBBcodes() {y agregaremos
Código: ( Seleccionar Todo )
$tsCore = new tsCore;
// Solo para obtener la url
$url = $tsCore->settings['url'];luego más abajo buscamos
Código: ( Seleccionar Todo )
// Tag de video independiente
if (in_array('video', $this->restriction) || !$this->restriction) {
$this->parser->addCodeDefinition(new Video());
}y abajo agregamos
Código: ( Seleccionar Todo )
if(in_array('encode', $this->restriction) || !$this->restriction) {
$this->parser->addCodeDefinition(new Encode());
}Paso 3: (paso actualizado)
En inc/ext/JBBCode/definitions crearemos un archivo llamado "Encode.php" y agregamos esto
Código PHP: ( Seleccionar Todo )
<?php
class Encode extends JBBCode\CodeDefinition {
public function __construct() {
parent::__construct();
$this->setTagName("encode");
}
/**
* Returns true iff $input is a valid url.
*
* @param string $input the string to validate
* @return boolean
*/
public function asHtml(JBBCode\ElementNode $input) {
$content = "";
foreach ($input->getChildren() as $child) $content .= $child->getAsBBCode();
// Codificamos la url
$code = base64_encode($content);
$tsCore = new tsCore;
$ads = json_decode(file_get_contents($tsCore->settings['url'].'/publicidad.json'));
$active = $ads->active;
$publicidades = $ads->publicidades;
// Desde este punto, puedes hacer lo que quieras
$asHtml = "<a class=\"adsHtml {$publicidades->$active->clase}\" href=\"javascript:ads.start('$code')\"><embed src=\"{$publicidades->$active->enlace}\" allowfullscreen></a>";
return $asHtml;
}
}
Paso 4:
En php/ajax crearemos un archivo llamado "ajax.publicidad.php" y agregaremos esto
Código PHP: ( Seleccionar Todo )
<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');
/**
* Controlador AJAX
*
* @name ajax.afiliado.php
* @author PHPost Team
*/
/**********************************\
* (VARIABLES POR DEFAULT) *
\*********************************/
// NIVELES DE ACCESO Y PLANTILLAS DE CADA ACCIÓN
$files = array(
'publicidad' => array('n' => 0, 'p' => ''),
);
/**********************************\
* (VARIABLES LOCALES ESTE ARCHIVO) *
\*********************************/
// REDEFINIR VARIABLES
$tsPage = 'php_files/p.publicidad.'.$files[$action]['p'];
$tsLevel = $files[$action]['n'];
$tsAjax = empty($files[$action]['p']) ? 1 : 0;
/**********************************\
* (INSTRUCCIONES DE CODIGO) *
\*********************************/
// DEPENDE EL NIVEL
$tsLevelMsg = $tsCore->setLevel($tsLevel, true);
if($tsLevelMsg != 1) { echo '0: '.$tsLevelMsg['mensaje']; die();}
// CODIGO
switch($action){
default:
// Obtenemos el enlace codificado antes y decodificamos...
$enlace = base64_decode($tsCore->setSecure($_POST['link']));
// Lo mostraremos con un echo
echo $enlace;
break;
}
Paso 5: (Paso actualizado)
En cualquier hoja de estilo como estilo.css, phpost.css, extra.css, etc añaden
Código: ( Seleccionar Todo )
.adsHtml {
overflow: hidden;
border-radius: .325rem;
background-color: #CCC6;
display: block;
position: relative;
}
.adsHtml.large {
--largo: 728px;
--alto: 90px;
}
.adsHtml.medium {
--largo: 300px;
--alto: 250px;
}
.adsHtml, #temporizador {
width: var(--largo);
height: var(--alto);
}
.adsHtml * {
pointer-events: none;
padding: 0;
margin: 0;
height: 100%;
width: 100%;
}
.adsHtml.finish {
all: unset!important;
color: #689FD2!important;
font-weight: 600!important;
text-decoration: underline!important;
cursor: pointer!important;
}
.adsHmlt.withoutembed > embed {
display: none;
}
#temporizador {
position: absolute;
top: 0;
left: 0;
z-index: 99;
background: #F4F4F4;
}
#temporizador p {
font-size: 1.325rem;
font-weight: bold;
display: flex;
justify-content: center;
align-items: center;
line-height: 1.2rem;
width: 80%;
margin: 0 auto;
}Paso 6: (Paso actualizado)
En acciones.js o funciones.js donde quieran al final de todo agregan
Código: ( Seleccionar Todo )
const ads = {
pagina: 'Registrate o inicia tu sesión para ver este contenido // Reemplazar 00000 por tu referido
enlace: '',
intervalo: '',
ventanaEmergente: '',
cerrarVentana: false,
mensajeMostrado: false,
tiempo: 5,
loadTime: function() {
// Función para actualizar el temporizador
$('.adsHtml').addClass('withoutembed').append(`<div id="temporizador"><p>El contenido se abrirá en ${ads.tiempo} segundos</p></div>`);
this.intervalo = setInterval(function() {
ads.tiempo--;
$('#temporizador p').html(`El contenido se abrirá en ${ads.tiempo} segundos`);
if (ads.tiempo === 0) {
clearInterval(ads.intervalo);
$('#temporizador p').html(`El contenido se abrirá en ${ads.tiempo} segundos`);
this.mensajeMostrado = true;
ads.startLink();
}
}, 1000);
},
popup: function() {
this.loadTime();
// Este archivo es para mostrar algo, página estatica, video, etc
this.ventanaEmergente = window.open(`${this.pagina}`, '_blank', 'width=600,height=400');
// Verificar si la ventana emergente se cierra
let interval = setInterval(function() {
if (ads.ventanaEmergente.closed) {
clearInterval(interval);
clearInterval(ads.intervalo);
if (!ads.mensajeMostrado) {
$('#temporizador p').html(`Vuelve a presionar sobre la publicidad y espera a que termine el tiempo.`);
}
}
}, 1000);
},
startLink: function() {
let link = this.enlace;
let self = this
$.post(`${global_data.url}/publicidad.php`, { link }, response => {
$('.adsHtml').attr({
href: response
}).addClass('finish').html(response);
if(self.cerrarVentana) self.ventanaEmergente.close();
})
},
start: function(link) {
this.enlace = link;
this.popup();
}
}Paso 7:
En la raíz de su sitio crean un archivo llamado "ads.html", en el caso que quieran darle otro nombre lo deberán modificar en esta parte
Código: ( Seleccionar Todo )
const ads = {
pagina: 'ads.html', // <- nombre de la pagina html
....
}Para añadir a wysibb.js
1 - Buscan
Código: ( Seleccionar Todo )
removeFormat: "Eliminar formato",Código: ( Seleccionar Todo )
encode: "Esconder enlace",Código: ( Seleccionar Todo )
,img,video,link,Código: ( Seleccionar Todo )
encode,y por último buscan
Código: ( Seleccionar Todo )
img : {
title: CURLANG.img,y arriba añaden
Código: ( Seleccionar Todo )
encode : {
title: CURLANG.linkHidden,
buttonHTML: '<span class="fonticon ve-tlb-link1">\uE007</span>',
modal: {
title: CURLANG.modal_link_title,
width: "500px",
tabs: [
{
input: [
{param: "URL",title:CURLANG.modal_link_url,validation: '^http(s)?://'}
]
}
]
},
transform : {
'<a class="adsHtml" href="javascript:ads.start(\'{URL}\')"><embed src="Registrate o inicia tu sesión para ver este contenido" allowfullscreen></a>':"[encode]{URL}[/encode]"
}
},[font]Paso 8: (Nuevo paso)
En la ruta de tu sitio creas un archivo llamado "publicidad.json" y en el agregan[/font]
Código: ( Seleccionar Todo )
{
"active": 2,
"publicidades": {
"1": {
"enlace": "Registrate o inicia tu sesión para ver este contenido",
"clase": "large"
},
"2": {
"enlace": "Registrate o inicia tu sesión para ver este contenido",
"clase": "medium"
}
}
}Quedaría como forma default ya que editar lo que esta en transform: { es mucho más complicado/largo de hacer, pero cuando se visualice en el post se verá el que este activo.
y eso sería todo


Facebook
Twitter
Reddit
Digg
del.icio.us
Tumblr
Pinterest
Blogger
Fark
LinkedIn
Mix
Google