1var path_files = global_domain+"/_files"; 2var path_jsons = global_domain+"/_files/jsons"; 3var path_epg_signals = path_jsons+"/signals"; 4var selected_signal_number = null; 5var selected_signal_interval = null; 6var currentURL = window.location.href; 7 8let limitComent = 5; 9let actualPost = 0; 10 11var custom_postfix = [ 12 { 13 cat : "tierra-brava", 14 postfix : "_reality", 15 ads_tags : [ 16 "Top", 17 "Middle", 18 "Lateral" 19 ] 20 }, 21 // { 22 // cat : "yo-soy", 23 // postfix : "_reality", 24 // ads_tags : [ 25 // "Top", 26 // "Middle", 27 // "Lateral" 28 // ] 29 // } 30]; 31 32// Función para obtener el elemento según la categorÃa en la URL 33function get_custom_postfix() { 34 // Iterar sobre el arreglo de custom_postfix 35 for (var i = 0; i < custom_postfix.length; i++) { 36 var elemento = custom_postfix[i]; 37 // Verificar si la categorÃa está presente en la URL 38 if(currentURL.indexOf('/'+elemento.cat+'/') !== -1){ 39 return elemento; 40 } 41 } 42 return null; // Devolver null si no se encuentra ningún elemento 43} 44 45var custom_tags_data = get_custom_postfix(); 46 47 48var cargarPublicidad = function( show = true ) { 49 50 if(global_section === "single"){ 51 if(post_noAds === '1'){ 52 return; 53 } 54 } 55 56 if (!$(".rtb_slot")[0]) return false; 57 var window_width = $(window).width(); 58 if (typeof googletag == 'undefined') return false; 59 60 if(global_section != 'single'){ 61 var header_ad = $('#header_ads'); 62 if(header_ad.hasClass( "loaded" )){ 63 header_ad.removeClass("loaded"); 64 header_ad.html(""); 65 } 66 } 67 68 var ITTads = $('#bottom_itt'); 69 if(ITTads.hasClass( "loaded" ) && show ){ 70 // Obtiene todos los slots cargados 71 var slots = googletag.pubads().getSlots(); 72 73 // Busca el slot que tiene el ID 'web-ed-itt-universal' 74 var adSlot = slots.find(slot => slot.getSlotElementId() === 'web-ed-itt-universal'); 75 76 if (adSlot) { 77 googletag.destroySlots([adSlot]); 78 } 79 80 ITTads.removeClass("loaded"); 81 ITTads.html(""); 82 } 83 84 googletag.cmd.push(function() { 85 86 if(global_section === "single"){ 87 add_middle_post_content_rtb_slot(); 88 } 89 90 $(".rtb_slot:not(.loaded,.only-focus)").each(function() { 91 $(this).addClass("loaded"); 92 93 var slot = $(this).data("slot"); 94 95 // obtener el skeleton hermano 96 var skeleton = $(this).prev(".ad-skeleton"); 97 98 if (skeleton.length) { 99 var slotId = $(this).data("adunit").replace(/\W+/g, "_"); // limpia caracteres raros 100 var skeletonId = "adSkeleton_" + slotId; 101 skeleton.attr("id", skeletonId); 102 103 // guardar el id también en el slot para luego relacionarlo 104 $(this).data("skeletonId", skeletonId); 105 } 106 107 if(custom_tags_data){ 108 custom_tags_data.ads_tags.forEach(function(elemento) { 109 if (slot.indexOf('/'+elemento) !== -1) { 110 slot = slot + custom_tags_data.postfix; 111 return; 112 } 113 }); 114 } 115 116 ocultar_publicidad_tmp = false; 117 118 if (ocultar_publicidad_tmp == true) { 119 var $parent = $(this).closest('.the-banner'); 120 if ($parent) { 121 $parent.css({ 122 'display': 'none', 123 }); 124 } 125 else{ 126 $(this).css({ 127 'display': 'none', 128 }); 129 } 130 return; //EQUIVALENTE A CONTINUE 131 } 132 133 var is_only_define = false; 134 135 //REVISAMOS SI SOLO SE DECLARA 136 if ($(this).hasClass('rtb_slot_only_define')) { 137 is_only_define = true; 138 } 139 140 var id = $(this).data("adunit"); 141 var dimensions = $(this).data("dimensions"); 142 var min_width = null;
143 var valid = true; 144 var slot_ads; 145 if (typeof $(this).data("min-width") != 'undefined' && $(this).data("min-width") != '') { 146 min_width = parseInt($(this).data("min-width")); 147 } 148 149 if(typeof id == 'undefined' && is_only_define!=true){ 150 return false; 151 } 152 153 // SI LA PANTALLA ES MENOR/IGUAL AL ANCHO MINIMO ESTABLECIDO, SETEAMOS EN FALSE 154 if (min_width != null && window_width <= min_width) { 155 valid = false; 156 } 157 158 // SI EL ID YA ESTA EN EL SITIO 159 if (document.getElementById(id) != null) { 160 valid = false; 161 } 162 163 if (valid == true) { 164 // Create a div for the slot 165 var slotDiv = document.createElement('div'); 166 slotDiv.id = id; // Id must be the same as slotName 167 if(!is_only_define){ 168 $(this).html(slotDiv); 169 } 170 171 var oop = $(this).data("oop"); 172 if(typeof oop !== 'undefined' && oop==true){ 173 if(is_only_define){ 174 var format = $(this).data("format"); 175 if(typeof format !== 'undefined' && (newFormat = Function("return " + format)()) !== undefined){ 176 try { 177 slot_ads = googletag.defineOutOfPageSlot(slot,newFormat); 178 } 179 catch { 180 return; 181 } 182 183 } 184 } 185 else{ 186 slot_ads = googletag.defineOutOfPageSlot(slot,id); 187 } 188 } 189 else{ 190 slot_ads = googletag.defineSlot(slot, dimensions, id); 191 } 192 193 194 var section = $(this).data("section"); 195 196 if(typeof section !== 'undefined'){ 197 slot_ads.setTargeting('Seccion',section); 198 } 199 200 var tipo = $(this).data("tipo"); 201 202 if(typeof tipo !== 'undefined'){ 203 slot_ads.setTargeting('Tipo',tipo); 204 } 205 206 // var sizeMapping = $(this).data("sizemapping"); 207 208 // if(typeof sizeMapping !== 'undefined' && window[sizeMapping] !== undefined){ 209 // slot_ads.defineSizeMapping(window[sizeMapping]); 210 // } 211 212 let site_mapping = generateSizeMapping(dimensions); 213 slot_ads.defineSizeMapping(site_mapping); 214 215 var refresh = $(this).data("refresh"); 216 217 if(typeof refresh !== 'undefined' && refresh==true){ 218 slot_ads.setTargeting(REFRESH_KEY,REFRESH_VALUE); 219 } 220 221 //SI ES NOTA, AGREGAMOS EL ID,CATEGORIAS Y TAGS A LA SECMENTACION 222 if(typeof global_post_id !== 'undefined' && global_post_id !=''){ 223 224 // //CATEGORIES 225 // var categories_targeting_slugs = []; 226 // global_post_categories.forEach(function(value,index){ 227 // categories_targeting_slugs.push(value.slug); 228 // }); 229 // slot_ads.setTargeting('categories',categories_targeting_slugs); 230 231 // //TAGS 232 // var tags_targeting_slugs = [];
233 // global_post_tags.forEach(function(value,index){ 234 // tags_targeting_slugs.push(value.slug); 235 // }); 236 // slot_ads.setTargeting('tags',tags_targeting_slugs); 237 238 //ID 239 slot_ads.setTargeting('Nota',global_post_id); 240 241 } 242 243 //slot_ads.setTargeting('device',global_device ); 244 245 slot_ads.addService(googletag.pubads()); 246 247 googletag.pubads().enableSingleRequest(); 248 googletag.pubads().collapseEmptyDivs(true, true); 249 googletag.pubads().setCentering(true); 250 googletag.pubads().enableLazyLoad({ 251 fetchMarginPercent: 0, 252 renderMarginPercent: 0, 253 }); 254 255 googletag.enableServices(); 256 257 // Escucha el evento para saber si el anuncio se cargó y mostrar el ITT 258 googletag.pubads().addEventListener('slotRenderEnded', function(event) { 259 // Verifica si el anuncio corresponde al ID que necesitas 260 if (event.slot.getSlotElementId() === 'web-ed-itt-universal') { 261 if (!event.isEmpty) { 262 showModal(); 263 } 264 } 265 266 if (event.slot.getSlotElementId() === 'web-ed-sticky') { 267 if (!event.isEmpty) { 268 showSticky(); 269 } 270 } 271 272 var slotElement = $(".rtb_slot[data-slot='" + event.slot.getAdUnitPath() + "']"); 273 274 if (slotElement.length && event.slot.getSlotElementId() !== 'web-ed-itt-universal' && event.slot.getSlotElementId() !== 'web-ed-sticky') { 275 var skeletonId = slotElement.data("skeletonId"); 276 var skeleton = document.getElementById(skeletonId); 277 278 if (skeleton) { 279 skeleton.classList.add("hidden"); 280 } 281 } 282 }); 283 284 if(!is_only_define){ 285 //console.log(slot); 286 googletag.display(id); 287 // googletag.cmd.push(function() { 288 // googletag.display(id); 289 // }); 290 } 291 292 } 293 }); 294 }); 295 296} 297 298function generateSizeMapping(slotSizes){ 299 300 var sizeMappingBuilder = googletag.sizeMapping(); 301 302 let largeScreenSizes = [[960,250],[960,180],[160,600],[970,90],[970,250],[960,90],[300,250],[300,600],[120,600],[728,90],[1,1]]; 303 let mediumScreenSizes = [[160,600],[300,250],[120,600],[728,90],[1,1]]; 304 let smallScreenSizes = [[300,250],[320,100],[300,100],[320,50],[300,50],[1,1]]; 305 let zeroCrossZeroSizes = [[300,250],[320,100],[300,100],[320,50],[300,50],[1,1]]; 306 307 let findedLargeScreenSizes = slotSizes.filter(elem1 => { 308 return largeScreenSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]); 309 }); 310 311 if (findedLargeScreenSizes.length > 0) { 312 sizeMappingBuilder.addSize([992, 0], findedLargeScreenSizes); 313 } 314 315 let findedMediumScreenSizes = slotSizes.filter(elem1 => { 316 return mediumScreenSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]); 317 }); 318 319 if (findedMediumScreenSizes.length > 0) { 320 sizeMappingBuilder.addSize([768, 0], findedMediumScreenSizes); 321 } 322 323 let findedSmallScreenSizes = slotSizes.filter(elem1 => { 324 return smallScreenSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]); 325 }); 326 327 if (findedSmallScreenSizes.length > 0) { 328 sizeMappingBuilder.addSize([320, 0], findedSmallScreenSizes); 329 } 330 331 let findedZeroCrossZeroSizes = slotSizes.filter(elem1 => { 332 return zeroCrossZeroSizes.some(elem2 => elem2[0] === elem1[0] && elem2[1] === elem1[1]); 333 }); 334 335 if (findedZeroCrossZeroSizes.length > 0) { 336 sizeMappingBuilder.addSize([0, 0], findedZeroCrossZeroSizes); 337 } 338 339 return sizeMappingBuilder.build(); 340 341} 342 343Handlebars.registerHelper('ifCond', function (v1, operator, v2, options) { 344 345 switch (operator) { 346 case '==': 347 return (v1 == v2) ? options.fn(this) : options.inverse(this); 348 case '===': 349 return (v1 === v2) ? options.fn(this) : options.inverse(this); 350 case '!=': 351 return (v1 != v2) ? options.fn(this) : options.inverse(this); 352 case '!==': 353 return (v1 !== v2) ? options.fn(this) : options.inverse(this); 354 case '<': 355 return (v1 < v2) ? options.fn(this) : options.inverse(this); 356 case '<=': 357 return (v1 <= v2) ? options.fn(this) : options.inverse(this); 358 case '>': 359 return (v1 > v2) ? options.fn(this) : options.inverse(this); 360 case '>=': 361 return (v1 >= v2) ? options.fn(this) : options.inverse(this); 362 case '&&': 363 return (v1 && v2) ? options.fn(this) : options.inverse(this); 364 case '||': 365 return (v1 || v2) ? options.fn(this) : options.inverse(this); 366 default: 367 return options.inverse(this); 368 } 369}); 370 371var load_home_programacion_signal = function(n_signal){ 372 373 var dom_wrap_programacion = document.querySelector('#programacion_today'); 374 375 if(!dom_wrap_programacion){ 376 return; 377 } 378 379 if(typeof n_signal == "undefined"){ 380 n_signal = 0; 381 382 var default_button = document.querySelector('.js_signal_button[data-position="0"]'); 383 384 let data_signal = default_button.dataset.signal; 385 386 data_signal = JSON.parse(atob(data_signal)); 387 388 if(data_signal.has_epg!=true){ 389 selected_signal_number = null; 390 return; 391 } 392 393 } 394 395 var json_epg = path_epg_signals+"/data_signal_"+n_signal+".json"; 396 397 398 399 $.ajax({ 400 url: json_epg, 401 type: 'GET', 402 cache: false, // Deshabilita la caché 403 success: function(data) {
404 print_programacion_signal(data); 405 selected_signal_number = n_signal; 406 set_home_programacion_signal_interval(); 407 }, 408 error: function(xhr, status, error) { 409 // La función error se ejecutará en caso de error 410 console.error('Error al obtener epg:', status, error); 411 } 412 }); 413 414} 415 416var load_page_programacion_signal = function(n_signal){ 417 418 var default_button = document.querySelector('.js_page_programacion_signal_button[data-position="0"]'); 419 420 if(!default_button){ 421 return; 422 } 423 424 if(typeof n_signal == "undefined"){ 425 n_signal = 0; 426 427 let data_signal = default_button.dataset.signal; 428 429 data_signal = JSON.parse(atob(data_signal)); 430 431 if(data_signal.has_epg!=true){ 432 selected_signal_number = null; 433 return; 434 } 435 436 } 437 438 var json_epg = path_epg_signals+"/data_signal_"+n_signal+".json"; 439 440 $.ajax({ 441 url: json_epg, 442 type: 'GET', 443 cache: false, // Deshabilita la caché 444 success: function(data) { 445 print_page_programacion_signal_programacion(data); 446 selected_signal_number = n_signal; 447 set_page_programacion_signal_interval(); 448 }, 449 error: function(xhr, status, error) { 450 // La función error se ejecutará en caso de error 451 console.error('Error al obtener epg:', status, error); 452 } 453 }); 454 455} 456 457var print_page_programacion_signal_programacion = function(data){ 458 var today_key = data.current_day_num; 459 var data_today = data.data_by_days_and_dm; 460 461 var today_button = document.querySelector('.js_button_day[data-position="'+today_key+'"]'); 462 463 var any_is_actived = document.querySelector('.js_button_day.is-actived'); 464 465 if (!today_button.classList.contains('is-actived') && !any_is_actived) { 466 today_button.classList.add('is-actived'); 467 } 468 469 var today_tab = document.querySelector('.js_programacion_by_day[data-position="'+today_key+'"]'); 470 471 if (!today_tab.classList.contains('is-actived') && !any_is_actived) { 472 today_tab.classList.add('is-actived'); 473 } 474 475 var source = document.getElementById("page_programacion_data_by_day_template"); 476 var template = Handlebars.compile(source.innerHTML); 477 478 Object.keys(data_today).forEach(function(key) { 479 var data_day = data_today[key]; 480 481 var html = template({ 482 data_am : data_day.am, 483 data_pm : data_day.pm 484 }); 485 486 var dom_wrap_programacion_by_day = document.querySelector('.js_programacion_by_day[data-position="'+key+'"]'); 487 488 dom_wrap_programacion_by_day.innerHTML = html; 489 490 }); 491 492 493 494} 495 496var print_programacion_signal = function(data){ 497 var dom_wrap_programacion = document.querySelector('#programacion_today'); 498 499 if(dom_wrap_programacion){ 500 var source = document.getElementById("home_programacion_template"); 501 502 var template = Handlebars.compile(source.innerHTML); 503 504 var today_key = data.current_day_num; 505 var data_today = data.data_by_days[today_key]; 506 507 var now_index = data_today.findIndex(elemento => elemento.is_now === true); 508 509 now_index = now_index !== -1 ? now_index : 0; 510 511 var html = template({ 512 programacion : data_today 513 }); 514 515 dom_wrap_programacion.innerHTML = html; 516 517 const $el = document.querySelector('.js-main-hero-section-carousel'); 518 519 new Swiper($el, { 520 // Modules: [Navigation], 521 slidesPerView: 'auto', 522 spaceBetween: 8, 523 initialSlide: now_index, 524 navigation: { 525 nextEl: ".main-hero-section-carousel__button--next", 526 prevEl: ".main-hero-section-carousel__button--prev", 527 }, 528 }); 529 530 } 531} 532 533var change_page_programacion_signals = function(){ 534 535 var buttons = document.querySelectorAll('.js_page_programacion_signal_button'); 536 537 var active_class = "main-hero-section-menu__mark"; 538 539 buttons.forEach(function(button) { 540 button.addEventListener('click', function(event) { 541 event.preventDefault(); 542 543 let button = event.currentTarget; 544 let button_position = button.dataset.position; 545 546 buttons.forEach(function(elemento) { 547 elemento.classList.remove(active_class); 548 }); 549 550 button.classList.add(active_class); 551 552 load_page_programacion_signal(button_position); 553 554 }); 555 }); 556 557} 558 559// var change_home_signals = function(){ 560// var buttons = document.querySelectorAll('.js_signal_button'); 561 562// var active_class = "main-hero-section-menu__mark"; 563 564// buttons.forEach(function(button) { 565// button.addEventListener('click', function(event) { 566// event.preventDefault(); 567 568// let button = event.currentTarget; 569// let dom_iframe = document.querySelector('.js_home_iframe_signal'); 570 571// buttons.forEach(function(elemento) { 572// elemento.classList.remove(active_class); 573// }); 574 575// button.classList.add(active_class); 576 577// //VALIDAR QUE SEA UNA SEÃAL DISTINTA 578 579// let button_position = button.dataset.position; 580// let iframe_position = dom_iframe.dataset.position; 581 582// if(button_position==iframe_position){ 583// return; 584// } 585 586// //SETEAMOS LA SEÃAL 587 588// let data_signal = button.dataset.signal; 589 590// data_signal = JSON.parse(atob(data_signal)); 591 592// dom_iframe.outerHTML = data_signal.iframe; 593 594 595// if(data_signal.has_epg==true){ 596// selected_signal_number = button_position; 597// load_home_programacion_signal(button_position); 598// } 599// else{ 600// selected_signal_number = null; 601// clean_home_programacion_signal(); 602// } 603 604 605 606// }); 607// }); 608// } 609 610 611 612// CAMBIA SEÃAL DE AGRICULTURA-TV 613var change_home_signals = function() { 614 var buttons = document.querySelectorAll('.js_signal_button'); 615 616 buttons.forEach(function(button) { 617 button.addEventListener('click', function(event) { 618 event.preventDefault(); 619 620 // Quitar la clase 'is-actived' de todos los elementos con la clase 'js_signal_button'
621 buttons.forEach(function(btn) { 622 btn.classList.remove('is-actived'); 623 }); 624 625 // Agregar la clase 'is-actived' al elemento que dispara el evento 'click' 626 event.target.classList.add('is-actived'); 627 628 // Obtener el valor del atributo data-signal del elemento que disparó el evento 'click' 629 let signal = event.target.getAttribute('data-signal'); 630 631 // Buscar el elemento con la clase 'js_home_iframe_signal' 632 let dom_iframe = document.querySelector('.js_home_iframe_signal'); 633 634 // Eliminar todos los elementos hijos del elemento 'js_home_iframe_signal' 635 while (dom_iframe.firstChild) { 636 dom_iframe.removeChild(dom_iframe.firstChild); 637 } 638 639 // Crear un nuevo elemento para insertar el contenido del archivo HTML 640 let newContent = document.createElement('div'); 641 642 // Cargar el contenido del archivo HTML usando fetch 643 fetch(global_domain+'/_templates/desktop/sections/generated/signals/'+signal+'.html').then(response => response.text()).then(data => { 644 // Insertar el contenido HTML en el nuevo elemento 645 newContent.innerHTML = data; 646 647 // Buscar y eliminar el elemento con la clase 'main-media-box__header' 648 let headerToRemove = newContent.querySelector('.main-media-box__header'); 649 if (headerToRemove) { 650 headerToRemove.remove(); 651 } 652 653 // Insertar el contenido modificado en el elemento 'js_home_iframe_signal' 654 dom_iframe.appendChild(newContent); 655 }).catch(error => { 656 console.error('Error al cargar el archivo HTML:', error); 657 }); 658 }); 659 }); 660}; 661 662var clean_home_programacion_signal= function(){ 663 var dom_wrap_programacion = document.querySelector('#programacion_today'); 664 665 if(dom_wrap_programacion){ 666 dom_wrap_programacion.innerHTML = ''; 667 } 668 669 set_home_programacion_signal_interval(); 670} 671 672var show_post_tags = function(){ 673 674 var tags_data_divs = document.querySelectorAll('.js_post_tags'); 675 var source = document.getElementById("tags_posts_template"); 676 677 tags_data_divs.forEach(function(tag_div) { 678 679 var template = Handlebars.compile(source.innerHTML); 680 var post_tags_str = tag_div.dataset.tags; 681 682 if (!post_tags_str.length) { 683 return; 684 } 685 686 // Convertimos de string a array de objetos 687 var post_tags = JSON.parse(post_tags_str); 688 689 // Ordenamos para que el tag con primary: true quede primero 690 post_tags.sort((a, b) => { 691 return (b.primary === true) - (a.primary === true); 692 }); 693 694 // Ahora sÃ, renderizamos el template con los tags ordenados 695 var html = template({ 696 post_tags: post_tags 697 }); 698 699 tag_div.outerHTML = html; 700 }); 701}; 702 703var show_post_tags_video = function(){ 704 705 var tags_data_divs = document.querySelectorAll('.js_post_video_tags'); 706 707 var source = document.getElementById("tags_posts_videos_template"); 708 709 tags_data_divs.forEach(function(tag_div) { 710 711 var template = Handlebars.compile(source.innerHTML); 712 713 var post_tags = tag_div.dataset.tags; 714 715 if(!post_tags.length){ 716 return; 717 } 718 719 var html = template({ 720 post_tags : JSON.parse(post_tags) 721 }); 722 723 tag_div.outerHTML = html; 724 725 }); 726} 727 728var show_post_categories = function(){ 729 730 var categories_data_divs = document.querySelectorAll('.js_post_categories'); 731 732 var source = document.getElementById("categories_posts_template"); 733 734 categories_data_divs.forEach(function(categories) { 735 736 var template = Handlebars.compile(source.innerHTML); 737 738 var post_categories = categories.dataset.categories; 739 740 if(!post_categories.length){ 741 return; 742 } 743 744 var categories_tmp = JSON.parse(post_categories); 745 746 categories_tmp.forEach(function(value, index) { 747 let pre_slug = index > 0 ? categories_tmp[index-1].slug : ''; 748 let current_slug = pre_slug + value.slug; 749 750 unique_parts = [...new Set(current_slug.split('/'))]; 751 752 let new_slug = unique_parts.join('/'); 753 754 categories_tmp[index].slug = new_slug; 755 756 }); 757 758 var html = template({ 759 categories : categories_tmp 760 }); 761 762 categories.outerHTML = html; 763 764 }); 765} 766 767var show_inline_content_lee_tambien = function(){ 768 769 var lee_tmbn_data_divs = document.querySelectorAll('.js_te_puede_interesar'); 770 771 var source = document.getElementById("js_inline_content_lee_tambien_template"); 772
773 lee_tmbn_data_divs.forEach(function(lee_tmbn_div) { 774 775 var template = Handlebars.compile(source.innerHTML); 776 777 var posts = lee_tmbn_div.dataset.posts; 778 779 // posts = JSON.parse(atob(posts)); 780 781 if(typeof global_last_posts === 'undefined' || !global_last_posts){ 782 return; 783 } 784 785 posts = global_last_posts 786 787 if(!posts.length){ 788 return; 789 } 790 791 var html = template({ 792 posts : posts 793 }); 794 795 if(html != ''){ 796 var skeleton = document.getElementById('skeleton_notas_relacionadas'); 797 skeleton.classList.add("hidden"); 798 } 799 800 lee_tmbn_div.outerHTML = html; 801 802 }); 803} 804 805// NOTA - TE PUEDE INTERASAR 806var show_posts_te_puede_interesar = function(){ 807 808 var new_div = document.querySelectorAll('.main-related-card'); 809 var resultados = []; 810 811 new_div.forEach(function(mas_noticia) { 812 // Obtener el 'href' de la primera etiqueta <a> 813 var primerEnlace = mas_noticia.querySelector('a'); 814 var hrefPrimerEnlace = primerEnlace ? primerEnlace.getAttribute('href') : null; 815 816 // Obtener el 'src' de la etiqueta <img> 817 var imagen = mas_noticia.querySelector('img'); 818 var srcImagen = imagen ? imagen.getAttribute('src') : null; 819 820 // Obtener el innerHTML de la segunda etiqueta <a> 821 var segundoEnlace = mas_noticia.querySelector('.main-related-card__title a'); 822 var innerHTMLSegundoEnlace = segundoEnlace ? segundoEnlace.innerHTML : null; 823 824 // Crear un objeto con los resultados 825 var datos = { 826 post_link: hrefPrimerEnlace, 827 imagen_post: srcImagen, 828 post_title: innerHTMLSegundoEnlace 829 }; 830 831 // Agregar el objeto al array de resultados 832 resultados.push(datos); 833 }); 834 835 // Convertir el array de resultados a formato JSON 836 var resultadosJson = JSON.stringify(resultados, null, 2); 837 838 839 // Seleccionar todos los elementos con la clase '.js-content-post' 840 var elementos = document.querySelectorAll('.js-content-post'); 841 var contador = 0; 842 843 // Iterar sobre cada elemento encontrado que tiene la clase '.js-content-post' 844 elementos.forEach(function(elemento) { 845 // Obtener todos los hijos del elemento 846 var hijos = elemento.children; 847 var inicio = 0; 848 849 // Iterar sobre los hijos del elemento 850 for (var i = 0; i < hijos.length; i++) { 851 // Verificar si el hijo es una etiqueta 'FIGURE' 852 if (hijos[i].tagName === 'FIGURE' && hijos[i].classList.contains('main-related-card')) { 853 contador += 1; 854 } 855 856 // Si el hijo no es una etiqueta 'FIGURE' y el contador es mayor que 0 857 if (hijos[i].tagName !== 'FIGURE' && contador > 0) { 858 // Actualizar el valor de 'contador' para considerar la vuelta anterior. 859 contador = contador + inicio; 860 861 // Insertar un clon del template antes del hijo actual 862 elemento.insertBefore(template(inicio, contador).cloneNode(true), hijos[i]); 863 864 // Eliminar las figuras que están detrás del hijo actual 865 eliminarFigurasDetras(hijos[i]); 866 867 // Actualizar el valor de 'inicio' y 'contador' 868 inicio = contador; 869 contador = 0; 870 } 871 } 872 }); 873 874 function template(inicio, contador){ 875 876 var source = document.getElementById("js_te_puede_interesar_template"); 877 878 var template = Handlebars.compile(source.innerHTML); 879 880 var tempContainer = document.createElement('div'); 881 882 var posts = JSON.parse(resultadosJson); 883 884 posts = posts.slice(inicio, contador); 885 886 if(!posts.length){ 887 return; 888 } 889 890 var html = template({ 891 posts : posts 892 }); 893 894 tempContainer.innerHTML = html; 895 896 return tempContainer.firstElementChild; 897 898 } 899 900 // Función para eliminar los elementos <figure> que están detrás de un elemento especÃfico 901 function eliminarFigurasDetras(elemento) { 902 var anterior = elemento.previousElementSibling; 903 while (anterior) { 904 if (anterior.tagName === 'FIGURE') { 905 var paraEliminar = anterior; 906 anterior = anterior.previousElementSibling; 907 paraEliminar.remove(); 908 } else { 909 break; 910 } 911 } 912 } 913 914} 915 916var show_posts_te_puede_interesar_video = function(){ 917 918 var te_puede_interesar_divs = document.querySelectorAll('.js_te_puede_interesar_video'); 919 920 var source = document.getElementById("js_te_puede_interesar_video_template"); 921
922 te_puede_interesar_divs.forEach(function(te_puede_interesar_div) { 923 924 var template = Handlebars.compile(source.innerHTML); 925 926 var posts = te_puede_interesar_div.dataset.posts; 927 928 posts = posts ? JSON.parse(posts) : posts; 929 930 if(!posts.length){ 931 return; 932 } 933 934 posts = posts.slice(0, 4); 935 936 var html = template({ 937 posts : posts 938 }); 939 940 te_puede_interesar_div.outerHTML = html; 941 942 }); 943} 944 945var set_home_programacion_signal_interval = function(){ 946 947 if(selected_signal_interval || selected_signal_number==null){ 948 clearInterval(selected_signal_interval); 949 } 950 951 if(selected_signal_number!=null){ 952 selected_signal_interval = setInterval(function(){ 953 load_home_programacion_signal(selected_signal_number); 954 },60 * 1000); 955 } 956 957 958} 959 960var set_page_programacion_signal_interval = function(){ 961 962 if(selected_signal_interval || selected_signal_number==null){ 963 clearInterval(selected_signal_interval); 964 } 965 966 if(selected_signal_number!=null){ 967 selected_signal_interval = setInterval(function(){ 968 load_page_programacion_signal(selected_signal_number); 969 },60 * 1000); 970 } 971 972 973} 974 975var __add_middle_post_content_rtb_slot = function(){ 976 977 //Se optienen todos los elemento que tienen la clase '.the-single__text' ya que aqui se carga el contenido de la nota.
978 var elementos = document.querySelectorAll('.the-article__body'); 979 980 //Se crea el div para los box de publicidad y se añaden sus atributos 981 var adsDiv = document.createElement('div'); 982 adsDiv.setAttribute('class', 'rtb_slot'); 983 adsDiv.setAttribute('data-dimensions', '[[728, 90], [300, 250], [336, 280]]'); 984 adsDiv.setAttribute('data-section', 'single_page'); 985 // adsDiv.setAttribute('style', 'width: 300px; height: 250px; background-color: #58D68D;'); 986 987 //Se decraran variables de iteracion. 988 var box = 0; 989 var contador = 0; 990 991 //Inicia la iteracion sobre cada elemento encontrado que tiene la clase '.the-single__text' 992 elementos.forEach(function(elemento) { 993 994 //Se verifica si el elemento ya fue procesado viendo si tiene la clase '.ads_content_succes'. 995 if(!elemento.classList.contains("ads_content_succes")){ 996 997 //Se agrega la clase '.ads_content_succes' al elemento para que no sea considerado en la proxima vuelta. 998 elemento.classList.add("ads_content_succes"); 999 1000 var id_post = elemento.querySelector('.post_id_by_ads').value; 1001 1002 //Se optienen todos los hijos del elemento. 1003 var hijos = elemento.children; 1004 1005 // Obtener todos los elementos <p> dentro del div 1006 // var parrafos = elemento.getElementsByTagName('p'); 1007 var parrafos = Array.from(hijos).filter(function(hijo) { return hijo.tagName === 'P'; }); 1008 1009 //Se calcula un proporcional de cada cuantos parrafos de muestra un anuncio 1010 //Esto porque solo hay 3 box_ad disponibles porque un box1 se utiliza en el lateral. 1011 var p_proporcional = Math.floor(parrafos.length / 4); 1012 1013 //Inicia iteracion sobre los hijos del elemento. 1014 for (var i = 0; i < hijos.length; i++) { 1015 1016 //Se verifica si el elemento es una etiqueta 'P'. 1017 if(hijos[i].tagName == 'P'){ 1018 1019 //Se aumenta el contados para saber cuando agregar la publicidad. 1020 contador += 1; 1021 1022 //Se verifica si el contador para determinar si agrega la publicidad 1023 if(contador == p_proporcional){ 1024 1025 box += 1; 1026 1027 if(box == 3){ 1028 1029 //Se agregas los atributos faltaste para la publicidad 1030 adsDiv.setAttribute('data-slot', '/2901631/TEADS-INREAD'); 1031 adsDiv.setAttribute('data-adunit', 'teads-inread_'+id_post); 1032 adsDiv.setAttribute('data-dimensions', '[1, 1]'); 1033 1034 //Se inserta la publicidad despues del parrafo indicado. 1035 elemento.insertBefore(adsDiv.cloneNode(true), hijos[i + 1]); 1036 1037 contador = 0; 1038 1039 } 1040 1041 if(box <= 4 && box != 3){ 1042 1043 if(box == 4){ box -= 1; } 1044 1045 //Se agregas los atributos faltaste para la publicidad 1046 adsDiv.setAttribute('data-slot', '/2901631/WEB-ED-CONTENIDO-'+box); 1047 adsDiv.setAttribute('data-adunit', 'web-ed-contend-'+box+'_ad_'+id_post); 1048 1049 //Se inserta la publicidad despues del parrafo indicado. 1050 elemento.insertBefore(adsDiv.cloneNode(true), hijos[i + 1]); 1051 contador = 0; 1052 1053 if (box == 1) { 1054 var adsDivTeads = document.createElement('div'); 1055 adsDivTeads.setAttribute('id', 'v109683'); 1056 elemento.insertBefore(adsDivTeads.cloneNode(true), hijos[i + 1]); 1057 } 1058 1059 } 1060 1061 } 1062 } 1063 } 1064 1065 } 1066 1067 }); 1068 1069} 1070 1071var add_middle_post_content_rtb_slot = function () { 1072 1073 // Se obtienen todos los contenedores del contenido
1074 var elementos = document.querySelectorAll('.the-article__body'); 1075 1076 elementos.forEach(function (elemento) { 1077 1078 if (elemento.classList.contains("ads_content_succes")) { 1079 return; 1080 } 1081 1082 elemento.classList.add("ads_content_succes"); 1083 1084 var id_post = elemento.querySelector('.post_id_by_ads').value; 1085 1086 // Se congela la colección de hijos 1087 var hijos = Array.from(elemento.children); 1088 1089 var inicio = 0; 1090 1091 var contador = 0; 1092 1093 var box = 1; 1094 1095 var slots = 5; 1096 1097 var primerAside = elemento.querySelector('aside'); 1098 1099 if (primerAside) { 1100 1101 slots = 4; 1102 1103 inicio = hijos.indexOf(primerAside) + 1; 1104 1105 var adsDivTeads = document.createElement('div'); 1106 adsDivTeads.id = 'v109683'; 1107 1108 primerAside.insertAdjacentElement('afterend', adsDivTeads); 1109 1110 var adsDiv = document.createElement('div'); 1111 adsDiv.className = 'rtb_slot'; 1112 adsDiv.dataset.dimensions = '[[728, 90], [300, 250], [336, 280]]'; 1113 adsDiv.dataset.section = 'single_page'; 1114 adsDiv.dataset.slot = '/2901631/WEB-ED-CONTENIDO-1'; 1115 adsDiv.dataset.adunit = 'web-ed-contend-1_ad_' + id_post; 1116 1117 adsDivTeads.insertAdjacentElement('afterend', adsDiv); 1118 1119 } 1120 1121 var hijosContenido = hijos.slice(inicio); 1122 1123 var parrafos = hijosContenido.filter(function(el){ 1124 return el.tagName === 'P'; 1125 }); 1126 1127 var p_proporcional = Math.floor(parrafos.length / slots); 1128 1129 // console.log(parrafos); 1130 1131 parrafos.forEach(function (p) { 1132 1133 contador++; 1134 1135 if (contador < p_proporcional) { 1136 return; 1137 } 1138 1139 contador = 0; 1140 1141 box++; 1142 1143 if (box == 3) { 1144 1145 var adsTeads = document.createElement('div'); 1146 adsTeads.className = 'rtb_slot'; 1147 adsTeads.dataset.slot = '/2901631/TEADS-INREAD'; 1148 adsTeads.dataset.adunit = 'teads-inread_' + id_post; 1149 adsTeads.dataset.dimensions = '[1,1]'; 1150 adsTeads.dataset.section = 'single_page'; 1151 1152 p.insertAdjacentElement('afterend', adsTeads); 1153 1154 return; 1155 } 1156 1157 if (box <= slots && box != 3) { 1158 1159 var numeroBox = box; 1160 1161 if (numeroBox == 4) { 1162 numeroBox = 3; 1163 } 1164 1165 var adsDiv = document.createElement('div'); 1166 adsDiv.className = 'rtb_slot'; 1167 adsDiv.dataset.dimensions = '[[728, 90], [300, 250], [336, 280]]'; 1168 adsDiv.dataset.section = 'single_page'; 1169 adsDiv.dataset.slot = '/2901631/WEB-ED-CONTENIDO-' + numeroBox; 1170 adsDiv.dataset.adunit = 'web-ed-contend-' + numeroBox + '_ad_' + id_post; 1171 1172 p.insertAdjacentElement('afterend', adsDiv); 1173 1174 1175 // Si no habÃa aside, mantenemos el comportamiento anterior 1176 if (numeroBox == 1 && !primerAside) { 1177 1178 var adsDivTeads = document.createElement('div'); 1179 adsDivTeads.id = 'v109683'; 1180 1181 p.insertAdjacentElement('afterend', adsDivTeads); 1182 } 1183 } 1184 1185 }); 1186 1187 }); 1188 1189 1190} 1191 1192var resize_wrap_size_container_ads = function(){ 1193 1194 const $container = document.querySelector('.def-wrapper'); 1195 const $bannerWrappers = document.querySelectorAll('.js-banner-wrapper'); 1196 1197 const updateWrapper = () => { 1198 if (!$container || !$bannerWrappers) return; 1199 1200 const resizeObserver = new ResizeObserver((entries) => { 1201 for (const entry of entries) { 1202 const { contentRect } = entry; 1203 const { width } = contentRect; 1204 1205 $bannerWrappers.forEach($item => { 1206 $item.style.width = `${width}px`; 1207 }); 1208 } 1209 }); 1210 1211 resizeObserver.observe($container); 1212 } 1213 1214 updateWrapper(); 1215 1216} 1217 1218// PAGE - BROCHURE PROGRAMAS 1219var show_page_brochure_programa = function(){ 1220 1221 var brochure_programas_divs = document.querySelectorAll('.js_brochure_programas'); 1222 1223 var source = document.getElementById("js_brochure_programas_template"); 1224
1225 brochure_programas_divs.forEach(function(brochure_programas) { 1226 1227 var template = Handlebars.compile(source.innerHTML); 1228 1229 var posts = brochure_programas.dataset.posts; 1230 1231 posts = JSON.parse(posts); 1232 1233 if(!posts.length){ 1234 return; 1235 } 1236 1237 var html = template({ 1238 posts : posts 1239 }); 1240 1241 brochure_programas.outerHTML = html; 1242 1243 }); 1244 1245} 1246 1247var audio_width = function(){ 1248 var audio = document.querySelector('audio'); 1249 1250 if(audio){ 1251 audio.setAttribute('style', 'width: 100%'); 1252 } 1253} 1254 1255var page_servel = function() { 1256 1257 var url = ['/page/frecuencias/', '/page/tarifas-servel/', '/page/contacto/']; 1258 1259 // Verifica si global_post_segment_url está en el array 1260 if (typeof global_post_segment_url !== 'undefined' && url.includes(global_post_segment_url)) { 1261 var tabla = document.querySelector('.tablepress'); 1262 if (tabla) { 1263 var enlace = tabla.querySelector('a'); 1264 if (enlace) { 1265 enlace.remove(); // Remueve el enlace si existe 1266 } 1267 } 1268 } 1269}; 1270 1271var send_post_count_new = function(post_id, date){ 1272 // Datos que queremos enviar al servidor 1273 const data = { 1274 publish_date: new Date(date).toISOString(), // Cambié 'date' a 'publish_date' 1275 }; 1276 1277 var url = "https://mongo_php.test/api.php?id=" + post_id; 1278 1279 // Hacemos la solicitud POST 1280 fetch(url, { 1281 method: "POST", // Método HTTP 1282 headers: { 1283 "Content-Type": "application/json", // Tipo de contenido que enviamos 1284 }, 1285 body: JSON.stringify(data), // Convierte el objeto `data` a JSON 1286 }) 1287 .then(response => { 1288 if (!response.ok) { 1289 throw new Error("Error en la solicitud: " + response.statusText); // Incluye el texto de estado 1290 } 1291 return response.json(); // Parseamos la respuesta como JSON 1292 }) 1293 .then(result => { 1294 console.log("Respuesta del servidor:", result); // Manipulamos la respuesta 1295 }) 1296 .catch(error => { 1297 console.error("Error:", error); // Captura errores en la solicitud 1298 }); 1299} 1300 1301var send_post_count = function(post_id, date){ 1302 1303 if(typeof post_id=='undefined') return false; 1304 if(typeof global_url_ajax=='undefined') return false; 1305 if(global_url_ajax=='') return false; 1306 1307 // const data = { 1308 // publish_date: new Date(date).toISOString(), // Cambié 'date' a 'publish_date' 1309 // }; 1310 1311 $.ajax({ 1312 url: global_url_ajax, 1313 dataType: "json", 1314 type: 'POST', 1315 // data: {action: "count_post" , post: post_id, body: JSON.stringify(data)}, 1316 data: {action: "count_post" , post: post_id, body: date}, 1317 cache: false, 1318 // contentType: false, 1319 // processData: false, 1320 success: function(data){ 1321 // console.log(data); 1322 return; 1323 }, 1324 error: function(){ 1325 console.error("Ocurrio un error procesando los datos. "); 1326 } 1327 }); 1328} 1329 1330 1331var submitComment = async function(postId, authorName, authorEmail, commentContent){ 1332 1333 // const endpoint = `https://backend.agricultura.test/wp-json/wp/v2/comments`; 1334 const dataComent = { 1335 action: "comment_post", 1336 post: postId, 1337 author_name: authorName.value, 1338 author_email: authorEmail.value, 1339 content: commentContent.value, 1340 }; 1341 1342 $.ajax({ 1343 url: global_url_ajax, 1344 dataType: "json", 1345 type: 'POST', 1346 data: dataComent, 1347 cache: false, 1348 success: function(data){ 1349 1350 const container2 = document.querySelector(".getComments-"+postId); 1351 1352 const commentHTML = ` 1353 <div class="comment-item"> 1354 <div class="comment-author">${authorName.value}</div> 1355 <div class="comment-date">${new Date().toLocaleDateString()}</div> 1356 <div class="comment-content">${commentContent.value}</div> 1357 </div> 1358 `; 1359 1360 container2.insertAdjacentHTML("afterbegin", commentHTML); 1361 // container2.innerHTML += commentHTML; 1362 1363 authorName.value = ''; 1364 authorEmail.value = ''; 1365 commentContent.value = ''; 1366 1367 const container = document.querySelector(".commentMesseg-"+postId); 1368 container.style.display='block'; 1369 container.classList.add('comment-msg-success'); 1370 msg = `Tu comentario fue enviado con exito`; 1371 container.innerHTML += msg; 1372 setTimeout(() => { 1373 container.classList.remove('comment-msg-success'); 1374 container.style.display='none'; 1375 container.innerHTML = ""; // Limpiar contenedor 1376 }, 3000) 1377 console.log(data); 1378 }, 1379 error: function(){ 1380 console.error("Ocurrio un error procesando los datos. "); 1381 } 1382 }); 1383 1384} 1385 1386var getComment = async function(postId, limitP = 5){ 1387 1388 if(postId != actualPost || actualPost == 0){ 1389 limitComent = 5; 1390 actualPost = postId; 1391 } 1392 1393 const dataComent = { 1394 action: "comment_get", 1395 post: postId, 1396 limit: limitP, 1397 }; 1398 1399 $.ajax({ 1400 url: global_url_ajax, // URL del servidor PHP 1401 dataType: "json", // Esperamos una respuesta JSON 1402 type: "POST", 1403 data: dataComent, 1404 cache: false, 1405 success: function (response) { 1406 const container = document.querySelector(".getComments-"+postId); 1407 1408 if (!container) { 1409 console.error(`No se encontró el contenedor para el postId: ${postId}`); 1410 return; 1411 } 1412 1413 // Verificar si la respuesta es exitosa 1414 if (!response.success) { 1415 console.error("Error en la respuesta del servidor:", response); 1416 container.innerHTML = '<div style="text-align: center;">Error al cargar comentarios.</div>'; 1417 return; 1418 } 1419 1420 // Obtener los comentarios 1421 const comments = response.data; 1422 1423 // Si hay comentarios, construirlos dinámicamente 1424 if (Array.isArray(comments) && comments.length > 0) { 1425 container.innerHTML = ""; // Limpiar contenedor
1426 comments.forEach(comment => { 1427 const commentHTML = ` 1428 <div class="comment-item"> 1429 <div class="comment-author">${comment.author_name}</div> 1430 <div class="comment-date">${new Date(parseInt(comment.date.$date.$numberLong)).toLocaleDateString()}</div> 1431 <div class="comment-content">${comment.content}</div> 1432 </div> 1433 `; 1434 container.innerHTML += commentHTML; 1435 }); 1436 1437 button = `<button type="none" class="form-button" style="align-self: auto;" onclick="masComentarios(${postId})">Ver mas commentarios</button>`; 1438 1439 container.innerHTML += button; 1440 1441 } else { 1442 container.innerHTML = '<div class="comment-item" style="text-align: center;">No hay comentarios para este post.</div>'; 1443 } 1444 }, 1445 error: function (xhr, status, error) { 1446 console.error("Error en la solicitud AJAX:", status, error); 1447 } 1448 }); 1449}; 1450 1451var masComentarios = async function(postId){ 1452 1453 if(postId != actualPost || actualPost == 0){ 1454 limitComent = 5; 1455 actualPost = postId; 1456 } 1457 1458 limitComent += 5; 1459 1460 getComment(postId, limitComent); 1461} 1462 1463 1464function reemplazarComillasEnCitas() { 1465 // Seleccionar todos los elementos con la clase "bloque-tc-cita-destacada" 1466 const elementosCita = document.querySelectorAll('.bloque-tc-cita-destacada'); 1467 1468 // Iterar sobre cada elemento encontrado 1469 elementosCita.forEach(elemento => { 1470 // Buscar todos los elementos span con clase "cita" dentro del bloque 1471 const citas = elemento.querySelectorAll('span.cita'); 1472 1473 citas.forEach(cita => { 1474 // Reemplazar todas las ocurrencias de u0022 por comillas dobles 1475 cita.innerHTML = cita.innerHTML.replace(/u0022/g, '"'); 1476 }); 1477 }); 1478} 1479 1480 1481var reloadForSPA = function(show = true) { 1482 1483 resize_wrap_size_container_ads(); 1484 1485 load_home_programacion_signal(); 1486 change_home_signals(); 1487 1488 load_page_programacion_signal(); 1489 change_page_programacion_signals(); 1490 1491 show_inline_content_lee_tambien(); 1492 show_post_tags(); 1493 show_post_tags_video(); 1494 show_post_categories(); 1495 show_posts_te_puede_interesar(); 1496 show_posts_te_puede_interesar_video(); 1497 // add_middle_post_content_rtb_slot(); 1498 1499 show_page_brochure_programa(); 1500 audio_width(); 1501 page_servel(); 1502 1503 if(show){ 1504 cargarPublicidad(); 1505 } 1506 1507 // if(global_section === "single"){ 1508 // send_post_count(global_post_id, datePublished); 1509 // } 1510 1511}; 1512 1513 1514document.addEventListener("DOMContentLoaded", function(event) { 1515 1516 resize_wrap_size_container_ads(); 1517 1518 load_home_programacion_signal(); 1519 change_home_signals(); 1520 1521 load_page_programacion_signal(); 1522 change_page_programacion_signals(); 1523 1524 show_inline_content_lee_tambien(); 1525 show_post_tags(); 1526 show_post_tags_video(); 1527 show_post_categories(); 1528 show_posts_te_puede_interesar(); 1529 show_posts_te_puede_interesar_video(); 1530 add_middle_post_content_rtb_slot(); 1531 1532 reemplazarComillasEnCitas(); 1533 1534 show_page_brochure_programa(); 1535 audio_width(); 1536 page_servel(); 1537 1538 // if(global_section === "single"){ 1539 // send_post_count(global_post_id, datePublished); 1540 // } 1541 1542 //OCUTAMOS ADS COMENTADOS 1543 document.querySelectorAll('._rtb_slot').forEach(function(element) { 1544 $this = $(element); 1545 var $parent = $this.closest('.u-the-banner'); 1546 if ($parent) { 1547 $parent.css({ 1548 'display': 'none', 1549 }); 1550 } 1551 else{ 1552 $this.css({ 1553 'display': 'none', 1554 }); 1555 } 1556 }); 1557 1558 cargarPublicidad(); 1559});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.