03-30-2024, 03:37 PM
0
(03-29-2024, 08:57 PM)Miguel92 escribió: Debes agradecer para ver el contenido...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...
PD: Se me olvido implementarlo en wysibb!
Paso 1:
En c.core.php buscamos
Código: ( Seleccionar Todo )function parseBBCode(...) {
... código
y 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:
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);
// Desde este punto, puedes hacer lo que quieras
$asHtml = "<a class=\"adsHtml\" href=\"javascript:ads.start('$code')\"><embed src=\"\" 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:
En cualquier hoja de estilo como estilo.css, phpost.css, extra.css, etc añaden
Código: ( Seleccionar Todo ).adsHtml {
--largo: 728px;
--alto: 90px;
overflow: hidden;
border-radius: .325rem;
background-color: #CCC6;
display: block;
position: relative;
}
.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:
En acciones.js o funciones.js donde quieran al final de todo agregan
Código: ( Seleccionar Todo )const ads = {
pagina: 'ads.html',
enlace: '',
intervalo: '',
ventanaEmergente: '',
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(`${global_data.url}/${this.pagina}`, '_blank', 'width=600,height=400');
// Verificar si la ventana emergente se cierra
let interval = setInterval(function() {
if (this.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);
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
debajo añadenCódigo: ( Seleccionar Todo )removeFormat: "Eliminar formato",
luego buscanCódigo: ( Seleccionar Todo )removeFormat: "Eliminar formato",
y a lado agreganCó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="" allowfullscreen></a>':"[encode]{URL}[/encode]"
}
},
y eso sería todo
primero que todo gracias miguel por tomarte el tiempo, y en realizar el mod. ahora consulto .. eh reaizdo la instalacion todo bien aparentemente porque salio la publi. te detallo algunos inconveniente que no se si ise algo mal yo, o te olvidaste algun punto o algo
1° --- No me permite hacer click, por lo que no se ejecuta el contador.
2° ---- se podria saca las flechas del recuadro de la publicidad ?



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