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 slots = 4; 1098 1099 var primerAside = elemento.querySelector('aside'); 1100 1101 if (false && primerAside) { 1102 1103 slots = 4; 1104 1105 inicio = hijos.indexOf(primerAside) + 1; 1106 1107 var adsDivTeads = document.createElement('div'); 1108 adsDivTeads.id = 'v109683'; 1109 1110 primerAside.insertAdjacentElement('afterend', adsDivTeads); 1111 1112 var adsDiv = document.createElement('div'); 1113 adsDiv.className = 'rtb_slot'; 1114 adsDiv.dataset.dimensions = '[[728, 90], [300, 250], [336, 280]]'; 1115 adsDiv.dataset.section = 'single_page'; 1116 adsDiv.dataset.slot = '/2901631/WEB-ED-CONTENIDO-1'; 1117 adsDiv.dataset.adunit = 'web-ed-contend-1_ad_' + id_post; 1118 1119 adsDivTeads.insertAdjacentElement('afterend', adsDiv); 1120 1121 } 1122 1123 var hijosContenido = hijos.slice(inicio); 1124 1125 var parrafos = hijosContenido.filter(function(el){ 1126 return el.tagName === 'P'; 1127 }); 1128 1129 var p_proporcional = Math.floor(parrafos.length / slots); 1130 1131 // console.log(parrafos); 1132 1133 parrafos.forEach(function (p) { 1134 1135 contador++; 1136 1137 if (contador < p_proporcional) { 1138 return; 1139 } 1140 1141 contador = 0; 1142 1143 box++; 1144 1145 if (box == 3) { 1146 1147 var adsTeads = document.createElement('div'); 1148 adsTeads.className = 'rtb_slot'; 1149 adsTeads.dataset.slot = '/2901631/TEADS-INREAD'; 1150 adsTeads.dataset.adunit = 'teads-inread_' + id_post; 1151 adsTeads.dataset.dimensions = '[1,1]'; 1152 adsTeads.dataset.section = 'single_page'; 1153 1154 p.insertAdjacentElement('afterend', adsTeads); 1155 1156 return; 1157 } 1158 1159 if (box <= slots && box != 3 && box != 2) { 1160 1161 var numeroBox = box; 1162 1163 if (numeroBox == 4) { 1164 numeroBox = 3; 1165 } 1166 1167 var adsDiv = document.createElement('div'); 1168 adsDiv.className = 'rtb_slot'; 1169 adsDiv.dataset.dimensions = '[[728, 90], [300, 250], [336, 280]]'; 1170 adsDiv.dataset.section = 'single_page'; 1171 adsDiv.dataset.slot = '/2901631/WEB-ED-CONTENIDO-' + numeroBox; 1172 adsDiv.dataset.adunit = 'web-ed-contend-' + numeroBox + '_ad_' + id_post; 1173 1174 p.insertAdjacentElement('afterend', adsDiv); 1175 1176 1177 // Si no habÃa aside, mantenemos el comportamiento anterior 1178 if (numeroBox == 1 && !primerAside) { 1179 1180 var adsDivTeads = document.createElement('div'); 1181 adsDivTeads.id = 'v109683'; 1182 1183 p.insertAdjacentElement('afterend', adsDivTeads); 1184 } 1185 } 1186 1187 }); 1188 1189 }); 1190 1191 1192} 1193 1194var resize_wrap_size_container_ads = function(){ 1195 1196 const $container = document.querySelector('.def-wrapper'); 1197 const $bannerWrappers = document.querySelectorAll('.js-banner-wrapper'); 1198 1199 const updateWrapper = () => { 1200 if (!$container || !$bannerWrappers) return; 1201 1202 const resizeObserver = new ResizeObserver((entries) => { 1203 for (const entry of entries) { 1204 const { contentRect } = entry; 1205 const { width } = contentRect; 1206 1207 $bannerWrappers.forEach($item => { 1208 $item.style.width = `${width}px`; 1209 }); 1210 } 1211 }); 1212 1213 resizeObserver.observe($container); 1214 } 1215 1216 updateWrapper(); 1217 1218} 1219 1220// PAGE - BROCHURE PROGRAMAS 1221var show_page_brochure_programa = function(){ 1222 1223 var brochure_programas_divs = document.querySelectorAll('.js_brochure_programas'); 1224 1225 var source = document.getElementById("js_brochure_programas_template"); 1226
1227 brochure_programas_divs.forEach(function(brochure_programas) { 1228 1229 var template = Handlebars.compile(source.innerHTML); 1230 1231 var posts = brochure_programas.dataset.posts; 1232 1233 posts = JSON.parse(posts); 1234 1235 if(!posts.length){ 1236 return; 1237 } 1238 1239 var html = template({ 1240 posts : posts 1241 }); 1242 1243 brochure_programas.outerHTML = html; 1244 1245 }); 1246 1247} 1248 1249var audio_width = function(){ 1250 var audio = document.querySelector('audio'); 1251 1252 if(audio){ 1253 audio.setAttribute('style', 'width: 100%'); 1254 } 1255} 1256 1257var page_servel = function() { 1258 1259 var url = ['/page/frecuencias/', '/page/tarifas-servel/', '/page/contacto/']; 1260 1261 // Verifica si global_post_segment_url está en el array 1262 if (typeof global_post_segment_url !== 'undefined' && url.includes(global_post_segment_url)) { 1263 var tabla = document.querySelector('.tablepress'); 1264 if (tabla) { 1265 var enlace = tabla.querySelector('a'); 1266 if (enlace) { 1267 enlace.remove(); // Remueve el enlace si existe 1268 } 1269 } 1270 } 1271}; 1272 1273var send_post_count_new = function(post_id, date){ 1274 // Datos que queremos enviar al servidor 1275 const data = { 1276 publish_date: new Date(date).toISOString(), // Cambié 'date' a 'publish_date' 1277 }; 1278 1279 var url = "https://mongo_php.test/api.php?id=" + post_id; 1280 1281 // Hacemos la solicitud POST 1282 fetch(url, { 1283 method: "POST", // Método HTTP 1284 headers: { 1285 "Content-Type": "application/json", // Tipo de contenido que enviamos 1286 }, 1287 body: JSON.stringify(data), // Convierte el objeto `data` a JSON 1288 }) 1289 .then(response => { 1290 if (!response.ok) { 1291 throw new Error("Error en la solicitud: " + response.statusText); // Incluye el texto de estado 1292 } 1293 return response.json(); // Parseamos la respuesta como JSON 1294 }) 1295 .then(result => { 1296 console.log("Respuesta del servidor:", result); // Manipulamos la respuesta 1297 }) 1298 .catch(error => { 1299 console.error("Error:", error); // Captura errores en la solicitud 1300 }); 1301} 1302 1303var send_post_count = function(post_id, date){ 1304 1305 if(typeof post_id=='undefined') return false; 1306 if(typeof global_url_ajax=='undefined') return false; 1307 if(global_url_ajax=='') return false; 1308 1309 // const data = { 1310 // publish_date: new Date(date).toISOString(), // Cambié 'date' a 'publish_date' 1311 // }; 1312 1313 $.ajax({ 1314 url: global_url_ajax, 1315 dataType: "json", 1316 type: 'POST', 1317 // data: {action: "count_post" , post: post_id, body: JSON.stringify(data)}, 1318 data: {action: "count_post" , post: post_id, body: date}, 1319 cache: false, 1320 // contentType: false, 1321 // processData: false, 1322 success: function(data){ 1323 // console.log(data); 1324 return; 1325 }, 1326 error: function(){ 1327 console.error("Ocurrio un error procesando los datos. "); 1328 } 1329 }); 1330} 1331 1332 1333var submitComment = async function(postId, authorName, authorEmail, commentContent){ 1334 1335 // const endpoint = `https://backend.agricultura.test/wp-json/wp/v2/comments`; 1336 const dataComent = { 1337 action: "comment_post", 1338 post: postId, 1339 author_name: authorName.value, 1340 author_email: authorEmail.value, 1341 content: commentContent.value, 1342 }; 1343 1344 $.ajax({ 1345 url: global_url_ajax, 1346 dataType: "json", 1347 type: 'POST', 1348 data: dataComent, 1349 cache: false, 1350 success: function(data){ 1351 1352 const container2 = document.querySelector(".getComments-"+postId); 1353 1354 const commentHTML = ` 1355 <div class="comment-item"> 1356 <div class="comment-author">${authorName.value}</div> 1357 <div class="comment-date">${new Date().toLocaleDateString()}</div> 1358 <div class="comment-content">${commentContent.value}</div> 1359 </div> 1360 `; 1361 1362 container2.insertAdjacentHTML("afterbegin", commentHTML); 1363 // container2.innerHTML += commentHTML; 1364 1365 authorName.value = ''; 1366 authorEmail.value = ''; 1367 commentContent.value = ''; 1368 1369 const container = document.querySelector(".commentMesseg-"+postId); 1370 container.style.display='block'; 1371 container.classList.add('comment-msg-success'); 1372 msg = `Tu comentario fue enviado con exito`; 1373 container.innerHTML += msg; 1374 setTimeout(() => { 1375 container.classList.remove('comment-msg-success'); 1376 container.style.display='none'; 1377 container.innerHTML = ""; // Limpiar contenedor 1378 }, 3000) 1379 console.log(data); 1380 }, 1381 error: function(){ 1382 console.error("Ocurrio un error procesando los datos. "); 1383 } 1384 }); 1385 1386} 1387 1388var getComment = async function(postId, limitP = 5){ 1389 1390 if(postId != actualPost || actualPost == 0){ 1391 limitComent = 5; 1392 actualPost = postId; 1393 } 1394 1395 const dataComent = { 1396 action: "comment_get", 1397 post: postId, 1398 limit: limitP, 1399 }; 1400 1401 $.ajax({ 1402 url: global_url_ajax, // URL del servidor PHP 1403 dataType: "json", // Esperamos una respuesta JSON 1404 type: "POST", 1405 data: dataComent, 1406 cache: false, 1407 success: function (response) { 1408 const container = document.querySelector(".getComments-"+postId); 1409 1410 if (!container) { 1411 console.error(`No se encontró el contenedor para el postId: ${postId}`); 1412 return; 1413 } 1414 1415 // Verificar si la respuesta es exitosa 1416 if (!response.success) { 1417 console.error("Error en la respuesta del servidor:", response); 1418 container.innerHTML = '<div style="text-align: center;">Error al cargar comentarios.</div>'; 1419 return; 1420 } 1421 1422 // Obtener los comentarios 1423 const comments = response.data; 1424 1425 // Si hay comentarios, construirlos dinámicamente 1426 if (Array.isArray(comments) && comments.length > 0) { 1427 container.innerHTML = ""; // Limpiar contenedor
1428 comments.forEach(comment => { 1429 const commentHTML = ` 1430 <div class="comment-item"> 1431 <div class="comment-author">${comment.author_name}</div> 1432 <div class="comment-date">${new Date(parseInt(comment.date.$date.$numberLong)).toLocaleDateString()}</div> 1433 <div class="comment-content">${comment.content}</div> 1434 </div> 1435 `; 1436 container.innerHTML += commentHTML; 1437 }); 1438 1439 button = `<button type="none" class="form-button" style="align-self: auto;" onclick="masComentarios(${postId})">Ver mas commentarios</button>`; 1440 1441 container.innerHTML += button; 1442 1443 } else { 1444 container.innerHTML = '<div class="comment-item" style="text-align: center;">No hay comentarios para este post.</div>'; 1445 } 1446 }, 1447 error: function (xhr, status, error) { 1448 console.error("Error en la solicitud AJAX:", status, error); 1449 } 1450 }); 1451}; 1452 1453var masComentarios = async function(postId){ 1454 1455 if(postId != actualPost || actualPost == 0){ 1456 limitComent = 5; 1457 actualPost = postId; 1458 } 1459 1460 limitComent += 5; 1461 1462 getComment(postId, limitComent); 1463} 1464 1465 1466function reemplazarComillasEnCitas() { 1467 // Seleccionar todos los elementos con la clase "bloque-tc-cita-destacada" 1468 const elementosCita = document.querySelectorAll('.bloque-tc-cita-destacada'); 1469 1470 // Iterar sobre cada elemento encontrado 1471 elementosCita.forEach(elemento => { 1472 // Buscar todos los elementos span con clase "cita" dentro del bloque 1473 const citas = elemento.querySelectorAll('span.cita'); 1474 1475 citas.forEach(cita => { 1476 // Reemplazar todas las ocurrencias de u0022 por comillas dobles 1477 cita.innerHTML = cita.innerHTML.replace(/u0022/g, '"'); 1478 }); 1479 }); 1480} 1481 1482 1483var reloadForSPA = function(show = true) { 1484 1485 resize_wrap_size_container_ads(); 1486 1487 load_home_programacion_signal(); 1488 change_home_signals(); 1489 1490 load_page_programacion_signal(); 1491 change_page_programacion_signals(); 1492 1493 show_inline_content_lee_tambien(); 1494 show_post_tags(); 1495 show_post_tags_video(); 1496 show_post_categories(); 1497 show_posts_te_puede_interesar(); 1498 show_posts_te_puede_interesar_video(); 1499 // add_middle_post_content_rtb_slot(); 1500 1501 show_page_brochure_programa(); 1502 audio_width(); 1503 page_servel(); 1504 1505 if(show){ 1506 cargarPublicidad(); 1507 } 1508 1509 // if(global_section === "single"){ 1510 // send_post_count(global_post_id, datePublished); 1511 // } 1512 1513}; 1514 1515 1516document.addEventListener("DOMContentLoaded", function(event) { 1517 1518 resize_wrap_size_container_ads(); 1519 1520 load_home_programacion_signal(); 1521 change_home_signals(); 1522 1523 load_page_programacion_signal(); 1524 change_page_programacion_signals(); 1525 1526 show_inline_content_lee_tambien(); 1527 show_post_tags(); 1528 show_post_tags_video(); 1529 show_post_categories(); 1530 show_posts_te_puede_interesar(); 1531 show_posts_te_puede_interesar_video(); 1532 add_middle_post_content_rtb_slot(); 1533 1534 reemplazarComillasEnCitas(); 1535 1536 show_page_brochure_programa(); 1537 audio_width(); 1538 page_servel(); 1539 1540 // if(global_section === "single"){ 1541 // send_post_count(global_post_id, datePublished); 1542 // } 1543 1544 //OCUTAMOS ADS COMENTADOS 1545 document.querySelectorAll('._rtb_slot').forEach(function(element) { 1546 $this = $(element); 1547 var $parent = $this.closest('.u-the-banner'); 1548 if ($parent) { 1549 $parent.css({ 1550 'display': 'none', 1551 }); 1552 } 1553 else{ 1554 $this.css({ 1555 'display': 'none', 1556 }); 1557 } 1558 }); 1559 1560 cargarPublicidad(); 1561});
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.