vendor: 1 bytes, line 1
1
2<script type="text/javascript"> 3 var my_last_article = 930359; 4 document.cookie="lastarticle="+my_last_article; 5</script>
5 6 7
8<script type="text/javascript" class="optanon-category-C0002" src="https://www.farmersjournal.ie/js/jquery-3.2.1.min.js"></script>
vendor: 1 bytes, line 8
8
9<script type="text/javascript" class="optanon-category-C0002" src="/js/jquery-migrate-3.js"></script>
9 10 11<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css" rel="stylesheet"> 12<link href="https://cdn.jsdelivr.net/npm/glightbox/dist/css/glightbox.min.css" rel="stylesheet">
13<script src="https://cdn.jsdelivr.net/npm/glightbox/dist/js/glightbox.min.js"></script>
13 14 15<style> 16 17 18 19@media (max-width: 768px) { 20 p > tickaroo-liveblog{ 21 width: 350px !important; 22 } 23} 24 25 26@media (max-width: 480px) { 27 p > tickaroo-liveblog{ 28 width: 320px !important; 29 } 30} 31 32</style> 33 34 35 36 37 38<style type="text/css"> 39.glightbox-clean .gslide-description { 40 background-color: #121212; 41} 42 43.gslide-title { 44 color: white !important; 45} 46 47 48 49 .glightbox-clean .gclose { 50 opacity: 100 !important; 51 zoom: 1.5; 52 53} 54 55 56 57/*.tik4-live__container { 58 width: 400px !important; 59 margin: auto !important; 60}*/ 61 62 63p > tickaroo-liveblog { 64/* width: 400px !important;*/ 65 margin-left: auto !important; 66 margin-right: auto !important; 67 display: block; 68 /*max-width: 100%;*/ 69} 70 71 72 73/* Desktop */ 74p > tickaroo-liveblog { 75 width: 608px; 76 max-width: 608px; 77} 78 79/* Mobile */ 80@media (max-width: 767px) { 81 p > tickaroo-liveblog { 82 width: 100%; 83 max-width: 100%; 84 } 85} 86 87 88 89 90 91 92</style> 93 94<!-- 95<a href="image.jpg" data-lightbox="image-gallery" data-title="Caption da imagem"> 96</a> 97--> 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112<!DOCTYPE html> 113<html lang="en" dir="ltr" class="sid-plesk"> 114 115<head> 116 <link rel="icon" href="/2024-files/favicon-32x32.ico" sizes="32x32" type="image/x-icon"> 117 118 119 120 <!-- Anti-FOUC: esconde o container dos botões de auth do header até o refreshAuthState() decidir o estado correto --> 121 <style> 122 /* Container direito do header desktop (Subscribe / Sign In / Podcasts / Epaper / My Account) */ 123 #header .justify-end.mr-4 { 124 visibility: hidden !important; 125 } 126 body.auth-resolved #header .justify-end.mr-4 { 127 visibility: visible !important; 128 } 129 130 /* Trava extra para o SUBSCRIBE: começa invisÃvel no HTML e Sà é liberado 131 quando o código ativamente remove a classe .ifj-locked-invisible. 132 Isso blinda contra qualquer removeClass('hidden') prematuro. */ 133 .ifj-locked-invisible { 134 visibility: hidden !important; 135 opacity: 0 !important; 136 pointer-events: none !important; 137 } 138 </style> 139 140 <!--<link rel="preload" href="./2024-files/tailwind.css" as="style" crossorigin="anonymous">--> 141 <!--<link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet">--> 142 143 144 145 146<!-- re. podcast open the player - if the user was using the player on your last access --> 147
148<script> 149/*(function () { 150 try { 151 var PLAYER_STORAGE_KEY = 'ifj_podcast_player_state'; 152 var SHELL_PUBLIC_URL = '/my-podcasts-working-on.php'; 153 154 var CURRENT_PHP_FILE = "article.php"; 155 var SHELL_PHP_FILE = 'my-podcasts-working-on.php'; 156 157 var raw = localStorage.getItem(PLAYER_STORAGE_KEY); 158 if (!raw) return; 159 160 var state = JSON.parse(raw); 161 if (!state || !state.audioUrl || !state.rssUrl) return; 162 163 if (state.playerState === 'closed' || state.dismissed === true) return; 164 165 var path = (window.location.pathname || '').replace(/\/+$/, '') || '/'; 166 var shellPath = SHELL_PUBLIC_URL.replace(/\/+$/, '') || '/'; 167 168 if (path === shellPath) return; 169 if (CURRENT_PHP_FILE === SHELL_PHP_FILE) return; 170 171 try { 172 if (window.top && window.top !== window.self) { 173 if (window.top.IFJ_PODCAST_SHELL_ACTIVE === true) return; 174 175 var topDoc = window.top.document; 176 if (topDoc) { 177 var topPlayer = topDoc.getElementById('podcast-player'); 178 var topFrame = topDoc.getElementById('siteFrame'); 179 180 if (topPlayer || topFrame) return; 181 } 182 } 183 } catch (e) {} 184 185 if (window.IFJ_PODCAST_SHELL_ACTIVE === true) return; 186 187 var target = SHELL_PUBLIC_URL + '?resume=1&ref=' + encodeURIComponent(window.location.href); 188 window.location.replace(target); 189 } catch (e) {} 190})();*/ 191</script>
191 192 193 194 195 196<!-- FlipPayIntegration TEST ENV --> 197 198<!--
198<script id="fp-config" src="https://cdn.flip-pay.cloud/uat/clients/agriculturaltrust/irishfarmersjournalie/config.js"></script>
vendor: 2 bytes, line 198
198
199<script id="fp-main" src="https://cdn.flip-pay.cloud/uat/flip-pay.js"></script>
199--> 200 201<!-- FlipPayIntegration PROD ENV -->
202<script id="fp-config" src="https://cdn.flip-pay.com/clients/agtr/farmersjournal.ie/config.js"></script>
vendor: 2 bytes, line 202
202
203<script id="fp-main" src="https://cdn.flip-pay.com/flip-pay.js?client-id=agtr"></script>
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230
230<script src="https://cdn.tailwindcss.com" ></script>
230 231 <!--<link rel="preload" href="/2024-files/css/tailwind.purged.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 232 <noscript><link rel="stylesheet" href="/2024-files/css/tailwind.purged.min.css"></noscript>--> 233 234 235 236 237 <link rel="preload" href="/2024-files/css/2024-main-css.css" as="style" onload="this.onload=null;this.rel='stylesheet'"> 238 239 240 241 242 243 <!-- CookiePro Cookies Consent Notice start for farmersjournal.ie -->
244<script type="text/javascript" src="https://cookie-cdn.cookiepro.com/consent/8dfdee53-14a0-4330-a2cf-704812646490/OtAutoBlock.js" ></script>
vendor: 2 bytes, line 244
244
245<script src="https://cookie-cdn.cookiepro.com/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="8dfdee53-14a0-4330-a2cf-704812646490" ></script>
vendor: 2 bytes, line 245
245
246<script type="text/javascript"> 247function OptanonWrapper() { } 248</script>
248 249<!-- CookiePro Cookies Consent Notice end for farmersjournal.ie --> 250 251 <meta http-equiv="Content-Security-Policy" connect-src="https://accounts.google.com/gsi/" frame-src="https://accounts.google.com/gsi/" script-src="https://accounts.google.com/gsi/client" style-src="https://accounts.google.com/gsi/style"> 252 253 254 255 256 257 258 <!-- <link href="https://fonts.googleapis.com/css2?family=Roboto:wght@400;500;700&display=swap" rel="stylesheet">--> 259 <!--<link href="./2024-files/fonts/fonts_googleapis_com_css2_Roboto.css" rel="stylesheet">--> 260 <link rel="preload" href="/2024-files/fonts/fonts_googleapis_com_css2_Roboto.css" as="style" onload="this.rel='stylesheet'"> 261 262 263 <!-- <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> --> 264 <link rel="preload" href="/2024-files/fonts/material_icons.css" as="style" onload="this.rel='stylesheet'"> 265 266 267 268 269 <!--<link rel="preload" href="https://fonts.googleapis.com/css2?family=Anton+SC&display=swap" as="font" type="font/woff2" crossorigin="anonymous">--> 270 <link rel="preload" href="/2024-files/fonts/fonts_googleapis_com_css2_Anton.css" as="font" type="font/woff2" crossorigin="anonymous"> 271 272 273 <!-- download https://www.onlinewebfonts.com/download/fca9014e73f16d1dd70d9de8db2d07a0 --> 274 <!--<link rel="preload" href="https://db.onlinewebfonts.com/c/fca9014e73f16d1dd70d9de8db2d07a0?family=Coranto+W01+2+Bold" as="font" type="font/woff2" crossorigin="anonymous">--> 275 <link rel="preload" href="/2024-files/fonts/coranto_2_headline_bold.css" as="font" type="font/woff2" crossorigin="anonymous"> 276 277 278 <!-- download https://www.onlinewebfonts.com/download/91b4ef9c28324608b2bdddf7b8b7f0d4 --> 279 <!--<link rel="preload" href="https://db.onlinewebfonts.com/c/91b4ef9c28324608b2bdddf7b8b7f0d4?family=Coranto+W01+2+Regular" as="font" type="font/woff2" crossorigin="anonymous">--> 280 <link rel="preload" href="/2024-files/fonts/coranto_regular.css" as="font" type="font/woff2" crossorigin="anonymous"> 281 282 283 <!--<link href="https://db.onlinewebfonts.com/c/5ce9469e01bc82e6d4c673b5ac4e7134?family=Coranto+W01+2+Headline+Bold" rel="stylesheet">--> 284 <link rel="preload" href="/2024-files/fonts/coranto_bold.css" as="font" type="font/woff2" crossorigin="anonymous"> 285 286 287 288 289 290 291
291<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
291 292 293 <!--<link rel="preload" rel="stylesheet" type="text/css" href="./2024-main-css.css">--> 294 <!--<link rel="preload" href="./2024-files/2024-main-css.css" as="style" crossorigin="anonymous">--> 295 296 <!-- web components --> 297
297<script src="/2024-files/js/js-components/subscriberOnlyBadge.js" defer></script>
297 298
298<script src="/2024-files/js/js-components/headerDesktopLoggedButtons.js" defer></script>
298 299
299<script src="/2024-files/js/js-components/headerDesktopNotLoggedButtons.js" defer></script>
299 300
300<script src="/2024-files/js/js-components/navMenuDesktopLoggedButtons.js" defer></script>
300 301 <!--
301<script src="/2024-files/js/js-components/headerDesktopLoggedAsFreeuserButtons.js" defer></script>
301--> 302 303 304 305 306
306<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8514379819566682" crossorigin="anonymous"></script>
306 307 308 309 310 311 312 313 314 315 316
316<script type='text/javascript'> 317 window.googletag = window.googletag || {cmd: []}; 318 googletag.cmd.push(function() { 319 320 321 322 323 324 325 326 327 328 329 330 331 332 /*googletag.defineSlot('/144848334/01_ifj_desktop_home_1680x1200_01', [1680, 1200], 'div-gpt-ad-1643811610086-0').addService(googletag.pubads());*/ 333 googletag.defineSlot('/144848334/01_ifj_desktop_home_1680x1200_01', [1900, 1200], 'div-gpt-ad-1645627462320-0').addService(googletag.pubads()); 334 335 336 337 338 339 /*HTPO top banner*/ 340 googletag.defineSlot('/144848334/HPTO2026Banner', [970, 250], 'div-gpt-ad-1764777136500-0').addService(googletag.pubads()); 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 //googletag.pubads().disableInitialLoad(); 356 //setTimeout(function(){ 357 // alert("Hello"); 358 // googletag.pubads().refresh() 359 //}, 10000); 360 361 //googletag.pubads().enableSingleRequest(); 362 363 googletag.enableServices(); 364 }); 365 </script>
365 366 367 <!-- type="text/plain" data-cookie-if="analytical" -->
368<script data-ad-client="ca-pub-8514379819566682" async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js" integrity="sha512-2OGxnxdeju0xN0hZPcC2/CCkHBCrCdKxQK3Dtf2Ujc7FWQF0f5DYd6trUJyd++g/37b+9BRf5A9ZU2tHiknijA==" crossorigin="anonymous"></script>
368 369 370 371<!-- Google Tag Manager --> 372<!-- type="text/plain" data-cookie-if="analytical" --> 373<!--
373<script type="text/plain" class="optanon-category-C0002">
vendor: 327 bytes, lines 373-377
373(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 374new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 375j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 376'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 377})(window,document,'script','dataLayer','
377GTM-W2FCP4H
vendor: 3 bytes, line 377
377');
377</script>
377--> 378<!-- End Google Tag Manager -->
379<script>
vendor: 327 bytes, lines 379-383
379(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 380new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 381j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 382'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 383})(window,document,'script','dataLayer','
383GTM-W2FCP4H
vendor: 3 bytes, line 383
383');
383</script>
383 384<!-- End Google Tag Manager --> 385 386
386<script> 387(function ($) { 388 "use strict"; 389 390 const FLIPPAY_EVENTS_ENDPOINT = "https://api.farmersjournal.ie/v1/flippay/flippay_events.php"; 391 392 function sanitiseName(name) { 393 name = (name || "custom_unknown").toString().toLowerCase(); 394 name = name.replace(/[^a-z0-9_]/g, "_"); 395 if (!/^[a-z]/.test(name)) { 396 name = "evt_" + name; 397 } 398 return name.substring(0, 100); 399 } 400 401 function postJson(url, payload) { 402 return fetch(url, { 403 method: "POST", 404 headers: { 405 "Content-Type": "application/json" 406 }, 407 credentials: "omit", 408 body: JSON.stringify(payload) 409 }).then(function (response) { 410 return response.text().then(function (text) { 411 let parsed; 412 try { 413 parsed = text ? JSON.parse(text) : {}; 414 } catch (e) { 415 parsed = { raw_response: text }; 416 } 417 418 if (!response.ok) { 419 const err = new Error("HTTP " + response.status); 420 err.response = parsed; 421 throw err; 422 } 423 424 return parsed; 425 }); 426 }); 427 } 428 429 function sendToServer(eventName, payload, sourceType, pub_id) { 430 const body = { 431 event_name: sanitiseName(eventName), 432 payload: payload || {}, 433 pub_id: pub_id || "", 434 source_url: sourceType || "custom_site_event", 435 page_url: window.location.href, 436 page_path: window.location.pathname + window.location.search + window.location.hash, 437 page_title: document.title 438 }; 439 440 postJson(FLIPPAY_EVENTS_ENDPOINT, body) 441 .then(function (res) { 442 console.log("[FlipPayâBigQuery SUCCESS]", eventName, res); 443 }) 444 .catch(function (err) { 445 console.error("[FlipPayâBigQuery FAILED]", eventName, err.response || err.message || err); 446 }); 447 } 448 449 // Public helper for AIDANS CUSTOM EVENTS 450 window.sendEventToBigQuery = function (eventName, payload, pub_id) { 451 const body = { 452 event_name: sanitiseName(eventName), 453 payload: payload || {}, 454 pub_id: pub_id || "", 455 source_url: "custom_site_event", 456 page_url: window.location.href, 457 page_path: window.location.pathname + window.location.search + window.location.hash, 458 page_title: document.title 459 }; 460 461 postJson(FLIPPAY_EVENTS_ENDPOINT, body) 462 .then(function (res) { 463 console.log("[EventâBigQuery]", eventName, res); 464 }) 465 .catch(function (err) { 466 console.warn("[EventâBigQuery] failed", eventName, err.response || err.message || err); 467 }); 468 }; 469 470 // Flip-Pay documented event listener 471 document.addEventListener("fp_event_tracker", function (event) { 472 try { 473 const labelStyle = "color:#888;font-weight:600;"; 474 const valueStyle = "color:#1e88e5;font-weight:600;"; 475 476 const detail = (event && event.detail) ? event.detail : {}; 477 const eventName = detail && detail.event_type ? detail.event_type : "NOT_SET"; 478 const pub_id = "1"; 479 480 console.groupCollapsed("%cFP:: Flip-Pay Event â¶ %c" + eventName, labelStyle, valueStyle); 481 console.log("%cFlip Event Type:%c " + eventName, labelStyle, valueStyle); 482 console.log("%cFlip Detail:%c see object below", labelStyle, valueStyle); 483 console.dir(detail); 484 console.groupEnd(); 485 486 sendToServer(eventName, detail, "fp_event_tracker", pub_id); 487 488 } catch (e) { 489 console.error("FlipPay fp_event_tracker listener error", e, event); 490 } 491 }); 492 493})(jQuery); 494</script>
494 495 496<!--AIDANS TRACKING USER ENGAGEMENT MODULE--> 497
498<script> 499(function () { 500 501 function getCookie(name) { 502 const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); 503 return match ? decodeURIComponent(match[2]) : null; 504 } 505 506 function parseFpUserCookie() { 507 try { 508 const raw = getCookie('fp.user'); 509 if (!raw) return null; 510 return JSON.parse(raw); 511 } catch (e) { 512 console.warn('Failed to parse fp.user cookie', e); 513 return null; 514 } 515 } 516 517 const fpUser = parseFpUserCookie(); 518 519 if (fpUser && fpUser.id) { 520 window.FLIPPAY_USER_ID = String(fpUser.id); 521 window.FLIPPAY_USER_EMAIL = fpUser.email ? String(fpUser.email) : null; 522 } else { 523 window.FLIPPAY_USER_ID = null; 524 window.FLIPPAY_USER_EMAIL = null; 525 } 526 527})(); 528</script>
528 529
530<script> 531(function () { 532 const TRACK_ENDPOINT = "https://api.farmersjournal.ie/v1/flippay/engagement_events.php"; 533 const HEARTBEAT_MS = 5000; 534 const ACTIVE_WINDOW_MS = 30000; 535 const FLUSH_INTERVAL_MS = 15000; 536 537 const pageViewId = (window.crypto && crypto.randomUUID) 538 ? crypto.randomUUID() 539 : ("pv_" + Date.now() + "_" + Math.random().toString(36).slice(2)); 540 541 const sessionId = getSessionId(); 542 const anonymousId = getAnonymousId(); 543 544 const loggedInUserId = window.FLIPPAY_USER_ID ? String(window.FLIPPAY_USER_ID) : null; 545 const loggedInUserEmail = window.FLIPPAY_USER_EMAIL ? String(window.FLIPPAY_USER_EMAIL) : null; 546 const isLoggedIn = !!loggedInUserId; 547 const userKey = loggedInUserId || anonymousId; 548 549 const sessionStart = Date.now(); 550 let lastActivityAt = Date.now(); 551 let totalEngagedMs = 0; 552 let bufferedIncrementMs = 0; 553 let lastFlushAt = Date.now(); 554 let initialSent = false; 555 556 function getSessionId() { 557 const key = "flippay_session_id"; 558 let value = sessionStorage.getItem(key); 559 if (!value) { 560 value = (window.crypto && crypto.randomUUID) 561 ? crypto.randomUUID() 562 : ("sess_" + Date.now() + "_" + Math.random().toString(36).slice(2)); 563 sessionStorage.setItem(key, value); 564 } 565 return value; 566 } 567 568 function getAnonymousId() { 569 const key = "flippay_anonymous_id"; 570 let value = localStorage.getItem(key); 571 if (!value) { 572 value = (window.crypto && crypto.randomUUID) 573 ? crypto.randomUUID() 574 : ("anon_" + Date.now() + "_" + Math.random().toString(36).slice(2)); 575 localStorage.setItem(key, value); 576 } 577 return value; 578 } 579 580 function markActivity() { 581 lastActivityAt = Date.now(); 582 } 583 584 function isVisible() { 585 return document.visibilityState === "visible"; 586 } 587 588 function isRecentlyActive() { 589 return (Date.now() - lastActivityAt) <= ACTIVE_WINDOW_MS; 590 } 591 592 function buildPayload(eventName) { 593 return { 594 event_name: eventName, 595 page_view_id: pageViewId, 596 session_id: sessionId, 597 598 is_logged_in: isLoggedIn, 599 logged_in_user_id: loggedInUserId, 600 logged_in_user_email: loggedInUserEmail, 601 anonymous_id: anonymousId, 602 user_key: userKey, 603 604 platform: "web", 605 app_name: null, 606 607 page_url: location.href, 608 page_path: location.pathname + location.search + location.hash, 609 page_title: document.title, 610 referrer: document.referrer || null, 611 612 engaged_increment_ms: bufferedIncrementMs, 613 total_engaged_ms: totalEngagedMs, 614 elapsed_ms: Date.now() - sessionStart, 615 last_activity_age_ms: Date.now() - lastActivityAt, 616 617 visibility_state: document.visibilityState, 618 is_visible: isVisible(), 619 is_recently_active: isRecentlyActive(), 620 621 screen_width: window.screen ? window.screen.width : null, 622 screen_height: window.screen ? window.screen.height : null, 623 viewport_width: window.innerWidth || null, 624 viewport_height: window.innerHeight || null, 625 user_agent: navigator.userAgent || null, 626 language: navigator.language || null, 627 timezone: Intl.DateTimeFormat().resolvedOptions().timeZone || null, 628 629 client_ts: new Date().toISOString() 630 }; 631 } 632 633 function send(payload) { 634 const body = JSON.stringify(payload); 635 636 if (navigator.sendBeacon) { 637 const blob = new Blob([body], { type: "application/json" }); 638 return navigator.sendBeacon(TRACK_ENDPOINT, blob); 639 } 640 641 fetch(TRACK_ENDPOINT, { 642 method: "POST", 643 headers: { "Content-Type": "application/json" }, 644 body: body, 645 keepalive: true, 646 credentials: "omit" 647 }).catch(function(){}); 648 649 return true; 650 } 651 652 function flush(eventName) { 653 if (!initialSent) { 654 send(Object.assign({}, buildPayload("page_view"), { 655 engaged_increment_ms: 0 656 })); 657 initialSent = true; 658 } 659 660 if (eventName === "engagement_ping" && bufferedIncrementMs <= 0) { 661 return; 662 } 663 664 send(buildPayload(eventName)); 665 bufferedIncrementMs = 0; 666 lastFlushAt = Date.now(); 667 } 668 669 ["mousemove", "mousedown", "keydown", "scroll", "touchstart", "pointerdown"].forEach(function (evt) { 670 window.addEventListener(evt, markActivity, { passive: true }); 671 }); 672 673 send(Object.assign({}, buildPayload("page_view"), {
674 engaged_increment_ms: 0 675 })); 676 initialSent = true; 677 678 setInterval(function () { 679 if (isVisible() && isRecentlyActive()) { 680 totalEngagedMs += HEARTBEAT_MS; 681 bufferedIncrementMs += HEARTBEAT_MS; 682 } 683 684 if ((Date.now() - lastFlushAt >= FLUSH_INTERVAL_MS) && bufferedIncrementMs > 0) { 685 flush("engagement_ping"); 686 } 687 }, HEARTBEAT_MS); 688 689 document.addEventListener("visibilitychange", function () { 690 if (document.visibilityState === "hidden") { 691 flush("page_hidden"); 692 } else { 693 markActivity(); 694 } 695 }); 696 697 window.addEventListener("pagehide", function () { 698 flush("page_exit"); 699 }); 700})(); 701</script>
701 702 703 704 705 706 707 708 709 710 711
712<script type="text/javascript" class="optanon-category-C0002" src="https://www3.farmersjournal.ie/js/jquery-3.2.1.min.js"></script>
vendor: 1 bytes, line 712
712
713<script type="text/javascript" class="optanon-category-C0002" src="https://www3.farmersjournal.ie/js/jquery-migrate-3.js"></script>
713 714 715<link rel="stylesheet" href="https://code.jquery.com/ui/1.13.2/themes/base/jquery-ui.css">
716<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
716 717 718 719 720 721<!-- type="text/plain" data-cookie-if="analytical" -->
722<script> 723 window.fbAsyncInit = function() { 724 FB.init({ 725 appId : '1959631247585700', 726 autoLogAppEvents : true, 727 xfbml : true, 728 version : 'v2.11' 729 }); 730 }; 731 732 (function(d, s, id){ 733 var js, fjs = d.getElementsByTagName(s)[0]; 734 if (d.getElementById(id)) {return;} 735 js = d.createElement(s); js.id = id; 736 js.src = "https://connect.facebook.net/en_US/sdk.js"; 737 fjs.parentNode.insertBefore(js, fjs); 738 }(document, 'script', 'facebook-jssdk')); 739</script>
739 740 741 742 743 744 745 746 747 748 749 750 751
752<script type='application/ld+json'> 753 { 754 "@context": "http://schema.org", 755 "@type": "PostalAddress", 756 "addressCountry": "Ireland", 757 "addressLocality": "Dublin 12", 758 "streetAddress": " Irish Farm Centre, Bluebell " 759 } 760</script>
760 761 762
763<script type='application/ld+json'> 764{ 765 "@context": "http://schema.org", 766 "@type": "Organization", 767 "name" : "Irish Farmers Journal", 768 "url" : "https://www.farmersjournal.ie/", 769 "logo" : "https://s3-eu-west-1.amazonaws.com/ifj/images/header-logo.png" 770 } 771</script>
771 772 773 774 775 776 777
778<script type="application/ld+json"> 779{ 780 "@context": "http://schema.org", 781 "@type": "BreadcrumbList", 782 "itemListElement": [{ 783 "@type": "ListItem", 784 "position": 1, 785 "item": { 786 "@id": "https://www.farmersjournal.ie/", 787 "name": "Home", 788 "image": "https://s3-eu-west-1.amazonaws.com/ifj/images/header-logo.png" 789 } 790 },{ 791 "@type": "ListItem", 792 "position": 2, 793 "item": { 794 "@id": "https://www.farmersjournal.ie/farm/Pensions & Savings /430", 795 "name": "Pensions & Savings ", 796 "image": "https://s3-eu-west-1.amazonaws.com/ifj/images/header-logo.png" 797 } 798 },{ 799 "@type": "ListItem", 800 "position": 3, 801 "item": { 802 "@id": "https://www.farmersjournal.ie//focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359", 803 "name": "Tax planning is about efficiency, not saving ", 804 "image": "https://www.farmersjournal.ie/WEBFILES/000/930/359/2602548-930359.jpg" 805 } 806 }] 807} 808</script>
808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837<!--script type="text/javascript"> 838setTimeout(function(){var a=document.createElement("script"); 839var b=document.getElementsByTagName("script")[0]; 840a.src=document.location.protocol+"//dnn506yrbagrg.cloudfront.net/pages/scripts/0014/4660.js?"+Math.floor(new Date().getTime()/3600000); 841a.async=true;a.type="text/javascript";b.parentNode.insertBefore(a,b)}, 1); 842</script--> 843 844
845<script type="text/javascript"> 846(function(w,d,s,r,k,h,m){ 847 if(w.performance && w.performance.timing && w.performance.navigation) { 848 w[r] = w[r] || function(){(w[r].q = w[r].q || []).push(arguments)}; 849 h=d.createElement('script');h.async=true;h.setAttribute('src',s+k); 850 d.getElementsByTagName('head')[0].appendChild(h); 851 (m = window.onerror),(window.onerror = function (b, c, d, f, g) { 852 m && m(b, c, d, f, g),g || (g = new Error(b)),(w[r].q = w[r].q || []).push(["captureException",g]);}) 853 } 854})(window,document,'//static.site24x7rum.eu/beacon/site24x7rum-min.js?appKey=','s247r','6930e741d19493ed03fb98a324f901d4'); 855</script>
855 856
857<script> 858 window.addEventListener('DOMContentLoaded', (event) => { 859 detect() 860 }); 861 862 var exportss = {}; 863 function getModeName(browserName) { 864 switch (browserName) { 865 case "Safari": 866 case "Firefox": 867 case "Brave": 868 case "Opera": 869 return "a Private Window"; 870 break; 871/* 872 case "Safari for iOS": 873 return "a Private Tab"; 874 break; 875*/ 876 case "Chrome": 877 case "Chromium": 878 return "an Incognito Window"; 879 break; 880 case "Internet Explorer": 881 case "Edge": 882 return "an InPrivate Window"; 883 break; 884 } 885 throw new Error("Could not get mode name"); 886 } 887 888 function detect() { 889 //var a = document.getElementById("answer"); 890 detectIncognito().then(function(result) { 891 if (result.isPrivate) { 892 //a.innerHTML = "<b>Yes</b>. You are using " + result.browserName + " in " + getModeName(result.browserName) + "."; 893 console.log("private mode test") 894 $("#modalRedeemCode").html( $("#incognito-redeem-modal").html() ) 895 } else { 896 //a.innerHTML = "<b>No</b>. You are using " + result.browserName + " in a regular browser window."; 897 } 898 }).catch(function(error) { 899 //a.innerHTML = "There was an error. Check console for further information."; 900 console.log(error); 901 }); 902 } 903</script>
903 904
905<script type="text/javascript" src="https://www.farmersjournal.ie/js/detectIncognito.min.js"></script>
905 906 907 908<div id="incognito-redeem-modal" style="display: none"> 909 <div class="modal-dialog"> 910 911 <div class="modal-content" style="width: 80% !important;"> <!-- modal_article_footer --> 912 913 <!-- Modal Header --> 914 <div class="modal-header"> 915 <button type="button" class="close" data-dismiss="modal"> 916 <span aria-hidden="true" class=""><img src="/images/modal_close_x.png"></span> 917 <span class="sr-only">Close</span> 918 </button> 919 </div> 920 921 922 923 924 <div class="row"> 925 <div class="col-12"> 926 927 928 <p style="text-align: center; padding:10px" class="bigtitle padding-b-1"><img width="148px" src="/images/header-logo.png"></p> 929 930 <p style="text-align: center; padding:10px" class="bigtitle padding-b-1">LOYALTY CODE:</p> 931 932 933 934 935 <p style="text-align: center; padding:20px; margin-bottom: 50px;" class="smalltitle"> 936 The paper code cannot be redeemed when browsing in private/incognito mode. Please go to a normal browser window and enter the code there 937 938 </p> 939 940 941 942 </div> 943 944 </div> 945 946 </div> 947 </div> 948 949</div> 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965
966<script> 967window.googletag = window.googletag || {cmd: []}; 968googletag.cmd.push(function () { 969 970 971 if (window.FJ_BLOCK_ADS) { 972 console.log("the are the blockeds on this page because (L1/advertiser-announcements)."); 973 googletag.pubads().disableInitialLoad(); 974 document.querySelectorAll(".gadvertisementheader").forEach(e => e.style.display = "none"); 975 document.querySelectorAll(".leaderboard_2_ad").forEach(e => e.style.display = "none"); 976 977 978 979 return; 980 } 981 982 983googletag.pubads().setPrivacySettings({ nonPersonalizedAds: true }); 984 985// Keywords to check in the URL 986var url = window.location.href.toLowerCase(); 987var targets = []; 988 989if (url.includes('northern-ireland')) targets.push('northern-ireland'); 990if (url.includes('beef')) targets.push('beef'); 991if (url.includes('sheep')) targets.push('sheep'); 992if (url.includes('agribusiness')) targets.push('agribusiness'); 993if (url.includes('machinery')) targets.push('machinery'); 994if (url.includes('motors')) targets.push('motors'); 995if (url.includes('buildings')) targets.push('buildings'); 996if (url.includes('news/news')) targets.push('news/news'); 997if (url.includes('farm-machinery')) targets.push('farm-machinery'); 998if (url.includes('farm-safety')) targets.push('farm-safety'); 999if (url.includes('pedigree')) targets.push('pedigree'); 1000if (url.includes('forestry')) targets.push('forestry'); 1001if (url.includes('property')) targets.push('property'); 1002if (url.includes('hub/knowledge')) targets.push('hub/knowledge'); 1003if (url.includes('tillage')) targets.push('tillage'); 1004if (url.includes('livestock')) targets.push('livestock'); 1005if (url.includes('renewables')) targets.push('renewables'); 1006if (url.includes('schemes')) targets.push('schemes'); 1007if (url.includes('ploughing')) targets.push('ploughing'); 1008if (url.includes('dairy')) targets.push('dairy'); 1009if (url.includes('comment')) targets.push('comment'); 1010if (url.includes('careers')) targets.push('careers'); 1011if (url.includes('life')) targets.push('life'); 1012if (url.includes('food')) targets.push('food'); 1013 1014if (targets.length) { 1015// Set all matched keywords as values for the key 'urlContains' 1016// If only one is found, it still works 1017googletag.pubads().setTargeting('PageURLContains', targets); 1018} 1019 1020googletag.defineSlot('/144848334/new2025-articlepage-deskmob-slot1-300x250', [300, 250], 'div-gpt-ad-1753366870041-0').addService(googletag.pubads()); 1021googletag.defineSlot('/144848334/new2025-articlepage-deskmob-slot2-300x250', [300, 250], 'div-gpt-ad-1753366990195-0').addService(googletag.pubads()); 1022googletag.defineSlot('/144848334/new2025-articlepage-deskmob-slot3-300x250', [300, 250], 'div-gpt-ad-1753367097616-0').addService(googletag.pubads()); 1023googletag.defineSlot('/144848334/new2025-articlepage-desktop-bannerunderarticle-970x250', [970, 250], 'div-gpt-ad-1753367222147-0').addService(googletag.pubads()); 1024googletag.defineSlot('/144848334/new2025-articlepage-desktop-stickysidebar-300x250', [300, 250], 'div-gpt-ad-1753367278366-0').addService(googletag.pubads()); 1025googletag.defineSlot('/144848334/new2025-channelpage-deskmob-300x250', [300, 250], 'div-gpt-ad-1753367347568-0').addService(googletag.pubads()); 1026googletag.defineSlot('/144848334/new2025-channelpage-desktop-banner-970x250', [970, 250], 'div-gpt-ad-1753367397484-0').addService(googletag.pubads()); 1027googletag.defineSlot('/144848334/new2025-channelpage-mobile-300x250', [300, 250], 'div-gpt-ad-1753367438685-0').addService(googletag.pubads()); 1028googletag.defineSlot('/144848334/new2025-channelpage-mobile-320x100', [320, 100], 'div-gpt-ad-1753367491118-0').addService(googletag.pubads()); 1029googletag.defineSlot('/144848334/new2025-homepage-deskmob-hero-300x250', [300, 250], 'div-gpt-ad-1753367567726-0').addService(googletag.pubads()); 1030googletag.defineSlot('/144848334/new2025-homepage-desktop-banner1-970x250', [970, 250], 'div-gpt-ad-1753367660893-0').addService(googletag.pubads()); 1031googletag.defineSlot('/144848334/new2025-homepage-desktop-banner2-970x250', [970, 250], 'div-gpt-ad-1753367692897-0').addService(googletag.pubads()); 1032googletag.defineSlot('/144848334/new2025-homepage-desktop-banner3-970x250', [970, 250], 'div-gpt-ad-1753367749304-0').addService(googletag.pubads()); 1033googletag.defineSlot('/144848334/new2025-homepage-desktop-banner4-970x250', [970, 250], 'div-gpt-ad-1753367801423-0').addService(googletag.pubads()); 1034googletag.defineSlot('/144848334/new2025-homepage-desktop-hpto-leftskyscraper-160x600', [160, 600], 'div-gpt-ad-1753367865701-0').addService(googletag.pubads()); 1035googletag.defineSlot('/144848334/new2025-homepage-desktop-hpto-rightskyscraper-160x600', [160, 600], 'div-gpt-ad-1753367940784-0').addService(googletag.pubads()); 1036googletag.defineSlot('/144848334/new2025-homepage-desktop-hpto-topbanner-970x250', [970, 250], 'div-gpt-ad-1753367981321-0').addService(googletag.pubads()); 1037googletag.defineSlot('/144848334/new2025-homepage-mobile-slot1-300x250', [300, 250], 'div-gpt-ad-1753368025968-0').addService(googletag.pubads()); 1038googletag.defineSlot('/144848334/new2025-homepage-mobile-slot2-300x250', [300, 250], 'div-gpt-ad-1753368090677-0').addService(googletag.pubads()); 1039googletag.defineSlot('/144848334/new2025-homepage-mobile-slot3-320x100', [320, 100], 'div-gpt-ad-1753368123501-0').addService(googletag.pubads()); 1040googletag.defineSlot('/144848334/new2025-homepage-mobile-slot4-320x100', [320, 100], 'div-gpt-ad-1753368178973-0').addService(googletag.pubads()); 1041googletag.defineSlot('/144848334/new2025-mobilepopup-320x100', [320, 100], 'div-gpt-ad-1753368246457-0').addService(googletag.pubads()); 1042 1043 1044googletag.defineSlot('/144848334/Video_Responsive_Homepage', [[640, 480]], 'div-gpt-ad-1768563847351-0').addService(googletag.pubads()); 1045 1046 1047googletag.pubads().enableSingleRequest(); 1048googletag.enableServices(); 1049}); 1050</script>
1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080
1080<script> 1081 $('document').ready(function(){ 1082 1083 var ifem = Cookies.get('ifem'); 1084 if (ifem != '') { 1085 var subtypedata = { email : ifem, device : "desktop", password : ""} 1086 $.ajax({ 1087 type: 'POST', 1088 url: '/pagesuitescripts/NewAppValidate.php', 1089 data: subtypedata, 1090 dataType: "text", 1091 success: function(resultData) { 1092 var obj = JSON.parse(resultData); 1093 var subtypeid = obj['fjapp']['api'][0]['subtypeid']; 1094 if(subtypeid == 2 || subtypeid == 10 || subtypeid == 9){ 1095 console.log('Debuggger'); 1096 /*var newHtml = '<div class="sub-menu-item"><a class="white" href="/myjournal">MY JOURNAL</a></div><div class="sub-menu-item"><a class="white" href="/archive.php">SEARCH<i class="fa fa-search margin-l-10" aria-hidden="true"></i></a></div>';*/ 1097 // $('div.top-sub-menu').remove(); 1098 /*$('div.top-sub-menu').html(newHtml);*/ 1099 1100 if(subtypeid == 2){ 1101 console.log("this user it is premium"); 1102 Cookies.set('type_user', 'premium', { expires: 365 }); 1103 localStorage.setItem('type_user', 'premium'); 1104 }else if(subtypeid == 2){ 1105 console.log("this user it is standard"); 1106 Cookies.set('type_user', 'standard', { expires: 365 }); 1107 localStorage.setItem('type_user', 'standard'); 1108 } else if(subtypeid == 10){ 1109 console.log("this user it is standard"); 1110 Cookies.set('type_user', 'early', { expires: 365 }); 1111 localStorage.setItem('type_user', 'early'); 1112 } 1113 1114 1115 1116 }else{ 1117 console.log("this user it is free"); 1118 Cookies.set('type_user', 'free', { expires: 365 }); 1119 localStorage.setItem('type_user', 'free'); 1120 1121 } 1122 } 1123 }); 1124 } 1125 }); 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 </script>
1135 1136
1137<script> 1138window.dataLayer = window.dataLayer || []; // add THIS please too in the first snippet 1139dataLayer.push({"membership" : "non-subscriber"});</script>
1139 1140 1141 1142 1143 1144
1145<script> 1146(function () { 1147 const PLAN_TYPES = [ 1148 'digital_standard', 1149 'digital_premium', 1150 'print_standard', 1151 'print_premium' 1152 ]; 1153 1154 let pollId = null; 1155 let pollStartedAt = 0; 1156 1157 function getCookie(name) { 1158 const value = `; ${document.cookie}`; 1159 const parts = value.split(`; ${name}=`); 1160 return parts.length === 2 ? parts.pop().split(';').shift() : null; 1161 } 1162 1163 function isPostLoginUrl() { 1164 const params = new URLSearchParams(window.location.search); 1165 return params.has('code') && params.has('state'); 1166 } 1167 1168 function getAuthState() { 1169 const fpUserCookie = getCookie('fp.user'); 1170 1171 if (!fpUserCookie) { 1172 return { 1173 authState: isPostLoginUrl() ? 'pending_login' : 'guest', 1174 userData: null, 1175 subsName: null 1176 }; 1177 } 1178 1179 try { 1180 const userData = JSON.parse(fpUserCookie); 1181 const badge = String(userData.badge || ''); 1182 const subsName = PLAN_TYPES.find(type => badge.includes(type)) || null; 1183 const isSubscriber = userData.subscriber === true; 1184 1185 if (!isSubscriber) { 1186 return { 1187 authState: 'logged_no_subscriber', 1188 userData, 1189 subsName 1190 }; 1191 } 1192 1193 return { 1194 authState: subsName === 'digital_standard' 1195 ? 'subscriber_digital_standard' 1196 : 'subscriber_premium', 1197 userData, 1198 subsName 1199 }; 1200 1201 } catch (e) { 1202 console.error('Error to parse fp.user', e); 1203 1204 return { 1205 authState: 'guest', 1206 userData: null, 1207 subsName: null 1208 }; 1209 } 1210 } 1211 1212 function resetHeaderUi() { 1213 $(".ifj-myaccount-btn").addClass('hidden'); 1214 $(".fp-sign-in").removeClass('hidden'); 1215 1216 $(".ifj-subscribe-btn").addClass('hidden'); 1217 $(".ifj-epaper-btn").addClass('hidden'); 1218 $(".ifj-podcasts-btn").addClass('hidden'); 1219 1220 $("#bof-graphic-overlay") 1221 .removeClass('-z-10') 1222 .addClass('z-50'); 1223 } 1224 1225 function resolveAuth() { 1226 document.body.classList.add('auth-resolved'); 1227 1228 if (pollId) { 1229 clearInterval(pollId); 1230 pollId = null; 1231 } 1232 } 1233 1234 function applyAuthState(authState) { 1235 resetHeaderUi(); 1236 1237 switch (authState) { 1238 case 'subscriber_premium': 1239 $(".ifj-myaccount-btn").removeClass('hidden'); 1240 $(".fp-sign-in").addClass('hidden'); 1241 1242 $(".ifj-epaper-btn").removeClass('hidden'); 1243 $(".ifj-podcasts-btn").removeClass('hidden'); 1244 1245 $("#bof-graphic-overlay") 1246 .removeClass('z-50') 1247 .addClass('-z-10'); 1248 1249 resolveAuth(); 1250 break; 1251 1252 case 'subscriber_digital_standard': 1253 $(".ifj-myaccount-btn").removeClass('hidden'); 1254 $(".fp-sign-in").addClass('hidden'); 1255 1256 resolveAuth(); 1257 break; 1258 1259 case 'logged_no_subscriber': 1260 $(".ifj-myaccount-btn").removeClass('hidden'); 1261 $(".fp-sign-in").addClass('hidden'); 1262 1263 $(".ifj-subscribe-btn") 1264 .removeClass('hidden') 1265 .removeClass('ifj-locked-invisible'); 1266 1267 resolveAuth(); 1268 break; 1269 1270 case 'guest': 1271 $(".ifj-subscribe-btn") 1272 .removeClass('hidden') 1273 .removeClass('ifj-locked-invisible'); 1274 1275 $(".fp-sign-in").removeClass('hidden'); 1276 1277 resolveAuth(); 1278 break; 1279 1280 case 'pending_login': 1281 // Não aplica UI ainda. 1282 // O polling vai tentar de novo até o limite. 1283 break; 1284 } 1285 } 1286 1287 function refreshAuthState() { 1288 const result = getAuthState(); 1289 1290 console.log(result); 1291 1292 applyAuthState(result.authState); 1293 1294 return result.authState; 1295 } 1296 1297 /*function startAuthPolling() { 1298 const maxWaitMs = isPostLoginUrl() ? 6000 : 1200; 1299 const intervalMs = 150; 1300 1301 pollStartedAt = Date.now(); 1302 1303 if (pollId) { 1304 clearInterval(pollId); 1305 } 1306 1307 pollId = setInterval(function () { 1308 const authState = refreshAuthState(); 1309 1310 if (authState !== 'pending_login') { 1311 return; 1312 } 1313 1314 if (Date.now() - pollStartedAt >= maxWaitMs) { 1315 clearInterval(pollId); 1316 pollId = null; 1317 1318 applyAuthState('guest'); 1319 } 1320 }, intervalMs); 1321 }*/ 1322 1323 document.addEventListener('DOMContentLoaded', function () { 1324 refreshAuthState(); 1325 1326 if (!document.body.classList.contains('auth-resolved')) { 1327 startAuthPolling(); 1328 } 1329 }); 1330 1331 window.addEventListener('focus', refreshAuthState); 1332 window.addEventListener('pageshow', refreshAuthState); 1333 1334 document.addEventListener('visibilitychange', function () { 1335 if (!document.hidden) { 1336 refreshAuthState(); 1337 } 1338 }); 1339 1340 // Fallback final 1341 setTimeout(function () { 1342 if (!document.body.classList.contains('auth-resolved')) { 1343 applyAuthState('guest'); 1344 } 1345 }, 10000); 1346 1347})(); 1348</script>
1348 1349 1350 1351 1352 1353<!-- a social media scheduling tool | asked by Patrick 08-04-2026 -->
1354<script async id="ebx" src="//applets.ebxcdn.com/ebx.js"></script>
1354 1355 1356<!-- https://trello.com/c/Kf93TGyG/1034-tracking-code-on-ifj -->
1357<script src="//static.trueanthem.com/scripts/ta.js"></script>
1357 1358 1359 1360 <title>Tax planning is about efficiency, not saving - Premium</title>
1360<script type="application/ld+json"> 1361{ 1362 "@context": "http://schema.org", 1363 "@type": "NewsArticle", 1364 "headline": "Tax planning is about efficiency, not saving ", 1365 "isAccessibleForFree": false, 1366 "hasPart": { 1367 "@type": "WebPageElement", 1368 "isAccessibleForFree": false, 1369 "cssSelector": ".ifj-paywalled-content" 1370 }, 1371 "isPartOf": { 1372 "@type": ["CreativeWork", "Product"], 1373 "name": "Irish Farmers Journal", 1374 "productID": "farmersjournal.ie:showcase" 1375 }, 1376 "publisher": { 1377 "@type": "Organization", 1378 "name": "Irish Farmers Journal" 1379 }, 1380 1381 "author": { 1382 "@type": "Person", 1383 "name": "Lorcan Roche Kelly", 1384 "url": "/journalists/" 1385 }, 1386 1387 1388 "image": { 1389 "@type": "ImageObject", 1390 "url": "https://d3mdtxxgfz6upn.cloudfront.net/images/header-logo.png" 1391 } 1392} 1393</script>
1393 1394 1395
1395<script src="https://news.google.com/swg/js/v1/swg-gaa.js"></script>
1395 1396
1396<script subscriptions-control="manual" src="https://news.google.com/swg/js/v1/swg.js"></script>
1396 1397 <!--
1397<script src="https://accounts.google.com/gsi/client" defer></script>
1397--> 1398 1399
1399<script src="https://accounts.google.com/gsi/client"></script>
1399 1400
1400<script> 1401 1402 function setCookie(cname, cvalue, exdays) { 1403 var d = new Date(); 1404 d.setTime(d.getTime() + (exdays*24*60*60*1000)); 1405 var expires = "expires="+ d.toUTCString(); 1406 document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 1407 } 1408 //setCookie("selectmart", selectmart, 180); 1409 function getCookie(name) { 1410 var cookieArr = document.cookie.split(";"); 1411 for(var i = 0; i < cookieArr.length; i++) { 1412 var cookiePair = cookieArr[i].split("="); 1413 if(name == cookiePair[0].trim()) { 1414 return decodeURIComponent(cookiePair[1]); 1415 } 1416 } 1417 return null; 1418 } 1419 </script>
1419 1420 1421 1422 1423 1424 <meta charset="utf-8"> 1425 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 1426 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0"> 1427 <!-- <meta http-equiv="Cache-Control" content="no-cache"> --> 1428 <!-- <meta http-equiv="Cache-Control" content="max-age=120">--> 1429 1430 1431 1432 1433 <meta name="apple-mobile-web-app-capable" content="yes"> 1434 <meta name="mobile-web-app-capable" content="yes"> 1435 <meta name="apple-itunes-app" content="app-id=455979888"> 1436 <meta name="google-play-app" content="app-id=iguide.com.farmersjournalapp"> 1437 1438 1439 1440 1441 1442 <meta name="robots" content="index, follow"> 1443 <meta name="apple-itunes-app" content="app-id=963726555, affiliate-data=myAffiliateData, app-argument=myURL"> 1444 1445 1446 <link rel="canonical" href="https://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359" /> 1447 1448 1449 1450 1451 1452 1453 1454 1455 <link rel="amphtml" href="https://www.farmersjournal.ie/amp/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359" /> 1456 <meta name="keywords" content="Focus,Pensions & Savings ,Management,Tax,Lorcan Roche Kelly" /><meta name="news_keywords" content="Focus,Pensions & Savings ,Management,Tax,Lorcan Roche Kelly" /><meta name="description" content="Tax planning is about efficiency, not saving - 05 September 2026" /> 1457 1458 <!--OG META--> 1459 <!--meta property="fb:app_id" content="1565788517026862" /> 1460 <meta property="fb:admins" content="100006250305723"/--> 1461 <meta property="og:url" content="https://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359"/> 1462 <meta property="og:image" content="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/930/359/2602548-930359.jpg" /> 1463 <meta property="og:image:width" content="1200" /> 1464 <meta property="og:image:height" content="630" /> 1465 <meta property="og:title" content="Tax planning is about efficiency, not saving " /> 1466 <meta property="og:type" content="article" /> 1467 <meta property="og:description" content="While there are plenty of ways to reduce a tax bill, spending should always make good financial sense." /> 1468 <meta property="og:category" content="Focus" /> 1469 <meta itemprop="datePublished" content="2026-09-02"/> 1470 1471 <!--TWITTER CARD META--> 1472 <meta name="twitter:card" content="photo" /> 1473 <meta name="twitter:site" content="@farmersjournal" /> 1474 <meta name="twitter:site:id" content="133241378" /> 1475 <meta name="twitter:creator" content="Lorcan Roche Kelly" /> 1476 <meta name="twitter:title" content="Tax planning is about efficiency, not saving " /> 1477 <meta name="twitter:description" content="While there are plenty of ways to reduce a tax bill, spending should always make good financial sense." /> 1478 <meta name="twitter:image" content="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/930/359/2602548-930359.jpg" /> 1479 <meta name="twitter:url" content="https://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359"/> 1480 1481 <!-- swiftype.com --> 1482 <meta class="swiftype" name="date_published" data-type="date" content="2026-09-02" /> 1483 <meta class="swiftype" name="release_date" data-type="date" content="2026-09-05" /> 1484 <meta class="swiftype" name="release_date_time" data-type="date" content="2026-09-05 08:30:00" /> 1485 <meta class="swiftype" name="published_at" data-type="date" content="2026-09-05" /> 1486 <meta class="swiftype" name="title" data-type="string" content="Tax planning is about efficiency, not saving 05 September 2026 Premium" /> 1487 <meta class="swiftype" name="info" data-type="string" content="Lorcan Roche Kelly" /> 1488 1489 1490 1491
1492<script> 1493window.dataLayer = window.dataLayer || []; // add THIS please too in the first snippet 1494 1495 window.dataLayer.push({ 1496 'contentgroup1':"0",//memberplus 1 or 0 1497 'contentgroup2':"Lorcan Roche Kelly", 1498 'contentgroup3':"Focus > Pensions & Savings ", 1499 'ecommerce': { 1500 'impressions': [ 1501 { 1502 'name': "Beef management: closing paddocks nutrient application and ration composition ", 1503 'id': "933895", 1504 'category': "Beef > Management", 1505 'list': 'Related Articles', 1506 'position': 1 1507 }, 1508 { 1509 'name': "Dairy Management: wintering options fertiliser and slurry deadlines", 1510 'id': "933489", 1511 'category': "Dairy > Management", 1512 'list': 'Related Articles', 1513 'position': 2 1514 }, 1515 { 1516 'name': "MEPs reject emergency brake for EU carbon tax on fertiliser imports", 1517 'id': "933148", 1518 'category': "News > News", 1519 'list': 'Related Articles', 1520 'position': 3 1521 } 1522 ] 1523 } 1524 1525 }); 1526 1527 1528 1529 1530 function sendToAnalytics(event){ 1531 console.log("sendToAnalytics event 1=" + JSON.stringify(event)); 1532 var eventjsonparameter = JSON.stringify(event); 1533 var eventgid = event.eventType;//event[eventType] 1534 var eventgname =''; 1535 var eventdesc =''; 1536 //var eventgname = 'EVENT_TESTING_A';//lookup based on code from https://github.com/subscriptions-project/swg-js/blob/main/src/proto/api_messages.js#L32 1537 switch (eventgid) { 1538 case 22: 1539 eventgname = "IMPRESSION_REGWALL"; 1540 eventdesc = "Publisher provides an anonymous userState object with no access and the user sees the Google registration prompt / The user doesn't have any entitlements or meters available from the publisher, and sees a publisher regwall"; 1541 break; 1542 case 23: 1543 eventgname = "IMPRESSION_SHOWCASE_REGWALL"; 1544 eventdesc = "Get more with google prompt shown."; 1545 break; 1546 case 1060: 1547 eventgname = "ACTION_SHOWCASE_REGWALL_SIWG_CLICK"; 1548 eventdesc = "User clicks the Sign in with Google button."; 1549 break; 1550 case 1035: 1551 eventgname = "ACTION_SHOWCASE_REGWALL_GSI_CLICK"; 1552 eventdesc = "User clicks the Sign in with Google button.Deprecated"; 1553 break; 1554 case 1036: 1555 eventgname = "ACTION_SHOWCASE_REGWALL_EXISTING_ACCOUNT_CLICK"; 1556 eventdesc = "User clicks the Already registered? Sign in. link."; 1557 break; 1558 case 1024: 1559 eventgname = "ACTION_GET_ENTITLEMENTS"; 1560 eventdesc = "Extended Access library checks for Google entitlements."; 1561 break; 1562 case 3011: 1563 eventgname = "EVENT_OFFERED_METER"; 1564 eventdesc = "Entitlements returns a response with a valid google:metering entitlement."; 1565 break; 1566 case 21: 1567 eventgname = "IMPRESSION_METER_TOAST"; 1568 eventdesc = "Extended Access library consumes Google entitlement to unlock content and the user sees the Extended Access prompt."; 1569 break; 1570 case 3008: 1571 eventgname = "EVENT_UNLOCKED_BY_METER"; 1572 eventdesc = "Your getting more wth google prompt shown."; 1573 break; 1574 case 1025: 1575 eventgname = "ACTION_METER_TOAST_SUBSCRIBE_CLICK"; 1576 eventdesc = "The user clicks on the Subscribe call-to-action in the Extended Access prompt."; 1577 break; 1578 case 3007: 1579 eventgname = "EVENT_UNLOCKED_BY_SUSCRIPTION"; 1580 eventdesc = "The user previously purchased a subscription."; 1581 break; 1582 case 3008: 1583 eventgname = "EVENT_UNLOCKED_BY_METER"; 1584 eventdesc = "The page uses a metered read from the publisher."; 1585 break; 1586 case 3012: 1587 eventgname = "EVENT_UNLOCKED_FREE_PAGE"; 1588 eventdesc = "The content isn't paywalled, and the pages doesn't require an entitlement."; 1589 break; 1590 case 3009: 1591 eventgname = "EVENT_NO_ENTITLEMENTS"; 1592 eventdesc = "The user doesn't have any entitlements or meters available from the publisher, and sees a publisher regwall / Or Paywall"; 1593 break; 1594 case 1: 1595 eventgname = "IMPRESSION_PAYWALL"; 1596 eventdesc = "Publisher Entitlement: EVENT_SHOWCASE_NO_ENTITLEMENTS_PAYWALL"; 1597 break; 1598 default: 1599 eventgname = ""; 1600 eventdesc = ""; 1601 } 1602 1603 if(eventgname!='' && eventdesc!=''){ 1604 // HUBSPOT TRACKING 'true' tracks this event on every page view 1605 if (true) { 1606 _hsq.push([ 1607 'trackCustomBehavioralEvent', 1608 { 1609 name: "pe24904274_ifj_showcase_analytics", 1610 properties: {
1611 // give each property a value so we know what they mean 1612 eventjson: eventjsonparameter, 1613 eventgid: eventgid, 1614 eventgname: eventgname, 1615 eventdesc: eventdesc, 1616 storyid: '930359', 1617 article_title: 'Tax planning is about efficiency not saving ' 1618 }, 1619 }, 1620 ]); 1621 } 1622 //end of hubspot tracking here 1623 } 1624 } 1625</script>
1625 1626 1627 1628 1629 1630 <!--
1630<script type="text/javascript"> 1631 var googletag = googletag || {}; 1632 googletag.cmd = googletag.cmd || []; 1633 (function() { 1634 var gads = document.createElement("script"); 1635 gads.async = true; 1636 gads.type = "text/javascript"; 1637 var useSSL = "https:" == document.location.protocol; 1638 gads.src = (useSSL ? "https:" : "http:") + "//www.googletagservices.com/tag/js/gpt.js"; 1639 var node =document.getElementsByTagName("script")[0]; 1640 node.parentNode.insertBefore(gads, node); 1641 })(); 1642 </script>
1642--> 1643 1644 1645 1646
1646<script type='text/javascript'> 1647 1648 window.googletag = window.googletag || {cmd: []}; 1649 1650 googletag.cmd.push(function() { 1651 googletag.defineSlot('/144848334/01_ifj_desktop_Focus_article_728x90_01', [728, 90], 'div-gpt-ad-1610041129928-0').addService(googletag.pubads()); 1652googletag.defineSlot('/144848334/01_ifj_desktop_Focus_article_728x90_02', [728, 90], 'div-gpt-ad-1610041181002-0').addService(googletag.pubads()); 1653googletag.defineSlot('/144848334/01_ifj_desktop_Focus_article_300x250_01', [300, 250], 'div-gpt-ad-1610040887698-0').addService(googletag.pubads()); 1654googletag.defineSlot('/144848334/01_ifj_desktop_Focus_article_300x250_02', [300, 250], 'div-gpt-ad-1610040953818-0').addService(googletag.pubads()); 1655googletag.defineSlot('/144848334/01_ifj_desktop_Focus_article_300x250_03', [300, 250], 'div-gpt-ad-1610041006194-0').addService(googletag.pubads()); 1656 googletag.enableServices(); 1657 }); 1658 </script>
1658 1659 1660 1661
1661<script type="text/javascript"> 1662 googletag.cmd.push(function() { 1663 var pathname = window.parent.location.pathname; 1664 var pathnameArraySplit = pathname.split("-"); 1665 var StoryID = [...pathnameArraySplit].pop(); 1666 googletag.pubads().setTargeting('StoryID', StoryID).setTargeting('Test', ['refresh']); 1667 }); 1668 </script>
1668 1669 1670 1671 1672 1673 1674 1675 1676<style> 1677 1678 /*.gadvertinlinestyling{ 1679 clear:both; 1680 display: block; 1681 width:100%; 1682 padding:10px; 1683 background-color:#f6f6f6; 1684 margin-top: 20px; 1685 margin-bottom: 20px; 1686 } 1687 1688 .gadvertisementheader{ 1689 color: #999999; 1690 background-color:#f6f6f6; 1691 display: block; 1692 clear: both; 1693 text-align: center; 1694 font-size: 11px; 1695 } 1696 1697 1698 .gadvertinlinestyling div{ 1699 margin: 0 auto; 1700 display: flex; 1701 align-items: center; 1702 vertical-align: middle; 1703 background-color:#f6f6f6; 1704 }*/ 1705 1706 .share-btn-v2{ 1707 cursor: pointer; 1708 } 1709 1710 1711 .article-body-gradient:after{ 1712 content: ""; 1713 width: 100%; 1714 height: 300px; /* 100%*/ 1715 position: absolute; 1716 z-index: 0; 1717 bottom: 0; 1718 left: 0; 1719 background-color: rgba(255, 255, 255, 0); 1720 background-image: -webkit-linear-gradient(top, rgba(255, 255, 255, 0) 35%, white 76%); 1721 background-image: linear-gradient(to bottom,rgba(255, 255, 255, 0) 35%, white 104%); 1722 } 1723 1724 .carousel-inner .item.image { 1725 display: none; 1726 } 1727 1728 1729 1730</style> 1731 1732 1733 1734 1735 1736 1737 1738<!--DEVICES BASED --------------------------------------------------->
1739<script> 1740 1741 /*function hideStory(){ 1742 const first_paragraph = $('.article-body').find("p:first").html() 1743 const second_paragraph = $('.article-body').find("p:eq(1)").html() 1744 const first_and_second_p = `${first_paragraph}${second_paragraph}` 1745 $('.article-body').html(first_and_second_p) 1746 $('.article-body').addClass('article-body-gradient') 1747 $('body').removeClass('modal-open') 1748 $('#incognitoModal').removeAttr('data-backdrop') 1749 };*/ 1750function hideStory() { 1751 1752 const articleBody = document.querySelector('.article-body'); 1753 const paragraphs = articleBody.querySelectorAll('p'); 1754 1755 if (paragraphs.length > 1) { 1756 const firstParagraph = paragraphs[0].innerHTML; 1757 const secondParagraph = paragraphs[1].innerHTML; 1758 const firstAndSecondP = `${firstParagraph}${secondParagraph}`; 1759 1760 articleBody.innerHTML = firstAndSecondP; 1761 //articleBody.classList.add('article-body-gradient'); 1762 articleBody.classList.add('bg-white'); 1763 articleBody.classList.add('[mask-image:linear-gradient(to_bottom,black,transparent)]'); 1764 } 1765 1766 document.body.classList.remove('modal-open'); 1767 1768 /*const incognitoModal = document.getElementById('incognitoModal'); 1769 if (incognitoModal) { 1770 incognitoModal.removeAttribute('data-backdrop'); 1771 }*/ 1772} 1773 1774 1775 1776 1777 1778 1779 1780 // Initialize the agent on page load. 1781 const fpPromise = import('https://fp.farmersjournal.ie/web/v3/Az9S6tYvNUCLhnQRtpWA') 1782 .then(FingerprintJS => FingerprintJS.load({ 1783 endpoint: [ 1784 "https://fp.farmersjournal.ie", 1785 FingerprintJS.defaultEndpoint 1786 ], 1787 region: "eu" 1788 })) 1789 1790 // Get the visitorId when you need it. 1791 fpPromise 1792 .then(fp => fp.get({ extendedResult: true })) 1793 .then(result => { 1794 1795 const visitorId = result.visitorId; 1796 console.log(visitorId); 1797 console.log(result); 1798 console.log("result=" + JSON.stringify(result)); 1799 console.log("device=" + result.device); 1800 console.log("os=" + result.os); 1801 console.log("version=" + result.osVersion); 1802 console.log("var_device_name=" + result.device); 1803 console.log("var_device_pointing_method=" + result.device); 1804 console.log("incognito=" + result.incognito); 1805 console.log("browserName=" + result.browserName); 1806 console.log("browserVersion=" + result.browserVersion); 1807 1808 1809 var windowheight = screen.height; 1810 var windowwidth = screen.width; 1811 1812 1813 1814 }) 1815 //end of the fingerprint JS 1816 1817 1818 1819 1820 1821 1822</script>
1822 1823<!--DEVICES BASED ---------------------------------------------------> 1824 1825 1826<style type="text/css"> 1827 .article-body { 1828 display: none; /* just to dont show the entire story before proccess the incognito logic * 1829 } 1830</style> 1831 1832 1833 1834 1835</head> 1836 1837 1838 1839 1840<body> 1841 1842 1843 1844 1845 1846 1847 1848<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 1848-1849
1848 1849<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
1849GTM-W2FCP4H
vendor: 83 bytes, lines 1849-1850
1849" 1850height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
1851<!-- End Google Tag Manager (noscript) --> 1852 1853<!--<div class="container">--> 1854 1855 1856 1857 1858 1859 <header> 1860 1861 1862 1863 1864 <!-- Desktop Header --> 1865 <div id="header" class="hidden lg:block my-main-bg-color text-white"> 1866 <div class="columns-3 container mx-auto max-w-screen-xl flex justify-between items-center px-4 h-[100px] "> 1867 1868 <div class="w-full flex justify-start items-center ml-4"> 1869 <i id="hamburger-btn" class="material-icons text-4xl my-zoom-1-2 pr-5 cursor-pointer">menu</i> 1870 <i id="header-search-icon" class="material-icons text-4xl cursor-pointer">search</i> 1871 </div> 1872 1873 <div class="w-full flex justify-center"> 1874 <a href="/"> 1875 <img src="https://d3mdtxxgfz6upn.cloudfront.net/images/header-logo.png" alt="Farmers Journal Logo" class="h-[71.18px]"> 1876 </a> 1877 </div> 1878 1879 <div class="w-full flex justify-end mr-4 white"> 1880 1881 1882 1883 1884<span> 1885 <!--<li> 1886 <a class="fp-sign-in cursor-pointer inline-flex items-center rounded-md border border-gray-300 px-3 py-1.5 text-sm font-medium text-gray-700 hover:bg-gray-100 transition" style="display: none;"> 1887 Sign In 1888 </a> 1889 </li>--> 1890 1891 1892 1893 1894 1895 <span class="flex items-center"> 1896 1897 <!-- not logged --> 1898 <a href="/subscribe.php" class="ifj-subscribe-btn hidden ifj-locked-invisible"> 1899 <button class="bg-teal-500 text-white ml-2 h-[26px] w-[100px] my-font-14-px my-font-roboto-bold">SUBSCRIBE</button> 1900 </a> 1901 1902 <a href="#" class="fp-sign-in hidden"> 1903 <i class="material-icons text-4xl pl-5 cursor-pointer">person</i> 1904 </a> 1905 1906 <a href="#" class="fp-sign-in hidden"> 1907 <span id="sign-in-text" class="my-font-roboto-bold my-font-14-px cursor-pointer">SIGN IN</span> 1908 </a> 1909 1910 1911 1912 <!-- not logged --> 1913 <!--<a class="fp-sign-out cursor-pointer inline-flex items-center rounded-md border border-gray-300 px-3 py-1.5 text-sm font-medium text-gray-700 hover:bg-gray-100 transition" style="display: none;"> 1914 Sign Out 1915 </a>--> 1916 <!--<span class="fp-sign-out my-font-roboto-bold my-font-14-px cursor-pointer">SIGN OUT</span>--> 1917 1918 1919 <!--<a class="fp-member-center cursor-pointer inline-flex items-center rounded-md bg-black px-3 py-1.5 text-sm font-medium text-white hover:bg-gray-800 transition" style="display: none;"> 1920 Account 1921 </a>--> 1922 <!--<a class="ifj-myaccount-btn fp-member-center bg-gray-600 text-white h-[26px] w-[100px] my-font-14-px my-font-roboto-bold hidden"> 1923 MY ACCOUNT 1924 </a>--> 1925 1926 1927 1928 <a href="/my-podcasts" rel="noopener noreferrer" class="float-left hidden ifj-podcasts-btn"> 1929 <div class="flex items-center gap-2 text-white mr-0 md:mr-5 -mt-px float-left"> 1930 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="w-11 h-11"> 1931 <path stroke-linecap="round" stroke-linejoin="round" d="M4 12a8 8 0 0116 0"></path> 1932 <rect x="4" y="12" width="4" height="7" rx="1.2"></rect> 1933 <rect x="16" y="12" width="4" height="7" rx="1.2"></rect> 1934 </svg> 1935 <span class="-ml-2 hidden lg:inline">Podcasts</span> 1936 </div> 1937 </a> 1938 1939 1940 <span class="block ifj-epaper-btn hidden"> 1941 <a href="https://edition.pagesuite.com/html5/reader/production/default.aspx?pubname=&pubid=76379fd5-fa8e-44c4-a34a-7784b5dcb297" target="_blank" title="Irish Farmers Journal ePaper" class="flex items-center justify-end lg:justify-center"> 1942 <img src="/2024-files/epaper-icon.png" class="h-[35px] epaper-icon" alt=""> 1943 <span class="hidden lg:inline ml-0">Epaper</span> 1944 </a> 1945 </span> 1946 1947 1948 1949 </span> 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960 1961 1962 1963 1964 1965 1966 1967 <!-- <header-desktop-logged-buttons></header-desktop-logged-buttons> --> 1968 1969 1970 1971 1972</span> 1973 1974 1975 1976 1977 1978 1979 1980 1981 1982 1983 1984 1985 1986 <!--<header-desktop-logged-buttons></header-desktop-logged-buttons>--> 1987 1988 1989 </div> 1990 </div> 1991 </div> 1992 <!-- Mobile Header --> 1993 <div id="header-mobile" class="lg:hidden my-main-bg-color text-white flex items-center justify-between p-4"> 1994 1995 1996
1997 <span class="w-[80px]"> 1998 <button id="mobile-hamburger-btn" class="focus:outline-none"> 1999 <svg class="h-8 w-8" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2000 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"></path> 2001 </svg> 2002 </button> 2003 </span> 2004 2005 2006 <a href="/"> 2007 <img src="https://d3mdtxxgfz6upn.cloudfront.net/images/header-logo.png" alt="Logo" class="h-10 mx-auto"> 2008 </a> 2009 2010 2011 2012 <span class="flex items-center"> 2013 2014<span class="header-mobile-auth-buttons flex items-center gap-3"> 2015 <a href="/my-podcasts" rel="noopener noreferrer" class="hidden ifj-podcasts-btn"> 2016 <div class="flex items-center text-white"> 2017 <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="w-9 h-9"> 2018 <path stroke-linecap="round" stroke-linejoin="round" d="M4 12a8 8 0 0116 0"></path> 2019 <rect x="4" y="12" width="4" height="7" rx="1.2"></rect> 2020 <rect x="16" y="12" width="4" height="7" rx="1.2"></rect> 2021 </svg> 2022 <span class="-ml-2 hidden lg:inline">Podcasts</span> 2023 </div> 2024 </a> 2025 2026 2027 2028 <span class="ifj-epaper-btn hidden"> 2029 <a href="https://edition.pagesuite.com/html5/reader/production/default.aspx?pubname=&pubid=76379fd5-fa8e-44c4-a34a-7784b5dcb297" title="Irish Farmers Journal ePaper" class="flex items-center"> 2030 <img src="/2024-files/epaper-icon.png" class="h-[30px] epaper-icon" alt=""> 2031 <span class="hidden lg:inline ml-0">Epaper</span> 2032 </a> 2033 </span> 2034 2035 2036 2037 <button class="fp-sign-in focus:outline-none hidden"> 2038 <a> 2039 <i class="material-icons text-4xl cursor-pointer">person</i> 2040 </a> 2041 </button> 2042 2043</span> 2044 2045 2046 2047 2048 2049 2050 2051 2052 2053 2054 2055 2056 2057 2058 2059 2060 2061 2062 2063 2064 2065 2066 <!-- <header-desktop-logged-buttons></header-desktop-logged-buttons> --> 2067 2068 2069 2070 2071 <!-- <a class="fp-sign-out" href="/logout.php"> 2072 <span class="my-font-roboto-bold my-font-14-px cursor-pointer text-white">SIGN OUT</span> 2073 </a> 2074 2075 2076 <a class="fp-member-center"> 2077 <button class="bg-gray-600 text-white h-[26px] w-[100px] my-font-14-px my-font-roboto-bold"> 2078 MY ACCOUNT 2079 </button> 2080 </a>--> 2081 </span> 2082 2083 </div> 2084 2085 </header> 2086 2087 2088 2089 2090 2091 2092 2093 2094 2095 2096 2097 <div id="header-search-field-container" class="hidden w-full my-main-bg-color"> 2098 2099 <div class="flex items-center justify-center h-[100px]"> 2100 <!--<form action="/archive.php" method="get">--> 2101 <form action="/2024-search.php" method="get"> 2102 <div class="flex items-center rounded"> 2103 <input id="search-input-desktop-header" type="search" name="stq" placeholder="Search for stories, topics" class="px-4 py-2 w-96 focus:outline-none rounded-bl-md"> 2104 <button class="ml-2 bg-gray-800 flex items-center px-4 py-2 my-text-color-gray-1 text-white hover:bg-gray-800 focus:outline-none rounded"> 2105 <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 mr-2" viewBox="0 0 20 20" fill="currentColor"> 2106 <path fill-rule="evenodd" d="M12.9 14.32a8 8 0 111.42-1.42l4.5 4.5a1 1 0 01-1.42 1.42l-4.5-4.5zM8 14a6 6 0 100-12 6 6 0 000 12z" clip-rule="evenodd"></path> 2107 </svg> 2108 Search 2109 </button> 2110 <i id="close-search-icon" class="material-icons text-4xl my-zoom-1-2 pr-5 cursor-pointer text-white">close</i> 2111 </div> 2112 </form> 2113 </div> 2114 2115 </div> 2116 2117 <nav id="header-menu" class="bg-white border-b border-gray-200 hidden md:flex text-sm"> 2118 <div class="container mx-auto max-w-screen-xl h-[35px] flex items-center my-text-color-gray-1 my-font-roboto-medium"> 2119 <i id="hamburger-btn-desktop-scroll-down" class="material-icons text-2xl my-zoom-1-2 pr-2 cursor-pointer show-desktop-scrolldown hidden">menu</i> 2120 2121 <a href="/"> 2122 <i id="header-search-icon-desktop-scroll-down" class="material-icons text-2xl cursor-pointer show-desktop-scrolldown hidden" 2123 onclick="event.stopImmediatePropagation();">home</i> 2124 </a> 2125 2126 <a class="my-ml-20px desktop-headermenu-beef my-mr-20px" href="/farming-news/beef/54">BEEF</a> 2127 <a class="my-mr-20px desktop-headermenu-dairy" href="/farming-news/dairy/55">DAIRY</a> 2128 <a class="my-mr-20px desktop-headermenu-sheep" href="/farming-news/sheep/56">SHEEP</a> 2129 <a class="my-mr-20px desktop-headermenu-machinery" href="/farming-news/machinery/59">
2129MACHINERY</a> 2130 <a class="my-mr-20px desktop-headermenu-tillage" href="/farm/tillage/57">TILLAGE</a> 2131 <a class="my-mr-20px desktop-headermenu-agribusiness" href="/farming-news/agribusiness-news/58">AGRIBUSINESS</a> 2132 <a class="my-mr-20px desktop-headermenu-farm-schemes" href="/tag/Farm-schemes">FARM SCHEMES</a> 2133 <a class="my-mr-20px desktop-headermenu-property" href="/farm/property/76">PROPERTY</a> 2134 <a class="my-mr-20px desktop-headermenu-buildings" href="/farm/buildings/315">BUILDINGS</a> 2135 <a class="my-mr-20px desktop-headermenu-pedigree" href="/farm/pedigree/320">PEDIGREE</a> 2136 <a class="my-mr-20px desktop-headermenu-northern-ireland" href="/farming-news/northern-ireland/321">NORTHERN IRELAND</a> 2137 <a class="my-mr-20px desktop-headermenu-country-living" href="/farming-news/irish-country-living/3">COUNTRY LIVING</a> 2138 2139 <span> 2140 <!-- not logged --> 2141 <header-desktop-not-logged-buttons class="my-zoom-0-8 show-desktop-scrolldown hidden"></header-desktop-not-logged-buttons> 2142 </span> 2143 2144 </div> 2145 </nav> 2146 2147 2148 <!-- Menu Lateral --> 2149 <div id="sidebar" class="fixed left-0 top-0 w-full md:w-72 shadow-lg z-50 h-screen hidden my-overflow-y-overlay my-scrollbar-hidden sidebar-desktop-top-100-px"> 2150 <div class="my-custom-bg-gray p-4"> 2151 2152 2153 2154 2155 2156 2157 2158 <style> 2159 2160 ._footer-category { 2161 position: relative; 2162 padding: 20px 0; 2163 /*border-bottom: 1px solid #ccc;*/ 2164 border-top: 1px solid #ccc; 2165 cursor: pointer; 2166 } 2167 ._footer-category.active { 2168 /*border-bottom: none; */ 2169 padding-bottom: 10px; 2170 } 2171 ._footer-category::after { 2172 content: '\25BC'; /* Seta para baixo */ 2173 position: absolute; 2174 right: 0; 2175 top: 50%; 2176 transform: translateY(-50%); 2177 font-size: 0.575rem; 2178 color: #fff; 2179 } 2180 ._footer-category.active::after { 2181 content: '\25B2'; /* Seta para cima */ 2182 } 2183 ._footer-dropdown { 2184 display: none; 2185 } 2186 ._footer-dropdown.active { 2187 display: block; 2188 } 2189 ._access-channel { 2190 color: #fff; /* Cor branca para o item "Access this channel" */ 2191 } 2192 2193 /* Itens menores no mobile */ 2194 ._footer-small-links { 2195 display: grid; 2196 grid-template-columns: 1fr 1fr; 2197 grid-column-gap: 20px; /* Espaço entre as colunas */ 2198 grid-row-gap: 10px; /* Espaço entre as linhas */ 2199 padding-top: 20px; 2200 margin: 0 auto; /* Centralizar o conteúdo */ 2201 max-width: 320px; /* Limitar a largura para centralizar */ 2202 } 2203 ._footer-small-links a { 2204 text-align: left; 2205 color: #ccc; /* Cor cinza claro */ 2206 font-size: 12px; 2207 } 2208 ._footer-small-links ._footer-last-item { 2209 grid-column: 1 / -1; /* Ocupa toda a largura */ 2210 text-align: center; 2211 padding-top: 10px; 2212 } 2213 2214 2215 .sidebar-desktop-top-100-px { 2216 top: 100px; 2217 } 2218 .sidebar-desktop-top-50-px { 2219 top: 50px; 2220 } 2221 2222 2223 /* mobile */ 2224 @media (max-width: 767px) { 2225 .sidebar-desktop-top-50-px { 2226 top: 0px; 2227 } 2228 2229 .sidebar-desktop-top-100-px { 2230 top: 72px !important; 2231 } 2232 2233 2234 } 2235 2236 /* desktop */ 2237 @media (min-width: 768px) { 2238 } 2239 2240 2241 2242 2243 2244 2245 2246 2247 2248 2249 2250 2251 2252 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 </style> 2264 2265 2266 2267 2268 2269 2270 2271 2272<div class="my-border-top mt-2 md:mt-4"> 2273 <div class="container w-full md:max-w-[1280px] mx-auto"> 2274 2275 <div id="mobile-header-links"> 2276 2277 <div class="my-zoom-0-8 text-white w-full"> 2278
2279 <span class="flex items-center justify-center w-full mt-2 gap-4 md:gap-0"> <!-- left-show-hide-menu.php --> 2280 2281 <a href="/subscribe.php" class="ifj-subscribe-btn"> 2282 <button class="bg-teal-500 text-white ml-2 h-[26px] w-[100px] my-font-14-px my-font-roboto-bold">SUBSCRIBE</button> 2283 </a> 2284 2285 <span class="flex items-center"> 2286 2287 <a href="#" class="fp-sign-in"> 2288 <i class="material-icons text-4xl pl-5 cursor-pointer">person</i> 2289 </a> 2290 <a href="#" class="fp-sign-in"> 2291 <span id="sign-in-text" class="my-font-roboto-bold my-font-14-px cursor-pointer">SIGN IN</span> 2292 </a> 2293 </span> 2294 2295 <a href="/epaperlink.php" class="ifj-epaper-btn hidden" alt="Irish Farmers Journal ePaper" title="Irish Farmers Journal ePaper"> 2296 <img src="/2024-files/epaper-icon.png" class="h-[35px] epaper-icon"> 2297 </a> 2298 2299 <a class="fp-member-center ml-[5%] mr-[5%] "> 2300 <button class="bg-gray-600 text-white h-[26px] w-[100px] my-font-14-px my-font-roboto-bold"> 2301 MY ACCOUNT 2302 </button> 2303 </a> 2304 2305 <a class="fp-sign-out" href="/logout.php"> 2306 <span class="my-font-roboto-bold my-font-14-px cursor-pointer text-white">SIGN OUT</span> 2307 </a> 2308 2309 </span> 2310 2311 </div> 2312 2313 </div> 2314 2315 2316 2317 <span class="flex items-center justify-center flex w-[100%] mb-5 mt-5"> 2318 <form action="/2024-search.php" method="get"> 2319 <div class="flex items-center rounded "> 2320 <input id="search-input-desktop-header" type="search" name="stq" placeholder="Search for stories, topics" class="px-4 md:px-2 py-1 md:py-0.5 w-[100%] focus:outline-none rounded-bl-md"> 2321 <button class="w-[30%] my-main-bg-color ml-2 flex items-center px-4 py-1 my-text-color-gray-1 text-white hover:my-main-bg-color focus:outline-none rounded"> 2322 <svg xmlns="http://www.w3.org/2000/svg" class="h-5 w-5 mr-2" viewBox="0 0 20 20" fill="currentColor"> 2323 <path fill-rule="evenodd" d="M12.9 14.32a8 8 0 111.42-1.42l4.5 4.5a1 1 0 01-1.42 1.42l-4.5-4.5zM8 14a6 6 0 100-12 6 6 0 000 12z" clip-rule="evenodd"></path> 2324 </svg> 2325 <span class="md:hidden">Search</span> 2326 </button> 2327 2328 </div> 2329 </form> 2330 </span> 2331 2332 2333 2334 2335 <!-- Price Bar --> 2336 <div class="flex justify-start items-center"> <!-- h-full --> 2337 2338 <footer class="my-custom-bg-gray text-white py-2"> 2339 <div class="container mx-auto px-4 md:px-0"> 2340 <div class="flex flex-wrap mx-2"> 2341 <div class="w-full px-1"> 2342 2343 2344 2345 2346 2347 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2348 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> NEWS 2349 </a> 2350 2351 2352 2353 2354 2355 2356 2357 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2358 <li><a href="/latestheadlines" class="block py-1.5 text-md">Latest headlines</a></li> 2359 <li><a href="/farm/schemes/282" class="block py-1.5 text-md">Schemes</a></li> 2360 <li><a href="/farm/industry-opinion/279" class="block py-1.5 text-md">Viewpoints</a></li> 2361 <li><a href="/farming-news/northern-ireland/321" class="block py-1.5 text-md">Northern Ireland</a></li> 2362 <li><a href="/farm/farmer-writes/281" class="block py-1.5 text-md">Farmer Writes</a></li> 2363 <li><a href="/farm/the-dealer/280" class="block py-1.5 text-md">The Dealer</a></li> 2364 <li><a href="/farm/advertisersanouncements/595" class="block py-1.5 text-md">Sponsored</a></li> 2365 </ul> 2366 </div> 2367 <div class="w-full px-1"> 2368 2369 2370 2371 2372 2373 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2374 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> LIVESTOCK 2375 </a> 2376 2377 2378 2379 2380 2381 2382 2383 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2384 <li>
2384<a href="/tag/Mart-reports" class="block py-1.5 text-md">Mart reports</a></li> 2385 <li><a href="/farming-news/beef/54" class="block py-1.5 text-md">Beef</a></li> 2386 <li><a href="/farming-news/dairy/55" class="block py-1.5 text-md">Dairy</a></li> 2387 <li><a href="/farming-news/sheep/56" class="block py-1.5 text-md">Sheep</a></li> 2388 <li><a href="/farm/pedigree/320" class="block py-1.5 text-md">Pedigree</a></li> 2389 <li><a href="/tag/Animal-health" class="block py-1.5 text-md">Animal health</a></li> 2390 </ul> 2391 </div> 2392 <div class="w-full px-1"> 2393 2394 2395 2396 2397 2398 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2399 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> SECTORS 2400 </a> 2401 2402 2403 2404 2405 2406 2407 2408 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2409 <li><a href="/farming-news/agribusiness/58" class="block py-1.5 text-md">Agribusiness</a></li> 2410 <li><a href="/farm/tillage/57" class="block py-1.5 text-md">Tillage</a></li> 2411 <li><a href="/farming-news/machinery/59" class="block py-1.5 text-md">Machinery</a></li> 2412 <li><a href="/tag/Renewables" class="block py-1.5 text-md">Renewables</a></li> 2413 <li><a href="/farm/property/76" class="block py-1.5 text-md">Property</a></li> 2414 <li><a href="/farm/buildings/315" class="block py-1.5 text-md">Buildings</a></li> 2415 <li><a href="/tag/Climate-and-environment" class="block py-1.5 text-md">Climate & environment</a></li> 2416 <li><a href="/farm/forestry/316" class="block py-1.5 text-md">Forestry</a></li> 2417 </ul> 2418 </div> 2419 <div class="w-full px-1"> 2420 2421 2422 2423 2424 2425 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2426 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> IRISH COUNTRY LIVING 2427 </a> 2428 2429 2430 2431 2432 2433 2434 2435 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2436 <li><a href="/farm/life/70" class="block py-1.5 text-md">Features</a></li> 2437 <li><a href="/farm/comment/74" class="block py-1.5 text-md">Columns</a></li> 2438 <li><a href="/farm/life/70" class="block py-1.5 text-md">Lifestyle</a></li> 2439 </ul> 2440 </div> 2441 <div class="w-full px-1"> 2442 2443 2444 2445 2446 2447 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2448 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> FARM PROGRAMMES 2449 </a> 2450 2451 2452 2453 2454 2455 2456 2457 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2458 <li><a href="/farm/tullamore-farm/642" class="block py-1.5 text-md">Tullamore Farm</a></li> 2459 <li><a href="/farmprogrammes/footprintfarmers/9999641" class="block py-1.5 text-md">Footprint Farmers</a></li> 2460 </ul> 2461 </div> 2462 <div class="w-full px-1"> 2463 2464 2465 2466 2467 2468 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2469 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> HUBS 2470 </a> 2471 2472 2473 2474 2475 2476 2477 2478 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2479 <li><a href="/hub/knowledge" class="block py-1.5 text-md">Knowledge Hub</a></li> 2480 <li><a href="/hub/schools" class="block py-1.5 text-md">Schools Hub</a></li> 2481 <li><a href="/hub/young-stock" class="block py-1.5 text-md">Young Stock Hub</a></li> 2482 <li><a href="/videohub" class="block py-1.5 text-md">Video Hub</a></li> 2483 </ul> 2484 </div> 2485 <div class="w-full px-1"> 2486 2487 2488 2489 2490 2491 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2492 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> BUSINESS OF FARMING 2493 </a> 2494 2495 2496 2497 2498 2499 2500 2501 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2502 <li>
2502<a href="/martwatch" class="block py-1.5 text-md">Martwatch</a></li> 2503 <li><a href="/tag/Business-of-Farming" class="block py-1.5 text-md">Mart & Factory Prices</a></li> 2504 </ul> 2505 </div> 2506 <div class="w-full px-1"> 2507 2508 2509 2510 2511 2512 <a href="#" class="text-sm my-font-roboto-medium _footer-category flex items-center"> 2513 <div class="my-red-square-8-8 my-main-bg-color mr-2"></div> MULTIMEDIA 2514 </a> 2515 2516 2517 2518 2519 2520 2521 2522 <ul class="_footer-dropdown md:mt-2 mb-6 md:mb-0"> 2523 <li><a href="/my-podcasts" class="block py-1.5 text-md">Podcasts</a></li> 2524 <li><a href="/farm/video/651" class="block py-1.5 text-md">Videos</a></li> 2525 <li><a href="/tag/In-pictures" class="block py-1.5 text-md">Photography</a></li> 2526 </ul> 2527 </div> 2528 </div> 2529 <div class="_footer-small-links text-gray-400 text-xs mt-8"> 2530 <a href="/information/contact-us/150935">Contact us</a> 2531 <a href="/mediakit.php">Advertise with us</a> 2532 <a href="/information/company-information/150940">Company information</a> 2533 <a href="/information/careers/152746">Career opportunities</a> 2534 <a href="/information/privacy-policy/150948">Privacy statement</a> 2535 <a href="/information/terms-of-service/150950">Terms of service</a> 2536 <a href="/information/commenting-policy/155484">Commenting policy</a> 2537 <a class="ot-sdk-show-settings">Cookie Settings</a> 2538 <div class="_footer-last-item">© Irish Farmers Journal 2026</div> 2539 </div> 2540 </div> 2541 2542 </div> 2543 </footer> 2544 2545 </div> 2546 </div> 2547</div> 2548 2549 2550 2551 2552 2553
2553<script> 2554 2555 2556 2557 2558 // Script para gerenciar a expansão dos sub-itens no mobile 2559 $(document).ready(function() { 2560 $('._footer-category').click(function() { 2561 e.preventDefault(); 2562 $(this).next('._footer-dropdown').toggleClass('active'); 2563 $(this).toggleClass('active'); // Alterna a seta para cima/baixo e a linha 2564 }); 2565 }); 2566 2567 2568 $(document).ready(function() { 2569 // Remover href="#" em mobile para evitar problemas de scroll 2570 $('._footer-category').each(function() { 2571 $(this).attr('href', '#'); 2572 $(this).off('click').on('click', function(e) { 2573 e.preventDefault(); // Previne o comportamento padrão do link 2574 $(this).next('._footer-dropdown').toggleClass('active'); 2575 $(this).toggleClass('active'); // Alterna a seta para cima/baixo e a linha 2576 }); 2577 }); 2578 2579 }); 2580 2581 2582 </script>
2582 2583 2584 </div> 2585 </div> 2586 2587<!-- body tailwind start --> 2588 2589 2590 2591 <!--<div class="container center white-background article-container">--> 2592 <main class="container grid w-full md:max-w-[1280px] mx-auto pr-0 pl-0 md:pr-4 md:pl-4 md:pr-0 md:pl-0 pt-0 md:pt-6 bg-white article-container " data-swiftype-name="body" data-swiftype-type="text"> 2593 2594 2595 2596 2597 2598 2599<!-- line 1 --> 2600<div class="line1 flex flex-wrap order-2 md:order-1"> 2601 <div class="position1A w-full md:w-3/12 px-2"></div> 2602 <div class="position1B w-full md:w-6/12 px-2.5"> 2603 2604 <div class="block md:hidden mb-4"> 2605 <a class="red my-main-color uppercase my-font-roboto-regular text-xs" href="/farm/pensions & savings /430">Pensions & Savings </a> 2606 </div> 2607 2608 <h1 class="article-title black my-font-coranto-bold text-[1.875rem] mb-4 md:text-[2.375rem] leading-[2.0625rem] md:leading-[2.5rem]" data-swiftype-index="true"> Tax planning is about efficiency, not saving </h1> <!-- desktop title --> 2609 2610 <h2 class="article-desc text-[#777777] text-lg padding-tb-10 md:text-base my-font-coranto-2-headline-regular component-sub-title mb-4 leading-[1.3125rem]" data-swiftype-index="true"> 2611 While there are plenty of ways to reduce a tax bill, spending should always make good financial sense. 2612 </h2> <!-- desktop description --> 2613 </div> 2614 2615 <div class="position1C w-full md:w-3/12 px-2 md:hidden"><!-- against of 2a | here is for mobile--> 2616 2617 2618<hr class="h-0.5 border-t border-gray-500 mt-4"> 2619<hr class="h-0.5 border-t border-gray-500 mb-0.5 mt-0.5"> 2620<hr class="h-0.5 border-t border-gray-500 mb-4"> 2621 2622<div class="article-info flex flex-row"> 2623 <div class="w-1/2 text-left"> 2624 <span class="block float-left"> 2625 <div> 2626 2627 2628 <div class="padding-t-10 padding-b-15" data-swiftype-index='true'> 2629 <a href="/journalists/lrkelly"> 2630 <span class="editor-new my-font-coranto-bold text-lg black" data-swiftype-name='info'> 2631 Lorcan Roche Kelly </span> 2632 </a> 2633 </div> 2634 2635 2636 2637<!-- 2638 <div class="article-breadcrumb red uppercase my-main-color text-sm my-font-roboto-medium" data-swiftype-index='false' > 2639 <a class="red" href="farming-news/focus/78">Focus</a> 2640 2641 > 2642 <a class="red" href="farm/pensions & savings /430">Pensions & Savings 2643 </a> 2644 2645 </div> 2646--> 2647 2648 2649 <!--<div class="text-[#777777] text-xs my-font-roboto-regular"> 2650 Pensions & Savings correspondent 2651 </div>--> 2652 2653 2654 2655 2656 2657 2658 <div class="text-[#777777] text-xs my-font-roboto-regular"> 2659 2660 Sat 5 September 2026 12:00 AM 2661 </div> 2662 2663 2664 2665 2666 <!-- id="3" href="#3" data-link-ref="" --> <!-- load only 1 article instead of 3 (part_2) --> 2667 2668 2669 2670 <a id="#1" href="#1" data-link-ref="focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359" data-id-ref="930359" data-premium-ref="1" data-memberplus-ref="0" class="hash"></a> 2671 2672 2673 <div class="flex justify-left space-x-4 mt-2"> 2674 2675 <a class="share-btn-v2 share-mail-v2" id="share-mail-v2" data-ref-title="Tax planning is about efficiency, not saving " data-ref-permlink="http://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359"> 2676 <i class="fa-regular fa-envelope article-user-action text-xl" alt="Email the writer" title="Email the writer"></i> 2677 2678 </a> 2679 2680 <!--<a class="share-btn-v2 save-article-btn" rel-story-id="930359"> 2681 <i class="fa-regular fa-bookmark article-user-action text-xl" alt="Save this article" title="Save this article"></i> 2682 </a>--> 2683 2684 <i class="fa-solid fa-arrow-up-from-bracket article-user-action share-btn-v2 text-xl" alt="Share this article" title="Share this article" id="mobile-share"></i> 2685 2686 2687 <!-- mobile share function start --> 2688
2688<script> 2689 'use strict'; 2690 2691 function sleep(delay) { 2692 return new Promise(resolve => { 2693 setTimeout(resolve, delay); 2694 }); 2695 } 2696 2697 function logText(message, isError) { 2698 if (isError) 2699 console.error(message); 2700 else 2701 console.log(message); 2702 2703 const p = document.createElement('p'); 2704 if (isError) 2705 p.setAttribute('class', 'error'); 2706 document.querySelector('#output').appendChild(p); 2707 p.appendChild(document.createTextNode(message)); 2708 } 2709 2710 function logError(message) { 2711 logText(message, true); 2712 } 2713 2714 async function testWebShare() { 2715 if (navigator.share === undefined) { 2716 logError('Error: Unsupported feature: navigator.share()'); 2717 return; 2718 } 2719 2720 2721 let title = "Tax planning is about efficiency, not saving"; 2722 const text = ""; 2723 const url = "https://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359"; 2724 2725 2726 try { 2727 await navigator.share({title, text, url}); 2728 logText('Successfully sent share'); 2729 } catch (error) { 2730 logError('Error sharing: ' + error); 2731 } 2732 } 2733 2734 async function testWebShareDelay() { 2735 await sleep(4000); 2736 testWebShare(); 2737 } 2738 2739 function onLoad() { 2740 2741 /*document.querySelector('#share').addEventListener('click', testWebShare);*/ 2742 document.querySelector('#mobile-share').addEventListener('click', testWebShare); 2743 2744 if (navigator.share === undefined) { 2745 if (window.location.protocol === 'http:') { 2746 // navigator.share() is only available in secure contexts. 2747 window.location.replace(window.location.href.replace(/^http:/, 'https:')); 2748 } else { 2749 logError('Error: You need to use a browser that supports this draft ' + 2750 'proposal.'); 2751 } 2752 } 2753 } 2754 2755 window.addEventListener('load', onLoad); 2756 </script>
2756 2757 <!-- mobile share function end --> 2758 2759 2760 2761 </div> 2762 2763 2764 </div> 2765 </span> 2766 </div> 2767 <div class="w-1/2 text-right"> 2768 <span class="block float-right"> <img alt="Lorcan Roche Kelly" title="Lorcan Roche Kelly" src="https://s3-eu-west-1.amazonaws.com/ifj/images/lrkelly.png" style="border-radius: 50%; height: 80px; border: 1px solid #707070" onerror="this.onerror=null;this.style='';this.src='https://www.farmersjournal.ie/images/white.png';"></span> 2769 </div> 2770</div> 2771 2772 2773<hr class="h-0.5 border-t border-gray-500 mb-4 mt-4"> 2774 2775 2776 2777 2778 2779 2780 2781 2782 2783 </div> 2784</div> 2785 2786 2787 2788<!-- line 2 --> 2789<div class="line2 flex flex-wrap order-1 md:order-2" align="center"> 2790 2791 <div class="position2A w-full md:w-3/12 px-2 order-2 md:order-1 hidden md:block"> <!-- against of 1c | here is for desktop--> 2792 2793 2794 2795 2796 2797 2798 2799 2800 2801 2802 2803 2804 <div> 2805 <img alt="Lorcan Roche Kelly" title="Lorcan Roche Kelly" src="https://s3-eu-west-1.amazonaws.com/ifj/images/lrkelly.png" style="border-radius: 50%; height: 80px; border: 1px solid #707070" onerror="this.onerror=null;this.style='';this.src='https://www.farmersjournal.ie/images/white.png';"> 2806 </div> 2807 2808 2809 2810 2811 2812 <div class="padding-t-10 padding-b-15 mt-2" data-swiftype-index='true'> 2813 <a href="/journalists/lrkelly"> 2814 <span class="editor-new my-font-coranto-bold text-lg black" data-swiftype-name='info'> 2815 Lorcan Roche Kelly </span> 2816 </a> 2817 </div> 2818 2819 <!--<div class="text-[#777777] text-sm my-font-roboto-regular"> 2820 Pensions & Savings correspondent 2821 </div>--> 2822 2823 2824 <div class="article-breadcrumb red uppercase my-main-color text-sm my-font-roboto-medium" data-swiftype-index='false' > 2825 <!--<a class="red" href="/farming-news/focus/78">Focus</a>--> 2826 2827 2828 <a class="red" href="/farm/pensions & savings /430">Pensions & Savings 2829 </a> 2830 2831 </div> 2832 2833 2834 <div class="text-[#777777] text-sm my-font-roboto-regular"> 2835 2836 Sat 5 September 2026 8:30 AM 2837 2838 </div> 2839 2840 2841 2842 2843 2844 2845 <!-- id="3" href="#3" data-link-ref="" --> <!-- load only 1 article instead of 3 (part_2) --> 2846 2847 2848 2849 <a id="#1" href="#1" data-link-ref="focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359" data-id-ref="930359" data-premium-ref="1" data-memberplus-ref="0" class="hash"></a> 2850 2851 2852 <div class="flex justify-center space-x-4 mt-2"> 2853 2854 <a class="share-btn-v2 share-mail-v2" id="share-mail-v2" data-ref-title="Tax planning is about efficiency, not saving " data-ref-permlink="http://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359"> 2855 <!--<img class="article-user-action" alt="Email the writer" title="Email the writer" src="https://www.farmersjournal.ie/images/article_page/action-sharemail-35-35.png">--> 2856 <i class="fa-regular fa-envelope article-user-action text-xl" alt="Email the writer" title="Email the writer"></i> 2857 </a> 2858 2859 <a class="share-btn-v2 save-article-btn" rel-story-id="930359"> 2860 <!--<img class="article-user-action" alt="Save this article" title="Save this article" src="https://www.farmersjournal.ie/images/article_page/action-download-35-35.png">--> 2861 <i class="fa-regular fa-bookmark article-user-action text-xl" alt="Save this article" title="Save this article"></i> 2862 </a> 2863 2864 <!--<img class="article-user-action share-btn-v2" alt="Share this article" title="Share this article" id="share-socialmedia-v2" src="https://www.farmersjournal.ie/images/article_page/action-share-35-35.png">--> 2865 <i class="fa-solid fa-arrow-up-from-bracket article-user-action share-btn-v2 text-xl" alt="Share this article" title="Share this article" id="share-socialmedia-v2"></i> 2866 2867 </div> 2868 2869 2870 2871 2872 2873 2874 2875 2876 2877 2878 2879 2880 2881 2882 2883 2884 2885 2886 2887 2888 2889 2890 2891 2892 2893 2894 </div> <!-- position2A ends --> 2895 2896 2897<div class="position2B md:order-2 w-full md:w-6/12 px-0 md:px-2 2b-middle-content"> 2898 2899<!-- start main picture desktop and mobile --> 2900<div id="artcileCarousel-0" class="carousel slide" data-ride="carousel"> <!-- data-interval="50000" --> 2901<div class="carousel-inner" > 2902 2903 2904 2905 2906 2907 <div class="item active"><div class="article-image relative"><a href="https://d3mdtxxgfz6upn.cloudfront.net/WEBFILES/000/930/359/2602548-930359.jpg" class="glightbox" data-title=""><img alt="Tax planning is about efficiency, not saving " title="Tax planning is about efficiency, not saving " class="og-image-fix" src="https://d3mdtxxgfz6upn.cloudfront.net/WEBFILES/000/930/359/2602548-930359.jpg" alt=""></a> <!-- og-image-fix --> 2908 2909 2910<!--<div class="absolute bottom-2 right-2 bg-black bg-opacity-60 p-2 rounded-full camera-icon cursor-pointer"> 2911<svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 text-white" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2"> 2912 <path stroke-linecap="round" stroke-linejoin="round" d="M3 8h4l2-3h6l2 3h4a2 2 0 012 2v8a2 2 0 01-2 2H3a2 2 0 01-2-2v-8a2 2 0 012-2zm9 3a3 3 0 100 6 3 3 0 000-6z" /> 2913</svg>--> 2914 2915<div class="absolute bottom-2 right-2 bg-opacity-60 rounded-full camera-icon cursor-pointer mr-[10px]"> 2916<i class="fas fa-camera text-gray-500 text-3xl"></i> 2917 2918 2919 2920 2921 </div> 2922 2923 </div><!-- div 9 --><div> </div><!-- div 8 --></div><!-- div 3a --> 2924 2925 2926 2927 2928 </div><!-- div 2 --> 2929</div> 2930<!-- ends main picture desktop and mobile --> 2931 2932 2933 </div> 2934 2935 <!-- cel number 9 (line 3 column C)--> 2936 <div class="position2C md:order-3 w-full md:w-3/12 "> 2937 2938 2939 2940 2941 2942 <div class="hidden md:block"><!-- if desktop https://trello.com/c/59sFY5sc/901-show-ad-units-on-paywall-page-on-mobile --> 2943 2944 2945 <div class="gadvertisementheader px-2 py-1 mb-4 md:mb-0"> 2946 <div class="mx-auto text-center ml-[13%] md:ml[0] mb-4 md:mb-0">
2947 <span class=" my-font-roboto-regular text-[0.625rem] my-text-color-gray-1 text-center">ADVERTISEMENT</span> 2948 <!-- /144848334/new2025-articlepage-deskmob-slot1-300x250 --> 2949 <div id='div-gpt-ad-1753366870041-0' style='min-width: 300px; min-height: 250px;'> 2950
2950<script> 2951 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1753366870041-0'); }); 2952 </script>
2952 2953 </div> 2954 2955 </div> 2956 </div> 2957 2958 2959 2960 2961 2962 </div> 2963 2964 2965 2966 2967 2968 2969 2970 2971 2972 2973 </div> 2974</div> 2975<!-- line 2 end --> 2976 2977 2978 2979 2980<!-- line 3 --> 2981<div class="line3 flex flex-wrap order-3"> 2982 <div class="position3A w-full md:w-3/12 px-2"></div> 2983 <div class="position3B w-full md:w-6/12 px-2"><!-- article body --> 2984 2985 2986 <div class="fp-article-access ifj-paywalled-content article-body text-base my-font-coranto-2-headline-regular padding-tb-20 bottom-border" data-swiftype-index='true'> 2987 2988 <p>Octoberâs budget is expected to include some measures to reduce the income tax burden on earners, with a widening of tax bands the most likely route to be announced by Government.</p><p>That, should it happen, will go some way towards reducing income tax burdens in 2027. </p><p>However, rather than relying on changes from Government for management of tax liabilities, farmers and businesses need to continually seek to be as tax efficient as possible. Being tax-efficient is about keeping as much hard-earned income as possible and using earnings from the farm business to reinvest in the future of both the business and the owner. </p><div att="1" class="mx-auto w-auto w-fit text-center gadvertisementheader px-2 pb-2 mb-2"><span class=" my-font-roboto-regular text-[0.625rem] my-text-color-gray-1 text-center">ADVERTISEMENT</span><!-- /144848334/new2025-articlepage-deskmob-slot2-300x250 --> 2989<div id='div-gpt-ad-1753366990195-0' style='min-width: 300px; min-height: 250px;'> 2990
2990<script> 2991 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1753366990195-0'); }); 2992 </script>
2992 2993</div></div><p><strong>How best to do that</strong></p><p>As outlined on page 50, the single best way to be both tax-efficient and to build savings for the future is to contribute as much as you can â within the allowed limits â to your pension. </p><p>If the farm business has a strong year, then it makes sense to maximise pension payments. If your income is pushed into the higher-rate tax bracket during a good year, then pension contributions can significantly reduce your tax bill.</p><p>Once your pension is sorted, there are some other tax house-keeping duties that should be attended to each year â understand tax credits and ensuring full use is being made of all the available allowances. Remember, a subscription to the Irish Farmers Journal is tax-deductible for farmers. While there are not many personal allowances that can be claimed for pay-as-you-earn (PAYE) workers, remember to keep any receipts for medical expenses incurred during the year; there is a 20% rebate available from Revenue on those. For nursing home expenses that rises to 40%.</p><p>Make sure that allowances are maximised for married couples or couples in a civil partnership. Keep on top of specific farm reliefs, such as stock relief, accelerated capital allowances, changes to VAT refunds and capital gains tax relief. Octoberâs budget may well see some changes to these allowances for 2027. </p><p>For farmers, certain income streams can be tax-free. Earnings from qualifying leases are not subject to income tax. There are caps to the tax-free income which can be claimed, ranging from â¬18,000 for a five-year lease to â¬40,000 for a 15-year lease. It is worth noting that leases for solar installations are not covered by this tax-free allowance. The annual payments for forestry plantations are exempt from income tax, as is income from the occupation of woodlands. Income from forestry is subject to PRSI and USC.</p><p><strong>A different outlook</strong></p><p>
2993While tax efficiency is about paying as little tax as possible, it can more correctly be described as minimising tax payments while maintaining a desired standard of living and making arrangements for the future. For example, if a farmer on the higher rate of tax decides to spend â¬1,000 on a deductible item for the business, they will save several hundred euro on their tax bill. They will, however, also have several hundred euro less for their other spending needs. For farmers on the lower rate of tax, the salesmanâs pitch that a purchase âcan be written off against taxâ should carry even less weight.</p><p>Every potential investment in the farm business should be made on its own merits and be backed by a solid business plan. The tax implications of spending should form part of the decision when calculating whether to make an investment or not, rather than have the potential tax saving lead the decision. Efficient tax planning is also critical from a cashflow perspective. In farming, with its hugely volatile incomes from year to year, tax bills for a good year can arrive during a year when incomes are tight. We saw this in the dairy sector, that has seen particularly volatile returns since 2022, and are seeing larger than usual tax bills for the beef sector on the back of unusually high returns in 2025. </p><p>As usual with any aspect of financial planning, getting the right advice is critical. Talk to an accountant or financial adviser who can help when making decisions which will have tax implications. If nothing else, their bill should be tax deductible. 2994</p><p></p> 2995 2996 2997 2998 </div> <!-- article-body ends --> 2999 3000 <!-- modals 2025 start --> 3001 3002 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 3013 3014 3015 3016 3017 3018<!-- gshowcase --> 3019 3020 3021 3022 3023 3024 3025 3026<!-- if mobile and not logged https://trello.com/c/59sFY5sc/901-show-ad-units-on-paywall-page-on-mobile --> 3027 3028 <div class="block md:hidden"><!-- --> 3029 3030 3031 3032 3033 3034 3035 3036 </div> 3037 3038 3039 3040 3041 3042 3043 3044 3045<!-- tags --> 3046 3047 3048 3049<div> 3050 <div class="flex"> 3051 3052 3053 3054 3055 <!--<div class="related-topic-title padding-tb-20">RELATED TOPIC</div>--> 3056 3057<div class="border-gray-300 border-t inline-flex items-center whitespace-nowrap article-930359-list mt-2 mb-2 pt-2 mx-auto"> 3058 <div class="flex flex-wrap gap-2"> 3059 3060 <!--<span class="px-4 px-1 pb-1 bg-gray-500 text-white rounded-full">Debt</span> 3061 <span class="px-4 px-1 pb-1 bg-gray-500 text-white rounded-full">Farmers</span> 3062 <span class="px-4 px-1 pb-1 bg-gray-500 text-white rounded-full">Health</span> 3063 <span class="px-4 px-1 pb-1 bg-gray-500 text-white rounded-full">Labour</span> 3064 <span class="px-4 px-1 pb-1 bg-gray-500 text-white rounded-full">Mental health</span> 3065 <span class="px-4 px-1 pb-1 bg-gray-500 text-white rounded-full">Profit</span>--> 3066 3067<span class="px-4 mt-1 mb-1 pb-0.5 bg-gray-500 text-white rounded-full"> 3068 <a href="/tag/Management"> 3069 3070 Management 3071 3072 </a> 3073 </span><span class="px-4 mt-1 mb-1 pb-0.5 bg-gray-500 text-white rounded-full"> 3074 <a href="/tag/Tax"> 3075 3076 Tax 3077 3078 </a> 3079 </span> 3080 3081 3082 3083</div> 3084 3085 3086</div> 3087 3088 3089 </div> 3090 3091 3092 3093 3094 3095 3096 3097 3098 3099 3100 3101 3102 3103 3104 3105 3106 3107 3108 3109 3110 3111 3112 3113 3114 3115 3116</div> 3117<!-- tags --> 3118 3119 3120 3121 3122 3123 3124 3125 3126 3127 3128 3129 3130 3131 3132 3133 </div><!-- end position 3B article body --> 3134 3135 3136 3137 3138<!-- related stories mobile before most read --> 3139<div class='md:hidden block md:hidden line-5 flex flex-wrap data-swiftype-index='false''><!-- component related-stories.php --> 3140<main class="container w-full md:max-w-[1280px] mx-auto pr-2 pl-2 md:pr-4 md:pl-4 md:pr-0 md:pl-0 mt-8 pb-2 bg-white"> 3141 <div class="grid grid-cols-1 md:grid-cols-4 md:gap-3 border-t-4 border-gray-300 pt-4 md:pt-4"> 3142 3143 <div class="col-span-4 "> <!--Div A1--> 3144 <div class="section-title"> 3145 <article class="news-item flex flex-col"> <!-- h-full --> 3146 <h2 class="flex space-x-2"> 3147 <div class="my-red-square my-main-bg-color"></div> 3148 <span class="my-text-color-gray-1 text-sm my-font-roboto-medium pb-2 uppercase"><a href="#">Related Stories</a> <span class="my-main-color">»</span></span> 3149 </h2> 3150 </article> 3151 </div> 3152 3153 <div class="grid grid-cols-1 md:grid-cols-4 md:gap-8"> 3154 3155 <!-- news 1 --> 3156 <div class="md:mb-0 sm:w-full md-border-right md:pr-3 desktop-image-container"> 3157 <article class="news-item flex flex-col h-full"> 3158 3159 <a href="/beef/management/beef-management-closing-paddocks-nutrient-application-and-ration-composition-933895"> 3160 <picture> 3161 <source media="(min-width: 0px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/895/2613580-933895.jpg"> 3162 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/895/2613580-933895.jpg" alt="Beef management: closing paddocks, nutrient application and ration composition " class="w-full h-[170px] object-cover"> 3163 </picture> 3164 </a> 3165 3166 <div class="flex flex-col justify-between"> 3167 <div> 3168 <div class="flex justify-between items-center">
3169 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3170 <a class='my-font-roboto-medium' href='/farming-news/beef/54'>BEEF</a> </span> 3171 <a href='/subscribe.php' target='_blank' class='ifj-padlock'><div class='p-0.5 w-fit'><img src='https://d3mdtxxgfz6upn.cloudfront.net/images/padlock-green.png' class='h-3 min-w-[0.625rem]'></div></a> </div> 3172 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3173 <a href="/beef/management/beef-management-closing-paddocks-nutrient-application-and-ration-composition-933895"> 3174 Beef management: closing paddocks, nutrient application and ration composition </a> 3175 </h2> 3176 </div> 3177 </div> 3178 </article> 3179 </div> 3180 3181 <!-- news 2 --> 3182 <div class="sm:w-full md-border-right md:pr-3 desktop-image-container mt-4 pt-1 border-t border-gray-300 md:border-t-0 md:mt-0 md:pt-0"> 3183 <article class="news-item flex flex-col h-full"> 3184 <a href="/dairy/management/dairy-management-wintering-options-fertiliser-and-slurry-deadlines-933489"> 3185 <picture class="hidden md:block"> 3186 <source media="(min-width: 1024px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/489/2613519-933489.jpg"> 3187 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/489/2613519-933489.jpg" alt="Dairy Management: wintering options, fertiliser and slurry deadlines" class="w-full h-[170px] object-cover"> 3188 </picture> 3189 </a> 3190 3191 <div class="flex flex-col justify-between"> 3192 <div> 3193 <div class="flex justify-between items-center"> 3194 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3195 <a class='my-font-roboto-medium' href='/farming-news/dairy/55'>DAIRY</a> </span> 3196 <subscriber-only-badge paper-code="" user-type="" article-type="0" ></subscriber-only-badge> 3197 </div> 3198 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3199 <a href="/dairy/management/dairy-management-wintering-options-fertiliser-and-slurry-deadlines-933489"> 3200 Dairy Management: wintering options, fertiliser and slurry deadlines </a> 3201 </h2> 3202 </div> 3203 </div> 3204 </article> 3205 </div> 3206 3207 <!-- news 3 --> 3208 3209 3210 3211 <div class="sm:w-full md-border-right md:pr-3 desktop-image-container mt-4 pt-1 border-t border-gray-300 md:border-t-0 md:mt-0 md:pt-0"> 3212 <article class="news-item flex flex-col h-full"> 3213 <a href="/news/news/meps-reject-emergency-brake-for-eu-carbon-tax-on-fertiliser-imports-933148"> 3214 <picture class="hidden md:block"> 3215 <source media="(min-width: 1024px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/148/2610465-933148.jpg"> 3216 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/148/2610465-933148.jpg" alt="MEPs reject emergency brake for EU carbon tax on fertiliser imports" class="w-full h-[170px] object-cover"> 3217 </picture> 3218 </a> 3219 <div class="flex flex-col justify-between"> 3220 <div> 3221 <div class="flex justify-between items-center">
3222 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3223 <a class='my-font-roboto-medium' href='/farming-news/news/53'>NEWS</a> </span> 3224 <subscriber-only-badge paper-code="" user-type="" article-type="1" ></subscriber-only-badge> 3225 </div> 3226 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3227 <a href="/news/news/meps-reject-emergency-brake-for-eu-carbon-tax-on-fertiliser-imports-933148"> 3228 MEPs reject emergency brake for EU carbon tax on fertiliser imports </a> 3229 </h2> 3230 </div> 3231 </div> 3232 </article> 3233 </div> 3234 3235 <div class="sm:w-full desktop-image-container mt-4 pt-1 border-t border-gray-300 md:border-t-0 md:mt-0 md:pt-0 md:pr-5"> 3236 <article class="news-item flex flex-col h-full"> 3237 <a href="/news/news/enough-money-in-food-chain-to-pass-more-back-to-farmers-kenny-932985"> 3238 <picture class="hidden md:block"> 3239 <source media="(min-width: 1024px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/932/985/2610115-932985.jpg"> 3240 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/932/985/2610115-932985.jpg" alt="Enough money in food chain to pass more back to farmers - Kenny" class="w-full h-[170px] object-cover"> 3241 </picture> 3242 </a> 3243 <div class="flex flex-col justify-between"> 3244 <div> 3245 <div class="flex justify-between items-center"> 3246 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3247 <a class='my-font-roboto-medium' href='/farming-news/news/53'>NEWS</a> </span> 3248 <subscriber-only-badge paper-code="" user-type="" article-type="2" ></subscriber-only-badge> 3249 </div> 3250 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3251 <a href="/news/news/enough-money-in-food-chain-to-pass-more-back-to-farmers-kenny-932985"> 3252 Enough money in food chain to pass more back to farmers - Kenny </a> 3253 </h2> 3254 </div> 3255 </div> 3256 </article> 3257 </div> 3258 </div> 3259 </div> 3260 3261 3262 </div> 3263</main></div> 3264 3265 3266 3267 3268 3269 3270 <div class="position3C w-full md:w-3/12"> 3271 3272 3273 3274 3275 3276 3277 3278 <div class="news-item pt-4 md:pt-0 border-t border-gray-300 md:border-t-0 md:border-gray-300-0 md:pl-2"> 3279 <h2 class="flex items-center space-x-2"> 3280 <div class="my-red-square my-main-bg-color"></div> 3281 <span class="my-text-color-gray-1 text-sm my-font-roboto-medium">MOST READ STORIES</span> 3282 </h2> 3283 <div class="mt-3"> 3284 <div class="flex items-center pb-[0.5rem]"> 3285 <span class="text-gray-400 text-4xl font-bold self-start my-font-coranto-bold text-[2.1875rem]">1</span> 3286 <a href="/news/news/almost-60-of-farmers-opposed-to-planned-abolition-of-entitlements-933419" class="my-font-coranto-2-headline-regular"> 3287 <p class="text-base ml-2 most-read--article-title">Almost 60% of farmers opposed to planned abolition of entitlements</p> 3288 </a> 3289 </div> 3290 <div class="flex items-center border-t pb-[0.5rem] pt-[0.5rem]">
3291 <span class="text-gray-400 text-4xl font-bold self-start my-font-coranto-bold text-[2.1875rem]">2</span> 3292 <a href="/high-court-dismisses-challenge-to-442-acre-cork-solar-farm-933831" class="my-font-coranto-2-headline-regular"> 3293 <p class="text-base ml-2 most-read--article-title">High Court dismisses challenge to 442-acre Cork solar farm</p> 3294 </a> 3295 </div> 3296 <div class="flex items-center border-t pb-[0.5rem] pt-[0.5rem]"> 3297 <span class="text-gray-400 text-4xl font-bold self-start my-font-coranto-bold text-[2.1875rem]">3</span> 3298 <a href="/news/news/new-farmer-funds-and-extra-scheme-places-promised-as-nature-plan-drafted-933341" class="my-font-coranto-2-headline-regular"> 3299 <p class="text-base ml-2 most-read--article-title">New farmer funds and extra scheme places promised as nature plan drafted</p> 3300 </a> 3301 </div> 3302 <div class="flex items-center border-t pb-[0.5rem] pt-[0.5rem]"> 3303 <span class="text-gray-400 text-4xl font-bold self-start my-font-coranto-bold text-[2.1875rem]">4</span> 3304 <a href="/wexford-farmland-makes-29-000-acre-933938" class="my-font-coranto-2-headline-regular"> 3305 <p class="text-base ml-2 most-read--article-title">Wexford farmland makes â¬29,000/acre</p> 3306 </a> 3307 </div> 3308 <div class="flex items-center border-t pt-[0.5rem]"> 3309 <span class="text-gray-400 text-4xl font-bold self-start my-font-coranto-bold text-[2.1875rem]">5</span> 3310 <a href="/news/news/fuel-support-scheme-extended-for-farmers-as-ifa-demands-immediate-payment-934167" class="my-font-coranto-2-headline-regular"> 3311 <p class="text-base ml-2 most-read--article-title">Fuel support scheme extended for farmers as IFA demands immediate payment</p> 3312 </a> 3313 </div> 3314 </div> 3315 </div> 3316 3317 3318 3319 3320 3321 3322 <div id="article-farmersmarket-embed-code" class="col-md-3 no-lr-padding-col pt-4" data-swiftype-index="false" style="margin-top: -10px; margin-bottom: -75px;" > <!-- style="margin-top: 190px" --> 3323 <style type="text/css"> 3324 .container__sm { 3325 padding-left: 0px !important; 3326 padding-right: 0px !important; 3327 } 3328 </style> 3329 3330 <div class="component-container"> 3331 <object id="farmersmarket-embed-code" data="/farmersmarket_embed/farmersmarket-embed-code-by-category.php" frameborder="0" style="width: 100%;width: 112%; height: 700px; margin-left: -22px;" type="text/html"> </object> 3332 </div> 3333 </div> 3334 3335 3336 3337 3338 <div class="mt-8"><!-- hidden md:block --> 3339 3340 3341 3342 <div class="gadvertisementheader px-2 py-1"> 3343 <div class="mx-auto text-center"> 3344 <span class=" my-font-roboto-regular text-[0.625rem] my-text-color-gray-1 text-center">ADVERTISEMENT</span> 3345 3346 3347<div class='table-center'> 3348 3349 3350<!-- /144848334/new2025-articlepage-desktop-stickysidebar-300x250 --> 3351<div id='div-gpt-ad-1753367278366-0' style='min-width: 300px; min-height: 250px;'> 3352
3352<script> 3353 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1753367278366-0'); }); 3354 </script>
3354 3355</div> 3356 3357</div> 3358 3359 </div> 3360 </div> 3361 3362 3363 3364 3365 3366 </div> 3367 3368 3369 3370 </div> 3371</div> 3372<!-- line 3 --> 3373 3374 3375<!-- line 4 --> 3376<div class="line4 flex flex flex-wrap order-4"> 3377 <div class=" text-white text-center py-2 mx-auto"> 3378 3379 <div class="hidden md:block" > 3380 3381 3382 3383 3384<div class='table-center gadvertisementheader px-2 py-1'> 3385 <div class='my-font-roboto-regular text-[0.625rem] my-text-color-gray-1 text-center w-full'>ADVERTISEMENT</div> 3386 3387 3388<div class='table-center'> 3389 3390 3391<!-- /144848334/new2025-articlepage-desktop-bannerunderarticle-970x250 --> 3392<div id='div-gpt-ad-1753367222147-0' style='min-width: 970px; min-height: 250px;'> 3393
3393<script> 3394 googletag.cmd.push(function() { googletag.display('div-gpt-ad-1753367222147-0'); }); 3395 </script>
3395 3396</div> 3397 3398 3399</div> 3400 3401</div> 3402 3403 3404 3405 3406 3407 3408 3409 </div> 3410 </div> 3411</div> 3412<!-- line 4 --> 3413 3414 3415 3416<!-- line 5 related stories desktop--> 3417 3418 3419<div class='hidden md:block line-5 flex flex-wrap order-5 data-swiftype-index='false''><!-- component related-stories.php --> 3420<main class="container w-full md:max-w-[1280px] mx-auto pr-2 pl-2 md:pr-4 md:pl-4 md:pr-0 md:pl-0 mt-8 pb-2 bg-white"> 3421 <div class="grid grid-cols-1 md:grid-cols-4 md:gap-3 border-t-4 border-gray-300 pt-4 md:pt-4"> 3422 3423 <div class="col-span-4 "> <!--Div A1--> 3424 <div class="section-title"> 3425 <article class="news-item flex flex-col"> <!-- h-full --> 3426 <h2 class="flex space-x-2"> 3427 <div class="my-red-square my-main-bg-color"></div> 3428 <span class="my-text-color-gray-1 text-sm my-font-roboto-medium pb-2 uppercase"><a href="#">Related Stories</a> <span class="my-main-color">»</span></span> 3429 </h2> 3430 </article> 3431 </div> 3432 3433 <div class="grid grid-cols-1 md:grid-cols-4 md:gap-8"> 3434 3435 <!-- news 1 --> 3436 <div class="md:mb-0 sm:w-full md-border-right md:pr-3 desktop-image-container"> 3437 <article class="news-item flex flex-col h-full"> 3438 3439 <a href="/beef/management/beef-management-closing-paddocks-nutrient-application-and-ration-composition-933895"> 3440 <picture> 3441 <source media="(min-width: 0px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/895/2613580-933895.jpg"> 3442 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/895/2613580-933895.jpg" alt="Beef management: closing paddocks, nutrient application and ration composition " class="w-full h-[170px] object-cover"> 3443 </picture> 3444 </a> 3445 3446 <div class="flex flex-col justify-between"> 3447 <div> 3448 <div class="flex justify-between items-center"> 3449 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3450 <a class='my-font-roboto-medium' href='/farming-news/beef/54'>BEEF</a> </span> 3451 <a href='/subscribe.php' target='_blank' class='ifj-padlock'><div class='p-0.5 w-fit'><img src='https://d3mdtxxgfz6upn.cloudfront.net/images/padlock-green.png' class='h-3 min-w-[0.625rem]'></div></a> </div> 3452 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3453 <a href="/beef/management/beef-management-closing-paddocks-nutrient-application-and-ration-composition-933895"> 3454 Beef management: closing paddocks, nutrient application and ration composition </a> 3455 </h2> 3456 </div> 3457 </div> 3458 </article> 3459 </div> 3460 3461 <!-- news 2 --> 3462 <div class="sm:w-full md-border-right md:pr-3 desktop-image-container mt-4 pt-1 border-t border-gray-300 md:border-t-0 md:mt-0 md:pt-0"> 3463 <article class="news-item flex flex-col h-full"> 3464 <a href="/dairy/management/dairy-management-wintering-options-fertiliser-and-slurry-deadlines-933489"> 3465 <picture class="hidden md:block"> 3466 <source media="(min-width: 1024px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/489/2613519-933489.jpg"> 3467 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/489/2613519-933489.jpg" alt="Dairy Management: wintering options, fertiliser and slurry deadlines" class="w-full h-[170px] object-cover"> 3468 </picture> 3469 </a> 3470 3471 <div class="flex flex-col justify-between"> 3472 <div> 3473 <div class="flex justify-between items-center">
3474 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3475 <a class='my-font-roboto-medium' href='/farming-news/dairy/55'>DAIRY</a> </span> 3476 <subscriber-only-badge paper-code="" user-type="" article-type="0" ></subscriber-only-badge> 3477 </div> 3478 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3479 <a href="/dairy/management/dairy-management-wintering-options-fertiliser-and-slurry-deadlines-933489"> 3480 Dairy Management: wintering options, fertiliser and slurry deadlines </a> 3481 </h2> 3482 </div> 3483 </div> 3484 </article> 3485 </div> 3486 3487 <!-- news 3 --> 3488 3489 3490 3491 <div class="sm:w-full md-border-right md:pr-3 desktop-image-container mt-4 pt-1 border-t border-gray-300 md:border-t-0 md:mt-0 md:pt-0"> 3492 <article class="news-item flex flex-col h-full"> 3493 <a href="/news/news/meps-reject-emergency-brake-for-eu-carbon-tax-on-fertiliser-imports-933148"> 3494 <picture class="hidden md:block"> 3495 <source media="(min-width: 1024px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/148/2610465-933148.jpg"> 3496 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/933/148/2610465-933148.jpg" alt="MEPs reject emergency brake for EU carbon tax on fertiliser imports" class="w-full h-[170px] object-cover"> 3497 </picture> 3498 </a> 3499 <div class="flex flex-col justify-between"> 3500 <div> 3501 <div class="flex justify-between items-center"> 3502 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3503 <a class='my-font-roboto-medium' href='/farming-news/news/53'>NEWS</a> </span> 3504 <subscriber-only-badge paper-code="" user-type="" article-type="1" ></subscriber-only-badge> 3505 </div> 3506 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3507 <a href="/news/news/meps-reject-emergency-brake-for-eu-carbon-tax-on-fertiliser-imports-933148"> 3508 MEPs reject emergency brake for EU carbon tax on fertiliser imports </a> 3509 </h2> 3510 </div> 3511 </div> 3512 </article> 3513 </div> 3514 3515 <div class="sm:w-full desktop-image-container mt-4 pt-1 border-t border-gray-300 md:border-t-0 md:mt-0 md:pt-0 md:pr-5"> 3516 <article class="news-item flex flex-col h-full"> 3517 <a href="/news/news/enough-money-in-food-chain-to-pass-more-back-to-farmers-kenny-932985"> 3518 <picture class="hidden md:block"> 3519 <source media="(min-width: 1024px)" srcset="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/932/985/2610115-932985.jpg"> 3520 <img src="https://s3-eu-west-1.amazonaws.com/ifj/WEBFILES/000/932/985/2610115-932985.jpg" alt="Enough money in food chain to pass more back to farmers - Kenny" class="w-full h-[170px] object-cover"> 3521 </picture> 3522 </a> 3523 <div class="flex flex-col justify-between"> 3524 <div> 3525 <div class="flex justify-between items-center">
3526 <span class="my-text-color-gray-1 pt-2 my-font-14-px my-font-roboto-medium uppercase"> 3527 <a class='my-font-roboto-medium' href='/farming-news/news/53'>NEWS</a> </span> 3528 <subscriber-only-badge paper-code="" user-type="" article-type="2" ></subscriber-only-badge> 3529 </div> 3530 <h2 class="my-font-coranto-bold text-xl md:text-2xl mt-2 component-article-title"> 3531 <a href="/news/news/enough-money-in-food-chain-to-pass-more-back-to-farmers-kenny-932985"> 3532 Enough money in food chain to pass more back to farmers - Kenny </a> 3533 </h2> 3534 </div> 3535 </div> 3536 </article> 3537 </div> 3538 </div> 3539 </div> 3540 3541 3542 </div> 3543</main></div> 3544 3545 3546 3547 3548 3549</main> 3550<!-- body tailwind ends --> 3551<!-- body tailwind ends --> 3552<!-- body tailwind ends --> 3553<!-- body tailwind ends --> 3554<!-- body tailwind ends --> 3555 3556 3557 3558 <input style="display:none" id="offset" type="text" value="1" /> 3559 3560 3561 3562 3563 3564 3565 3566 3567 3568 3569 3570 3571 <style> 3572 /* Estilo para mobile */ 3573 @media (max-width: 767px) { 3574 .footer-category { 3575 position: relative; 3576 padding: 10px 0; 3577 border-bottom: 1px solid #ccc; 3578 cursor: pointer; 3579 } 3580 .footer-category.active { 3581 border-bottom: none; /* Remove a linha quando a categoria está expandida */ 3582 padding-bottom: 0px; 3583 } 3584 .footer-category::after { 3585 content: '\25BC'; /* Seta para baixo */ 3586 position: absolute; 3587 right: 0; 3588 top: 50%; 3589 transform: translateY(-50%); 3590 font-size: 0.575rem; 3591 color: #fff; 3592 } 3593 .footer-category.active::after { 3594 content: '\25B2'; /* Seta para cima */ 3595 } 3596 .footer-dropdown { 3597 display: none; 3598 } 3599 .footer-dropdown.active { 3600 display: block; 3601 } 3602 .access-channel { 3603 color: #fff; /* Cor branca para o item "Access this channel" */ 3604 } 3605 3606 /* Itens menores no mobile */ 3607 .footer-small-links { 3608 display: grid; 3609 grid-template-columns: 1fr 1fr; 3610 grid-column-gap: 20px; /* Espaço entre as colunas */ 3611 grid-row-gap: 10px; /* Espaço entre as linhas */ 3612 padding-top: 20px; 3613 margin: 0 auto; /* Centralizar o conteúdo */ 3614 max-width: 320px; /* Limitar a largura para centralizar */ 3615 } 3616 .footer-small-links a { 3617 text-align: left; 3618 color: #ccc; /* Cor cinza claro */ 3619 font-size: 12px; 3620 } 3621 .footer-small-links .footer-last-item { 3622 grid-column: 1 / -1; /* Ocupa toda a largura */ 3623 text-align: center; 3624 padding-top: 10px; 3625 } 3626 } 3627 3628 /* Estilo para desktop (min-width: 768px) */ 3629 @media (min-width: 768px) { 3630 .footer-dropdown { 3631 display: block !important; /* Sempre mostrar os sub-itens no desktop */ 3632 } 3633 .footer-category { 3634 padding: 0; /* Remover padding e borda no desktop */ 3635 border: none; 3636 cursor: default; 3637 } 3638 .footer-category::after { 3639 content: none; /* Remover a seta no desktop */ 3640 } 3641 .access-channel { 3642 display: none; /* Não exibir "Access this channel" no desktop */ 3643 } 3644 3645 /* Itens menores no desktop */ 3646 .footer-small-links { 3647 display: flex; 3648 flex-wrap: wrap; 3649 justify-content: flex-start; /* Alinhar à esquerda */ 3650 padding-top: 20px; 3651 } 3652 .footer-small-links a { 3653 margin-right: 15px; 3654 color: #ccc; /* Cor cinza claro */ 3655 font-size: 12px; 3656 text-decoration: none; 3657 } 3658 .footer-small-links .footer-last-item { 3659 margin-left: auto; 3660 text-align: right; 3661 } 3662 } 3663 </style> 3664 3665 3666 3667 3668 3669 3670 3671 3672<div class="my-custom-bg-gray my-border-top mt-4 h-fit"> 3673 <div class="container w-full md:max-w-[1280px] mx-auto"> 3674 <!-- Price Bar --> 3675 <div class="flex justify-start items-center h-full"> 3676 3677 <footer class="my-custom-bg-gray text-white py-2 md:py-8 w-full md:max-w-[1280px]"> 3678 <div class="container mx-auto px-4 md:px-0"> 3679 <div class="flex flex-wrap -mx-4"> 3680 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3681 3682 3683 3684 3685 3686 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3687 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt
3687-5 mb-5 md:mt-0 md:mb-0"></div> NEWS <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3688 </a> 3689 3690 3691 3692 3693 3694 3695 3696 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3697 <li><a href="/latestheadlines" class="block py-3 text-sm">Latest headlines</a></li> 3698 <li><a href="/farm/schemes/282" class="block py-3 text-sm">Schemes</a></li> 3699 <li><a href="/farm/industry-opinion/279" class="block py-3 text-sm">Viewpoints</a></li> 3700 <li><a href="/farming-news/northern-ireland/321" class="block py-3 text-sm">Northern Ireland</a></li> 3701 <li><a href="/farm/farmer-writes/281" class="block py-3 text-sm">Farmer Writes</a></li> 3702 <li><a href="/farm/the-dealer/280" class="block py-3 text-sm">The Dealer</a></li> 3703 <li><a href="/farm/advertisersanouncements/595" class="block py-3 text-sm">Sponsored</a></li> 3704 </ul> 3705 </div> 3706 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3707 3708 3709 3710 3711 3712 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3713 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt-5 mb-5 md:mt-0 md:mb-0"></div> LIVESTOCK <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3714 </a> 3715 3716 3717 3718 3719 3720 3721 3722 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3723 <li><a href="/tag/Mart-reports" class="block py-3 text-sm">Mart reports</a></li> 3724 <li><a href="/farming-news/beef/54" class="block py-3 text-sm">Beef</a></li> 3725 <li><a href="/farming-news/dairy/55" class="block py-3 text-sm">Dairy</a></li> 3726 <li><a href="/farming-news/sheep/56" class="block py-3 text-sm">Sheep</a></li> 3727 <li><a href="/farm/pedigree/320" class="block py-3 text-sm">Pedigree</a></li> 3728 <li><a href="/tag/Animal-health" class="block py-3 text-sm">Animal health</a></li> 3729 </ul> 3730 </div> 3731 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3732 3733 3734 3735 3736 3737 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3738 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt-5 mb-5 md:mt-0 md:mb-0"></div> SECTORS <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3739 </a> 3740 3741 3742 3743 3744 3745 3746 3747 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3748 <li><a href="/farming-news/agribusiness/58" class="block py-3 text-sm">Agribusiness</a></li> 3749 <li><a href="/farm/tillage/57" class="block py-3 text-sm">Tillage</a></li> 3750 <li><a href="/farming-news/machinery/59" class="block py-3 text-sm">Machinery</a></li> 3751 <li><a href="/tag/Renewables" class="block py-3 text-sm">Renewables</a></li> 3752 <li><a href="/farm/property/76" class="block py-3 text-sm">Property</a></li> 3753 <li><a href="/farm/buildings/315" class="block py-3 text-sm">Buildings</a></li> 3754 <li><a href="/tag/Climate-and-environment" class="block py-3 text-sm">Climate & environment</a></li> 3755 <li><a href="/farm/forestry/316" class="block py-3 text-sm">Forestry</a></li> 3756 </ul> 3757 </div> 3758 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3759 3760 3761 3762 3763 3764 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3765 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt
3765-5 mb-5 md:mt-0 md:mb-0"></div> IRISH COUNTRY LIVING <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3766 </a> 3767 3768 3769 3770 3771 3772 3773 3774 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3775 <li><a href="/farm/life/70" class="block py-3 text-sm">Features</a></li> 3776 <li><a href="/farm/comment/74" class="block py-3 text-sm">Columns</a></li> 3777 <li><a href="/farm/life/70" class="block py-3 text-sm">Lifestyle</a></li> 3778 </ul> 3779 </div> 3780 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3781 3782 3783 3784 3785 3786 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3787 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt-5 mb-5 md:mt-0 md:mb-0"></div> FARM PROGRAMMES <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3788 </a> 3789 3790 3791 3792 3793 3794 3795 3796 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3797 <li><a href="/farm/tullamore-farm/642" class="block py-3 text-sm">Tullamore Farm</a></li> 3798 <li><a href="/farmprogrammes/footprintfarmers/9999641" class="block py-3 text-sm">Footprint Farmers</a></li> 3799 </ul> 3800 </div> 3801 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3802 3803 3804 3805 3806 3807 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3808 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt-5 mb-5 md:mt-0 md:mb-0"></div> HUBS <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3809 </a> 3810 3811 3812 3813 3814 3815 3816 3817 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3818 <li><a href="/hub/knowledge" class="block py-3 text-sm">Knowledge Hub</a></li> 3819 <li><a href="/hub/schools" class="block py-3 text-sm">Schools Hub</a></li> 3820 <li><a href="/hub/young-stock" class="block py-3 text-sm">Young Stock Hub</a></li> 3821 <li><a href="/videohub" class="block py-3 text-sm">Video Hub</a></li> 3822 </ul> 3823 </div> 3824 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3825 3826 3827 3828 3829 3830 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3831 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt-5 mb-5 md:mt-0 md:mb-0"></div> BUSINESS OF FARMING <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3832 </a> 3833 3834 3835 3836 3837 3838 3839 3840 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3841 <li>
3841<a href="/martwatch" class="block py-3 text-sm">Martwatch</a></li> 3842 <li><a href="/tag/Business-of-Farming" class="block py-3 text-sm">Mart & Factory Prices</a></li> 3843 </ul> 3844 </div> 3845 <div class="w-full sm:w-1/2 md:w-1/3 lg:w-1/5 px-4 md:mb-4"> 3846 3847 3848 3849 3850 3851 <a href="#" class="text-sm my-font-roboto-medium footer-category flex items-center"> 3852 <div class="my-red-square-8-8 my-main-bg-color mr-2 mt-5 mb-5 md:mt-0 md:mb-0"></div> MULTIMEDIA <!-- mt-4 mb-4 md:mt-0 md:mb-0 setup the footer height --> 3853 </a> 3854 3855 3856 3857 3858 3859 3860 3861 <ul class="footer-dropdown md:mt-2 mb-6 md:mb-0"> 3862 <li><a href="/my-podcasts" class="block py-3 text-sm">Podcasts</a></li> 3863 <li><a href="/farm/video/651" class="block py-3 text-sm">Videos</a></li> 3864 <li><a href="/tag/In-pictures" class="block py-3 text-sm">Photography</a></li> 3865 </ul> 3866 </div> 3867 </div> 3868 <div class="footer-small-links text-gray-400 text-xs mt-8"> 3869 3870 <a href="/information/contact-us/150935">Contact us</a> 3871 <a href="/mediakit.php">Advertise with us</a> 3872 <a href="/information/company-information/150940">Company information</a> 3873 <a href="/information/careers/152746">Career opportunities</a> 3874 <a href="/information/privacy-policy/150948">Privacy statement</a> 3875 <a href="/information/terms-of-service/150950">Terms of service</a> 3876 <a href="/information/commenting-policy/155484">Commenting policy</a> 3877 <a class="ot-sdk-show-settings">Cookie Settings</a> 3878 <a href="https://s3-eu-west-1.amazonaws.com/ifj/pdf/The-Agricultural-Trust--Gender-Pay-Gap-Report.pdf">Gender Pay Gap report</a> 3879 <a href="/ttpa/">TTPA</a> 3880 <div class="footer-last-item">© Irish Farmers Journal 2026</div> 3881 3882 3883 </div> 3884 </div> 3885 </footer> 3886 3887 </div> 3888 </div> 3889</div> 3890 3891 3892 3893 3894 3895
3895<script> 3896 // Script para gerenciar a expansão dos sub-itens no mobile 3897 $(document).ready(function() { 3898 $('.footer-category').click(function() { 3899 if (window.innerWidth < 768) { // mobile 3900 e.preventDefault(); 3901 $(this).next('.footer-dropdown').toggleClass('active'); 3902 $(this).toggleClass('active'); // Alterna a seta para cima/baixo e a linha 3903 } 3904 }); 3905 }); 3906 3907 3908 3909 3910 3911 3912 3913 3914$(document).ready(function() { 3915 // Remover href="#" em mobile para evitar problemas de scroll 3916 if (window.innerWidth < 768) { 3917 $('.footer-category').each(function() { 3918 $(this).attr('href', '#'); 3919 $(this).off('click').on('click', function(e) { 3920 e.preventDefault(); // Previne o comportamento padrão do link 3921 $(this).next('.footer-dropdown').toggleClass('active'); 3922 $(this).toggleClass('active'); // Alterna a seta para cima/baixo e a linha 3923 }); 3924 }); 3925 } 3926}); 3927 3928 3929 </script>
3929 3930 3931 3932
3932<script src="https://www.farmersjournal.ie/2024-files/js/main.js" defer></script>
vendor: 2 bytes, line 3932
3932
3933<script src="https://www.farmersjournal.ie/js/js.cookie.js" defer></script>
vendor: 2 bytes, line 3933
3933
3934<script src="https://www.farmersjournal.ie/js/ifj.js" defer></script>
vendor: 2 bytes, line 3934
3934
3935<script src="https://www.farmersjournal.ie/js/crypto.js" defer></script>
3935 3936 3937
3938<script> 3939 function isElementTrulyEmpty(el) { 3940 const tag = el.tagName.toLowerCase(); 3941 3942 // Ignore
3942<script> 3943 if (tag === 'script') return true; 3944 3945 // Ignore <div> with empty content (only spaces or nothing) 3946 if (tag === 'div') { 3947 const text = el.textContent.trim(); 3948 const noRealChildren = Array.from(el.children).length === 0; 3949 return text === '' && noRealChildren; 3950 } 3951 3952 return false; // any other element is considered "real" 3953 } 3954 3955 function isTableCenterEmpty(tableCenterEl) { 3956 return Array.from(tableCenterEl.querySelectorAll(':scope > *')).every(child => { 3957 // Check direct children of .table-center 3958 return isElementTrulyEmpty(child) || 3959 Array.from(child.children).every(grandchild => isElementTrulyEmpty(grandchild)); 3960 }); 3961 } 3962 3963 /*function hideEmptyAdContainers() { 3964 document.querySelectorAll('.table-center').forEach(function (el) { 3965 if (isTableCenterEmpty(el)) { 3966 const container = el.closest('.container'); 3967 if (container && !container.classList.contains('hidden')) { 3968 container.classList.add('hidden'); 3969 } 3970 } 3971 }); 3972 } 3973 3974 window.addEventListener('load', function () { 3975 hideEmptyAdContainers(); 3976 3977 const observer = new MutationObserver(hideEmptyAdContainers); 3978 3979 observer.observe(document.body, { 3980 childList: true, 3981 subtree: true 3982 }); 3983 3984 // Fix for ads that load way later 3985 for (let i = 1; i <= 10; i++) { 3986 setTimeout(hideEmptyAdContainers, i * 500); 3987 } 3988 });*/ 3989</script>
3989 3990 3991 3992 3993 3994 3995 3996 3997 3998 3999 4000 4001 4002<!-- Login Modal --> 4003<div id="loginModal" class="fixed inset-0 bg-gray-800 bg-opacity-50 flex items-center justify-center hidden" style="z-index: 100;"> <!-- Classe 'hidden' inicialmente --> 4004 <div class="bg-red-600 p-6 rounded-lg shadow-lg relative w-96"> 4005 4006 <button class="absolute top-2 right-2 text-white hover:text-gray-200 text-lg scale-150 p-2" onclick="closeLoginModal()"> 4007 <span class="material-icons">close</span> 4008 </button> 4009 <h2 class="text-white my-font-coranto-bold text-3xl md:text-5xl font-bold mb-4 mt-4 text-center">Sign in</h2> 4010 4011 <form> 4012 <div class="mb-4"> 4013 <label for="email" class="block text-white text-md mb-2">Email address</label> 4014 <input id="email-main" type="email" class="w-full px-3 py-2 rounded bg-gray-100 border border-gray-300 focus:outline-none focus:ring-2 focus:ring-yellow-500" placeholder="Enter your email"> 4015 </div> 4016 4017 <div class="mb-6"> 4018 <label for="password" class="block text-white text-md mb-2">Password</label> 4019 <div class="relative EYE_PSW__password-wrapper"> 4020 <input id="password-main" type="password" class="w-full px-3 py-2 rounded bg-gray-100 border border-gray-300 focus:outline-none focus:ring-2 focus:ring-yellow-500 EYE_PSW__password-toggle-input" placeholder="Enter your password"> 4021 <button 4022 type="button" 4023 class="absolute inset-y-0 right-0 flex items-center pr-3 text-gray-400 hover:text-gray-600 EYE_PSW__toggle-password-visibility" 4024 tabindex="-1" 4025 > 4026 <svg class="EYE_PSW__eye-icon h-5 w-5" xmlns="http://www.w3.org/2000/svg" fill="none"
4027 viewBox="0 0 24 24" stroke="currentColor"> 4028 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 4029 d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" /> 4030 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 4031 d="M2.458 12C3.732 7.943 7.523 5 12 5c4.478 0 8.268 2.943 9.542 7-1.274 4.057-5.064 7-9.542 7-4.477 0-8.268-2.943-9.542-7z" /> 4032 </svg> 4033 </button> 4034 </div> 4035 </div> 4036 4037 4038 4039 4040 4041 4042 4043 4044 4045 4046 4047 4048 4049 4050 4051 4052 4053 4054 4055 4056 4057 4058 <button type="submit" class="w-full bg-teal-500 text-white font-bold py-2 px-4 rounded focus:outline-none login-btn-emailmain text-md">SIGN IN</button> 4059 </form> 4060 4061 <div class="flex justify-between items-center mt-4"> 4062 <a href="#" class="text-gray-300 text-white bg-gray-600 font-bold py-1 px-4 rounded reset-password-2024">RESET PASSWORD</a> 4063 <a href="/subscribe.php" class="my-bg-color-yellow-1 text-black font-bold py-1 px-4 rounded">SUBSCRIBE</a> 4064 </div> 4065 4066 <p class="text-gray-300 text-sm mt-4"> 4067 If you would like to speak to a member of our team, please call us on <strong>01-4199525</strong>. 4068 </p> 4069 </div> 4070</div> 4071 4072
4073<script> 4074 4075 function openLoginModal() { 4076 $('#loginModal').removeClass('hidden'); 4077 4078 if ($('#sidebar').css('display') === 'block') { 4079 // Simula um clique no botão de hambúrguer 4080 $('#mobile-hamburger-btn').trigger('click'); 4081 } 4082 } 4083 4084 4085 4086 4087 function closeLoginModal() { 4088 $('#loginModal').addClass('hidden'); 4089 } 4090 4091 4092 $(document).on('click', '.link-login-btn-2024', function() { 4093 openLoginModal(); 4094 }); 4095 4096 4097 4098 $(document).on('click', '.reset-password-2024', function() { 4099 closeLoginModal(); 4100 openForgotModal(); 4101 }); 4102 4103 4104 4105</script>
4105 4106 4107 4108 4109 4110 4111 4112 4113 4114 4115<!-- Reset Password Modal --> 4116<div id="resetPasswordModal" class="fixed inset-0 bg-gray-800 bg-opacity-50 flex items-center justify-center hidden"> <!-- Classe 'hidden' inicialmente --> 4117 <div class="bg-red-600 p-6 rounded-lg shadow-lg relative w-96"> 4118 4119 <button class="absolute top-2 right-2 text-white hover:text-gray-200 text-lg scale-150 p-2" onclick="closeForgotModal()"> 4120 <span class="material-icons">close</span> 4121 </button> 4122 <h2 class="text-white my-font-coranto-bold text-3xl md:text-5xl font-bold mb-4 mt-4 text-center">Reset Password</h2> 4123 4124 <form> 4125 4126 <div class="mb-6"> 4127 <label for="email" class="block text-white text-md mb-2">Please enter your email address and we will send you a link to reset your password</label> 4128 <input id="email-forgot" type="email" class="w-full px-3 py-2 rounded bg-gray-100 border border-gray-300 focus:outline-none focus:ring-2 focus:ring-yellow-500" placeholder="Enter your email"> 4129 </div> 4130 4131 <div class="flex justify-center"> 4132 <img id="forgotten-password-btn" src="https://d3mdtxxgfz6upn.cloudfront.net/images/btn_circle_right_green.png" class="cursor-pointer"> 4133 </div> 4134 </form> 4135 4136 4137 <p class="text-gray-300 text-sm mt-4"> 4138 If you would like to speak to a member of our team, please call us on <strong>01-4199525</strong>. 4139 </p> 4140 </div> 4141</div> 4142
4143<script type="text/javascript"> 4144 4145 4146 4147 function openForgotModal() { 4148 $('#resetPasswordModal').removeClass('hidden'); 4149 4150 4151 } 4152 4153 4154 4155 4156 function closeForgotModal() { 4157 $('#resetPasswordModal').addClass('hidden'); 4158 } 4159 4160 4161 4162 4163 4164 4165 4166 4167 4168 4169 $('#forgotten-password-btn').on('click', function(){ 4170 event.preventDefault(); 4171 4172 if($('#email-forgot').val() == ""){ 4173 alert("Enter your email") 4174 $('#email-error').css("display", "block"); 4175 return false; 4176 } 4177 4178 4179 4180 4181 4182 4183 var email = sanitizeHTMLlogin($('#email-forgot').val()); 4184 4185 //var email = $('#email').val(); 4186 4187 var jstring = 'https://api.farmersjournal.ie/v1/membershipsettings/forgot.php?email=' + email; 4188 4189 console.log(jstring); 4190 $.getJSON(jstring, function (data) { 4191 4192 var registerresponse = data['fjapp'][0]['api'][0]['response']; 4193 4194 //alert(registerresponse) 4195 if(registerresponse=='done'){ 4196 4197 /* $('#modalSignInResetPassword').modal('hide'); 4198 $('#modalSignInResetPassword-ok').modal({backdrop: 'static', keyboard: false});*/ 4199 4200 openForgotModalEmailRecognized() 4201 4202 4203 4204 }else{ 4205 /*$('#modalSignInResetPassword').modal('hide'); 4206 $('#modalSignInResetPassword-failed').modal({backdrop: 'static', keyboard: false});*/ 4207 4208 //alert("Email address not recognised") 4209 openForgotModalEmailNotRecognized() 4210 4211 4212 } 4213 }); 4214 //} 4215 }); 4216 4217 4218 4219</script>
4219 4220 4221 4222 4223 4224 4225 4226 4227 4228<!-- Reset Password Modal | forgotModalEmailNotRecognized --> 4229<div id="forgotModalEmailNotRecognized" class="fixed inset-0 bg-gray-800 bg-opacity-50 flex items-center justify-center hidden"> <!-- Classe 'hidden' inicialmente --> 4230 <div class="bg-red-600 p-6 rounded-lg shadow-lg relative w-96"> 4231 4232 <button class="absolute top-2 right-2 text-white hover:text-gray-200 text-lg scale-150 p-2" onclick="closeForgotModalEmailNotRecognized()"> 4233 <span class="material-icons">close</span> 4234 </button> 4235 4236 4237 <div class="flex justify-center"> 4238 <img id="forgotten-password-btn" src="https://d3mdtxxgfz6upn.cloudfront.net/images/icon-black-failed.png" class="cursor-pointer"> 4239 </div> 4240 4241 4242 4243 4244 <h2 class="text-white my-font-coranto-bold text-3xl md:text-5xl font-bold mb-4 mt-4 text-center">Email address not recognised</h2> 4245 4246 4247 4248 <div class="mb-6"> 4249 <label for="email" class="block text-white text-md mb-2">There is no subscription associated with this email address. To read our subscriber-only content. Please subscribe or use the reader loyalty code.</label> 4250 </div> 4251 4252 4253 4254 <div class="flex justify-between items-center mt-4 text-xs"> 4255 <a href="#" class="text-gray-300 text-white bg-teal-500 font-bold py-1 px-4 rounded reset-password-2024" onclick="closeForgotModalEmailNotRecognized()">TRY AGAIN</a> 4256 <a href="#" class="text-gray-300 text-white bg-gray-600 font-bold py-1 px-4 rounded" onclick="openModalRedeemCode()">USE THE CODE</a> 4257 <a href="/subscribe.php" class="my-bg-color-yellow-1 text-black font-bold py-1 px-4 rounded">SUBSCRIBE</a> 4258 </div> 4259 4260 <p class="text-gray-300 text-sm mt-4"> 4261 If you would like to speak to a member of our team, please call us on <strong>01-4199525</strong>. 4262 </p> 4263 </div> 4264</div> 4265 4266
4267<script> 4268 4269 function openForgotModalEmailNotRecognized() { 4270 $('#resetPasswordModal').addClass('hidden'); 4271 $('#forgotModalEmailNotRecognized').removeClass('hidden'); 4272 4273 } 4274 4275 4276 4277 4278 function closeForgotModalEmailNotRecognized() { 4279 $('#forgotModalEmailNotRecognized').addClass('hidden'); 4280 } 4281</script>
4281 4282 4283 4284 4285 4286 4287 4288 4289 4290 4291<!-- Reset Password Modal | forgotModalEmailRecognized --> 4292<div id="forgotModalEmailRecognized" class="fixed inset-0 bg-gray-800 bg-opacity-50 flex items-center justify-center hidden"> <!-- Classe 'hidden' inicialmente --> 4293 <div class="bg-red-600 p-6 rounded-lg shadow-lg relative w-96"> 4294 4295 <button class="absolute top-2 right-2 text-white hover:text-gray-200 text-lg scale-150 p-2" onclick="closeForgotModalEmailRecognized()"> 4296 <span class="material-icons">close</span> 4297 </button> 4298 4299 4300 <h2 class="text-white my-font-coranto-bold text-3xl md:text-5xl font-bold mb-4 mt-4 text-center">Link sent to your email address</h2> 4301 4302 4303 <div class="flex justify-center"> 4304 <img id="forgotten-password-btn" src="https://d3mdtxxgfz6upn.cloudfront.net/images/icon-green-ok.png" class="cursor-pointer"> 4305 </div> 4306 4307 4308 <p class="text-gray-300 text-sm mt-4"> We have sent an email to your address. Please click on the link in this email to reset your password. If you can't find it in your inbox, please check your spam folder. If you can't find the email, please call us on <strong>01-4199525</strong>. 4309 </p> 4310 </div> 4311</div> 4312 4313
4314<script> 4315 4316 function openForgotModalEmailRecognized() { 4317 $('#resetPasswordModal').addClass('hidden'); 4318 $('#forgotModalEmailRecognized').removeClass('hidden'); 4319 4320 } 4321 4322 4323 4324 4325 function closeForgotModalEmailRecognized() { 4326 $('#forgotModalEmailRecognized').addClass('hidden'); 4327 } 4328 4329 4330</script>
4330 4331 4332 4333 4334 4335 4336 4337 4338 4339<!-- modalRedeemCode --> 4340 4341<style type="text/css"> 4342 4343.inputRedeemCode { 4344 color: #ffffff; 4345 border-top: 0px; 4346 border-left: 0px; 4347 border-right: 0px; 4348 border-bottom: 2px solid black; 4349 background-color: #da2128; 4350 margin: 2px; 4351 text-align: center; 4352 width: 30px; 4353 outline-color: transparent; 4354 outline-style: none; 4355} 4356 4357</style> 4358 4359 4360<!-- Reset Password Modal | modalRedeemCode --> 4361<div id="modalRedeemCode" class="fixed inset-0 bg-gray-800 bg-opacity-50 flex items-center justify-center hidden"> <!-- Classe 'hidden' inicialmente --> 4362 <div class="bg-red-600 p-6 rounded-lg shadow-lg relative w-[500px]"> 4363 4364 <button class="absolute top-2 right-2 text-white hover:text-gray-200 text-lg scale-150 p-2" onclick="closeModalRedeemCode()"> 4365 <span class="material-icons">close</span> 4366 </button> 4367 4368 4369 <div class="flex justify-center"> 4370 <img src="https://d3mdtxxgfz6upn.cloudfront.net/images/header-logo.png" class="cursor-pointer"> 4371 </div> 4372 4373 <h2 class="text-white my-font-coranto-bold text-2xl font-bold mb-4 mt-4 text-center">ENTER YOUR LOYALTY CODE:</h2> 4374 4375 <p style="text-align: center; padding:20px" class="smalltitle"> 4376 <input class="inputRedeemCode inputRedeemCode_1" id="inputRedeemCode_1" autocomplete="off" type="text" size="3" maxlength="1" name="inputRedeemCode_1" autofocus=""> 4377 <input class="inputRedeemCode inputRedeemCode_2" id="inputRedeemCode_2" autocomplete="off" type="text" size="3" maxlength="1" name="inputRedeemCode_2"> 4378 <input class="inputRedeemCode inputRedeemCode_3" id="inputRedeemCode_3" autocomplete="off" type="text" size="3" maxlength="1" name="inputRedeemCode_3"> 4379 <input class="inputRedeemCode inputRedeemCode_4" id="inputRedeemCode_4" autocomplete="off" type="text" size="3" maxlength="1" name="inputRedeemCode_4"> 4380 <input class="inputRedeemCode inputRedeemCode_5" id="inputRedeemCode_5" autocomplete="off" type="text" size="3" maxlength="1" name="inputRedeemCode_5"> 4381 <input class="inputRedeemCode inputRedeemCode_6" id="inputRedeemCode_6" autocomplete="off" type="text" size="3" maxlength="1" name="inputRedeemCode_6"> 4382 </p> 4383 4384 4385 <div class="flex justify-center"> 4386 <label class="redeem_code_btn_unlock"> 4387 <div class="bg-teal-500 text-white font-bold py-2 px-4 rounded focus:outline-none text-md cursor-pointer unlockbtncde" mtype="modalRedeemCode">UNLOCK</div> 4388 </label> 4389 </div> 4390 4391 4392 <p class="text-gray-300 text-sm mt-4"> The reader loyalty code gives you full access to the site from when you enter it until the following Wednesday at 9pm. Find your unique code on the back page of Irish Country Living every week. 4393 </p> 4394 </div> 4395</div> 4396
4397<script type="text/javascript"> 4398 function openModalRedeemCode() { 4399 $('#modalRedeemCode').removeClass('hidden'); 4400 4401 closeForgotModalEmailNotRecognized(); 4402 4403 } 4404 4405 4406 4407 4408 function closeModalRedeemCode() { 4409 $('#modalRedeemCode').addClass('hidden'); 4410 } 4411 4412 4413 4414 4415 $( document ).ready(function() { 4416 4417 4418 4419 4420 4421 $(document).keydown(function(e) {//simulate the click on enter press also here 4422 4423 4424 if ($("#modalRedeemCode").hasClass('in') && (e.keyCode == 13 || e.which == 13)) { 4425 //alert("Enter is pressed"); 4426 dounlockbtncde("modalRedeemCode"); 4427 } 4428 if ($("#modalRedeemCode_Declined").hasClass('in') && (e.keyCode == 13 || e.which == 13)) { 4429 //alert("Enter is pressed"); 4430 dounlockbtncde("modalRedeemCode_Declined"); 4431 } 4432 4433 4434 if( ($("#modalRedeemCode").hasClass('in') && (e.keyCode == 8 || e.which == 8)) || ($("#modalRedeemCode_Declined").hasClass('in') && (e.keyCode == 8 || e.which == 8)) ){ 4435 4436 $("input:focus").val(""); 4437 $("input:focus").prev().focus(); 4438 console.log($("input:focus")); 4439 } 4440 4441 4442 4443 4444 }); 4445 4446 4447 4448 4449 4450 4451 4452 4453 function dounlockbtncde(modalclicked){ 4454 4455 4456 if(modalclicked=='modalRedeemCode'){ 4457 var d1 = $('.inputRedeemCode_1').val(); 4458 var d2 = $('.inputRedeemCode_2').val(); 4459 var d3 = $('.inputRedeemCode_3').val(); 4460 var d4 = $('.inputRedeemCode_4').val(); 4461 var d5 = $('.inputRedeemCode_5').val(); 4462 var d6 = $('.inputRedeemCode_6').val(); 4463 var loyaltycode = d1 + d2 + d3 + d4 + d5 + d6; 4464 } 4465 4466 if(modalclicked=='modalRedeemCode_Declined'){ 4467 var d1 = $('.dinputRedeemCode_1').val(); 4468 var d2 = $('.dinputRedeemCode_2').val(); 4469 var d3 = $('.dinputRedeemCode_3').val(); 4470 var d4 = $('.dinputRedeemCode_4').val(); 4471 var d5 = $('.dinputRedeemCode_5').val(); 4472 var d6 = $('.dinputRedeemCode_6').val(); 4473 var loyaltycode = d1 + d2 + d3 + d4 + d5 + d6; 4474 } 4475 4476 var jstring = 'https://api.farmersjournal.ie/v1/codecoupon/code_login2019new.php?loyaltycode='+ loyaltycode; 4477 //alert(loyaltycode); 4478 $.getJSON(jstring, function (data) { 4479 4480 var lytresponse = data.fjapp[0].api[0]["loginresponse"]; 4481 var edsvalue = data.fjapp[0].api[0]["edsvalue"]; 4482 4483 4484 if(lytresponse=='decline'){ 4485 4486 $('#inputRedeemCode_1').val(""); 4487 $('#inputRedeemCode_2').val(""); 4488 $('#inputRedeemCode_3').val(""); 4489 $('#inputRedeemCode_4').val(""); 4490 $('#inputRedeemCode_5').val(""); 4491 $('#inputRedeemCode_6').val(""); 4492 4493 alert('Declined, try again') 4494/* $('#modalRedeemCode').modal('hide'); 4495 $('#modalRedeemCode_Success').modal('hide'); 4496 $('#modalRedeemCode_Declined').modal('show'); 4497 setTimeout(function (){ 4498 $('#inputRedeemCode_1_Declined').focus(); 4499 }, 1000); 4500 4501 4502 $('#modalSignIn').html(modalSignInHtml);*/ 4503 } 4504 4505 if(lytresponse=='success'){ 4506 4507 alert('Success!') 4508 4509 /*$('#modalRedeemCode').modal('hide'); 4510 $('#modalRedeemCode_Declined').modal('hide'); 4511 $('#modalRedeemCode_Success').modal('show');*/ 4512 4513 //alert(edsvalue); 4514 document.cookie = 'cdl' + "=" + loyaltycode + "; expires=" + edsvalue + "; path=/"; 4515 localStorage. setItem('cdl','usingcode'); 4516 4517 setTimeout(function (){ 4518 location.reload(); 4519 }, 2000); 4520 } 4521 4522 }); 4523 4524 4525 } 4526 4527 4528 4529 $( ".unlockbtncde" ).click(function(){ 4530 console.log('clicked'); 4531 var modalclicked = $(this).attr('mtype'); 4532 dounlockbtncde(modalclicked); 4533 }); 4534 4535 4536 4537 4538 $('.inputRedeemCode').keyup(function(){ 4539 4540 if ($( this ).val() != ""){ 4541 4542 $( this ).next('input').focus(); 4543 this_uppercase = $( this ).val().toUpperCase(); 4544 $( this ).val(this_uppercase); 4545 4546 } 4547 4548 }); 4549 4550 }); 4551 4552</script>
4552 4553 4554 4555 4556 4557 4558 4559 4560 4561 4562 4563 4564 4565 4566 4567 4568 4569
4569<script type="text/javascript"> 4570 $(function () { 4571 4572 4573 4574 $(".articlerouteliner").click(function(){ 4575 //alert("clicked articlerouter"); 4576 var storyid = $(this).attr("id"); 4577 //alert(storyid); 4578 $.post("includes/articlerouteliner.php", { storyid: storyid}, 4579 function(result){ 4580 //alert (result); 4581 var permlink = result; 4582 //var url = "http://www.farmersjournal.ie/" + permlink + "-" + storyid + "/"; 4583 var url = "http://www.farmersjournal.ie/" + permlink; 4584 //alert(url); 4585 //window.location.href(url); 4586 $(location).attr('href',url); 4587 }); 4588 }); 4589 4590 4591 4592 }); 4593 </script>
4593 4594 <!--</div> container --> 4595</body> 4596</html> 4597 4598 4599 4600 4601
4601<script src="https://player.vimeo.com/api/player.js"></script>
4601 4602 4603 4604<div 4605 id="socialMediaModal" 4606 class="hidden fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50" 4607 role="dialog" 4608 aria-labelledby="socialMediaModalLabel" 4609 aria-hidden="true" 4610> 4611 <div class="modal-dialog max-w-md w-full"> 4612 <div class="bg-white rounded-lg shadow-lg relative"> 4613 4614 <!-- Botão de fechar --> 4615 <button 4616 class="absolute top-4 right-4 text-gray-400 hover:text-gray-600 text-2xl font-bold" 4617 onclick="document.getElementById('socialMediaModal').classList.add('hidden')" 4618 > 4619 à 4620 </button> 4621 4622 <!-- Modal Header --> 4623 <div class="modal-header flex justify-center p-4"> 4624 <p class="text-center text-gray-500 font-semibold"> 4625 SHARING OPTIONS 4626 </p> 4627 </div> 4628 4629 <!-- Modal Content --> 4630 <div class="pb-6"> 4631 <div class="modal-body"> 4632 <!-- Botões de compartilhamento --> 4633 <div class="flex justify-center space-x-4 mt-4"> 4634 <!-- Botão do Facebook --> 4635 <a 4636 href="https://www.facebook.com/sharer/sharer.php?kid_directed_site=0&sdk=joey&u=http://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359&display=popup&ref=plugin&src=share_button" 4637 class="share-btn flex items-center justify-center w-10 h-10 rounded-full bg-blue-600 text-white hover:bg-blue-700" 4638 id="share-fb_xx" 4639 data-ref-title="Tax planning is about efficiency, not saving " 4640 data-ref-permlink="http://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359" 4641 > 4642 <i class="fab fa-facebook" aria-hidden="true"></i> 4643 </a> 4644 4645 <!-- Botão do Twitter --> 4646 <a 4647 class="share-btn flex items-center justify-center w-10 h-10 rounded-full bg-blue-400 text-white hover:bg-blue-500" 4648 id="share-twitter" 4649 data-ref-title="Tax planning is about efficiency, not saving " 4650 data-ref-permlink="http://www.farmersjournal.ie/focus/pensions-and-savings-/tax-planning-is-about-efficiency-not-saving-930359" 4651 > 4652 <i class="fab fa-twitter" aria-hidden="true"></i> 4653 </a> 4654 4655 <!-- Botão de copiar link --> 4656 <a 4657 class="share-btn flex items-center justify-center w-10 h-10 rounded-full bg-gray-500 text-white hover:bg-gray-600" 4658 id="share-copy-url-to-clipboard-2" 4659 > 4660 <i class="far fa-copy" aria-hidden="true"></i> 4661 </a> 4662 </div> 4663 </div> 4664 4665 <div id="div-keep-url-to-share" style="display: none"> 4666 <input type="text" id="keep-url-to-share"> 4667 </div> 4668 </div> 4669 </div> 4670 </div> 4671</div> 4672 4673
4674<script type="text/javascript"> 4675 $("#share-copy-url-to-clipboard-2").click(function(){ 4676 copyURLtoClipboard_2(); 4677 $('#socialMediaModal').addClass('hidden'); 4678 }) 4679 4680 var copyURLtoClipboard_2 = () => { 4681 4682 url = location.href; 4683 $("#div-keep-url-to-share").css("display","block"); 4684 4685 $("#keep-url-to-share").val(url); 4686 $("#keep-url-to-share").focus(); 4687 $("#keep-url-to-share").select(); 4688 4689 document.execCommand("cut"); 4690 $("#div-keep-url-to-share").css("display","none"); 4691 4692 alert("URL copied to clipboard!"); 4693 4694 4695 } 4696 4697</script>
4697 4698 4699 4700 4701
4702<script> 4703 4704 4705 4706 4707 4708 //Sharing Handler 4709 $('.share-btn-v2').click(function() { 4710 4711 id = $(this).attr('id'); 4712 4713 if(id === "share-mail-v2") { 4714 subject = $(this).attr('data-ref-title'); 4715 body = $(this).attr('data-ref-title') +' '+$(this).attr('data-ref-permlink'); 4716 window.location.href = "mailto:?body="+body+"&subject="+subject; 4717 } 4718 4719 if(id === "share-socialmedia-v2") { 4720 $('#socialMediaModal').removeClass('hidden'); 4721 } 4722 4723 /*if(id === "share-whats") { 4724 4725 link = $(this).attr('data-ref-permlink'); 4726 //<a href="whatsapp://send?abid=phonenumber&text=Hello%2C%20World!">Send Message</a> 4727 //window.open ("whatsapp://send?text="+ link); 4728 window.location.href ="whatsapp://send?text="+ link; 4729 //window.open ("https://api.whatsapp.com/send?text="+link); 4730 4731 }*/ 4732 }); 4733 4734 4735 $('.share-btn').click(function() { 4736 4737 id = $(this).attr('id'); 4738 4739 if(id === "share-fb") { 4740 link = $(this).attr('data-ref-permlink'); 4741 FB.ui({ 4742 method: 'share', 4743 href: link, 4744 }, 4745 // callback 4746 function(response) {console.log(response);} 4747 ); 4748 } 4749 4750 if(id === "share-twitter") { 4751 link = $(this).attr('data-ref-permlink'); 4752 window.open ("https://twitter.com/share?url="+link,"twitterShareWindow","menubar=1,resizable=1,width=650,height=650"); 4753 } 4754 4755 }); 4756 4757 4758 4759 4760 4761 4762 4763 4764 4765</script>
4765 4766 4767 4768 4769 4770<!-- related to this card https://trello.com/c/63tMD9XP/152-ad-slots-in-icl-articles --> 4771<style> 4772 .table-centerM div{ 4773 height: 0px !important; 4774 } 4775 4776 .table-center div{ 4777 /*height: 0px !important;*/ 4778 } 4779</style> 4780 4781
4782<script> 4783 4784 var cdlCookie = Cookies.get('cdl'); 4785 console.log("cdl cookie"); 4786 console.log(cdlCookie); 4787 var cdlLocalstorage = localStorage.getItem('cdl'); 4788 4789 console.log("cdl localstorage"); 4790 console.log(cdlLocalstorage); 4791 4792 4793 if( (cdlCookie==undefined) && (cdlLocalstorage=="usingcode") ){ 4794 console.log("creating cookie cdl - article.php line 2522"); 4795 loyaltycode = "usingcode"; 4796 edsvalue = "2021-07-14T20:59:00.000Z"; 4797 document.cookie = 'cdl' + "=" + loyaltycode + "; expires=" + edsvalue + "; path=/"; 4798 window.location.reload(); 4799 4800 } 4801 4802 4803 4804 4805 4806 4807 4808 4809</script>
4809 4810 4811 4812 4813 4814 4815 4816 4817 4818 4819
4820<script type="text/javascript"> 4821 setTimeout(function(){ 4822 $(".article-body").css("display", "block"); 4823 }, 1000); 4824 // just to dont show the entire story before proccess the incognito logic 4825</script>
4825 4826 4827 4828 4829 4830
4831<script type="text/javascript"> 4832 4833$( document ).ready(function() { 4834 4835 setTimeout(function(){ 4836 4837 4838 4839 $('.contribly-gallery-v2').each(function(index,item){ 4840 4841 if(parseInt((index))>1){ 4842 $(this).replaceWith(""); 4843 } 4844 }); 4845 4846 4847 4848 $('.form-group.header__filters--tags.gallery-header__filters').each(function(index,item){ 4849 if(parseInt((index))>=0){ 4850 $(this).replaceWith(""); 4851 } 4852 }); 4853 4854 4855 $('.contribly-order-filter').each(function(index,item){ 4856 if(parseInt((index))>0){ 4857 $(this).replaceWith(""); 4858 } 4859 }); 4860 4861 4862 $('.contribly-next-previous-buttons').each(function(index,item){ 4863 if(parseInt((index))>0){ 4864 $(this).replaceWith(""); 4865 } 4866 }); 4867 4868 4869 4870 //} 4871 4872 4873 }, 6000); 4874 4875}); 4876 4877 4878</script>
4878 4879 4880
4881<script type="text/javascript"> 4882$( document ).ready(function() { 4883 4884 $(".contribly-gallery-v2").on("click", ".card-text__copy", function(){ 4885 4886 if($(this).hasClass('long-copy')){ 4887 $(this).removeClass('long-copy') 4888 } else { 4889 $(this).addClass('long-copy') 4890 } 4891 4892 }); 4893 4894 4895 4896/*if ($('.contribly-contribute-v2').length > 0) { 4897 $('#runninglowModal').css('display', 'none') 4898 console.log('#runninglowModal deactivated because we have contribly form on the article body') 4899}*/ 4900 4901 4902}); 4903</script>
4903 4904 4905
4906<script> 4907 const lightbox = GLightbox({ 4908 touchNavigation: true, 4909 loop: true, 4910 selector: '.glightbox' 4911 }); 4912 4913 4914 let autoSlideInterval; 4915 4916 lightbox.on('open', () => { 4917 autoSlideInterval = setInterval(() => { 4918 lightbox.nextSlide(); 4919 }, 4000); // muda a imagem a cada 4 segundos 4920 }); 4921 4922 lightbox.on('close', () => { 4923 clearInterval(autoSlideInterval); 4924 }); 4925 4926</script>
4926 4927 4928 4929
4930<script> 4931 // Adiciona evento de clique a todos os Ãcones da câmera 4932 document.querySelectorAll('.camera-icon').forEach(icon => { 4933 icon.addEventListener('click', () => { 4934 // Encontra o link (<a>) irmão mais próximo 4935 const parentDiv = icon.parentElement; // Pega o elemento pai direto 4936 const link = parentDiv.querySelector('a'); // Procura o link dentro do pai 4937 if (link) { 4938 // Simula o clique no link 4939 link.click(); 4940 } 4941 }); 4942 }); 4943</script>
4943 4944 4945 4946 4947 4948 4949 4950 4951 4952<!-- ============================================================ 4953 Flip-Pay shopfront rewrite (mesmo do WWW6-subscribe.php) 4954 Reestiliza os cards de preco renderizados pelo SDK do Flip-Pay 4955 dentro do paywall inline do artigo. Desative com ?fp-overwrite 4956 ============================================================ --> 4957 4958 4959 4960
4961<script> 4962(function () { 4963 'use strict'; 4964 4965 var BRAND_COLOR = '#da2128'; 4966 var SELECTOR_PRICES = '[data-fp-element="prices"]'; 4967 var SELECTOR_PRICE_CARD = '[data-fp-element="price"]'; 4968 var REWRITTEN_FLAG = 'fpRewritten'; 4969 var STYLE_INJECTED_FLAG = 'fpStyleInjected'; 4970 4971 var BONUS_PREFIX = /^(\+\s*annual includes:?|annual includes:?|bonus:?|gift:?)\s*/i; 4972 4973 var CARD_CLASSES_TW = 'border-2 border-[#da2128]'; 4974 4975 // Configuração da fitinha "MOST USED" â quais planos a recebem (matching pelo nome) 4976 // Comparação é case-insensitive e funciona com substring (ex: "Digital Premium" pega "Digital Premium Plus") 4977 var MOST_USED_LABEL = 'MOST USED'; 4978 var MOST_USED_FOR = ['Digital Premium']; // adicione mais nomes se quiser 4979 4980 // === Normalização do nome do plano exibido no card === 4981 // O painel do flip-pay pode cadastrar o produto anual com nome diferente 4982 // (ex: "Digital Premium Annual"), o que quebra o match visual com a aba 4983 // Monthly e também o isMostUsed(). Removemos sufixos/prefixos de 4984 // periodicidade para exibir sempre o mesmo nome nas duas abas. 4985 var PLAN_NAME_PERIOD_RE = /\s*[-ââ(]?\s*\b(annual(ly)?|yearly|monthly|per\s+(year|month))\b\s*[)]?\s*/gi; 4986 // Overrides manuais: se o nome vindo do painel (case-insensitive) bater 4987 // com a chave, exibimos o valor. Ãtil quando o nome anual é muito 4988 // diferente e a limpeza automática não resolve. 4989 var PLAN_NAME_OVERRIDES = { 4990 // 'digital premium annual': 'Digital Premium' 4991 }; 4992 4993 function normalizePlanName(name) { 4994 if (!name) return name; 4995 var key = name.toLowerCase().trim(); 4996 if (PLAN_NAME_OVERRIDES[key]) return PLAN_NAME_OVERRIDES[key]; 4997 var cleaned = name.replace(PLAN_NAME_PERIOD_RE, ' ').replace(/\s{2,}/g, ' ').trim(); 4998 return cleaned || name; 4999 } 5000 5001 // === Config especÃfica do article.php === 5002 // No paywall inline do artigo não cabem 4 cards: selecionamos os planos 5003 // PELO NOME (já normalizado, sem "Annual"/"Monthly"), não pela posição. 5004 // Isso garante que as duas abas mostrem os mesmos planos, mesmo que o 5005 // flip-pay renderize os cards em ordem diferente em cada aba (ex: na aba 5006 // Annual o "Print & Digital Standard" vem antes do "Digital Premium"). 5007 // A ordem dos cards na tela segue a ordem desta lista. 5008 var VISIBLE_PLANS = ['Digital Standard', 'Digital Premium']; 5009 // Fallback: se nenhum nome bater (ex: painel renomeou os produtos), 5010 // mostramos os N primeiros como antes, para nunca renderizar vazio. 5011 var MAX_VISIBLE_PLANS = 2; 5012 // Botão vermelho "View All Plans" abaixo dos cards, levando para a página completa 5013 var VIEW_PLANS_URL = '/subscribe.php'; 5014 var VIEW_PLANS_LABEL = 'See All Plans'; 5015 // Aba pré-selecionada no primeiro render. O fragmento inline do flip-pay no 5016 // artigo vem com Monthly marcado; forçamos Annual uma única vez usando o 5017 // mesmo mecanismo do toggle (click no input radio original do flip-pay). 5018 // Depois disso o usuário pode alternar livremente. 5019 var DEFAULT_TAB = 'annual'; 5020 var DEFAULT_TAB_FLAG = 'fpDefaultTabApplied'; 5021 5022 function readFromPainel(el) { 5023 if (!el) return ''; 5024 var txt = (el.textContent || '').trim(); 5025 if (!txt) return ''; 5026 if (/^\{\{.*\}\}$/.test(txt)) return ''; 5027 return txt; 5028 } 5029 5030 // Retorna true se planName corresponde a algum entry de MOST_USED_FOR 5031 function isMostUsed(planName) { 5032 if (!planName) return false; 5033 var nameLower = planName.toLowerCase().trim(); 5034 for (var i = 0; i < MOST_USED_FOR.length; i++) { 5035 // Match exato OU plano "Digital Premium" não pegando "Print & Digital Premium" â checa se começa com o nome 5036 var target = MOST_USED_FOR[i].toLowerCase().trim(); 5037 if (nameLower === target) return true; 5038 } 5039 return false; 5040 } 5041 5042 function injectStylesOnce() { 5043 if (document.documentElement.dataset[STYLE_INJECTED_FLAG] === '1') return; 5044 document.documentElement.dataset[STYLE_INJECTED_FLAG] = '1'; 5045 5046 var css = 5047 '.ifj-shopfront{background:transparent;padding:0px 16px 0px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;}' + 5048 '.ifj-shopfront *{box-sizing:border-box;}' + 5049 '.ifj-shopfront-inner{max-width:1200px;margin:0 auto;}' + 5050 5051 '.ifj-shopfront-header{text-align:center;margin-bottom:24px;}' + 5052 '.ifj-shopfront-header h2{font-family:Georgia,"Times New Roman",serif;font-size:32px;font-weight:700;
5052color:#1a1a1a;line-height:1.1;margin:0 0 16px;}' + 5053 '.ifj-shopfront-header p{font-size:16px;color:#444;margin:0;}' + 5054 5055 // === Toggle Annual/Monthly === 5056 // Wrapper que mantém os inputs/labels originais do flip-pay vivos no DOM 5057 // (necessário para que o flip-pay continue identificando a aba ativa) 5058 '.ifj-original-tabs-holder{position:absolute !important;width:1px !important;height:1px !important;overflow:hidden !important;clip:rect(0,0,0,0) !important;pointer-events:none !important;opacity:0 !important;}' + 5059 // Esconde inputs/labels originais do flip-pay caso não estejam no wrapper acima 5060 '[data-fp-element="prices"] input[name="prices_tab"],' + 5061 '[data-fp-element="prices"] input[name="prices_tabs"],' + 5062 '[data-fp-element="prices_tabs"]{' + 5063 'position:absolute !important;' + 5064 'opacity:0 !important;' + 5065 'pointer-events:none !important;' + 5066 'width:1px !important;' + 5067 'height:1px !important;' + 5068 'overflow:hidden !important;' + 5069 'clip:rect(0,0,0,0) !important;' + 5070 'margin:-1px !important;' + 5071 'padding:0 !important;' + 5072 'border:0 !important;' + 5073 '}' + 5074 '.ifj-tabs-wrapper{display:flex;justify-content:center;margin:0 0 32px;}' + 5075 '.ifj-tabs{display:inline-flex;background:transparent;border:1px solid #d9d4c7;border-radius:6px;padding:4px;gap:0;position:relative;}' + 5076 '.ifj-tab-btn{display:inline-block;padding:8px 28px;font-size:14px;font-weight:600;color:#1a1a1a;background:transparent;border:none;border-radius:4px;cursor:pointer;transition:background-color .2s,color .2s;letter-spacing:0.3px;line-height:1.2;font-family:inherit;outline:none;}' + 5077 '.ifj-tab-btn:hover{color:' + BRAND_COLOR + ';}' + 5078 '.ifj-tab-btn.-active{background:' + BRAND_COLOR + ' !important;color:#fff !important;}' + 5079 '.ifj-tab-btn.-active:hover{color:#fff !important;}' + 5080 '.ifj-tab-btn:focus-visible{outline:2px solid ' + BRAND_COLOR + ';outline-offset:2px;}' + 5081 5082 '.ifj-plans-wrapper{display:grid;gap:24px;align-items:stretch;padding-top:18px;}' + 5083 '.ifj-plans-wrapper.-cols-1{grid-template-columns:minmax(0,420px);justify-content:center;}' + 5084 '.ifj-plans-wrapper.-cols-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:880px;margin:0 auto;}' + 5085 '.ifj-plans-wrapper.-cols-3{grid-template-columns:repeat(3,minmax(0,1fr));}' + 5086 '.ifj-plans-wrapper.-cols-4{grid-template-columns:repeat(4,minmax(0,1fr));}' + 5087 5088 // Card padrão: overflow:visible para a fitinha sair pelo topo 5089 '.ifj-shopfront .ifj-box{position:relative !important;background:#fffdf9 !important;border:2px solid ' + BRAND_COLOR + ' !important;border-radius:6px !important;padding:32px 28px 28px !important;display:flex !important;flex-direction:column !important;height:100% !important;box-shadow:none !important;overflow:visible !important;}' + 5090 5091 // Card "Most Used": padding superior maior para acomodar a fitinha 5092 '.ifj-shopfront .ifj-box.ifj-box--most-used{padding-top:40px !important;}' + 5093 5094 // FITINHA "MOST USED" no topo do card 5095 '.ifj-shopfront .ifj-most-used-badge{' + 5096 'position:absolute !important;' + 5097 'top:-11px !important;' + 5098 'left:50% !important;' + 5099 'transform:translateX(-50%) !important;' + 5100 'background:#fffdf9 !important;' + 5101 'color:' + BRAND_COLOR + ' !important;' + 5102 'border:1px solid ' + BRAND_COLOR + ' !important;' + 5103 'font-size:11px !important;' + 5104 'font-weight:700 !important;' + 5105 'letter-spacing:1.5px !important;' + 5106 'text-transform:uppercase !important;' + 5107 'padding:4px 16px !important;' + 5108 'border-radius:3px !important;' + 5109 'white-space:nowrap !important;' + 5110 'margin:0 !important;' + 5111 'line-height:1 !important;' + 5112 'z-index:2 !important;' + 5113 'box-shadow:none !important;' + 5114 '}' + 5115 5116 // TÃtulo do plano com prioridade alta para vencer o display:none do Flip-Pay 5117 '[data-fp-element="prices"] [data-fp-element="price"] .ifj-plan-title.fp-card-title,' + 5118 '.ifj-shopfront .ifj-plan-title{' + 5119 'display:block !important;' + 5120 'visibility:visible !important;' + 5121 'text-align:center !important;' + 5122 'font-size:14px !important;' + 5123 'font-weight:700 !important;' + 5124 'letter-spacing:1.5px !important;' + 5125 'text-transform:uppercase !important;' + 5126 'color:' + BRAND_COLOR + ' !important;' + 5127 'margin:0 0 18px !important;' + 5128 'padding:0 !important;' + 5129 'min-height:0 !important;' + 5130 'line-height:1.3 !important;' + 5131 'opacity:1 !important;' + 5132 'height:auto !important;' + 5133 '}' + 5134 5135 '.ifj-price-wrapper{text-align:center;margin:0 0 6px;}' + 5136 '.ifj-price{margin:0;display:inline-flex;align-items:baseline;justify-content:center;gap:0;font-family:inherit;}' + 5137 '.ifj-price > span:first-child{font-size:15px;color:#555;font-weight:400;margin-right:6px;}
5137' + 5138 '.ifj-price big{font-size:36px;font-weight:800;color:#1a1a1a;line-height:1;letter-spacing:-1px;font-family:inherit;}' + 5139 '.ifj-price > span:last-child{font-size:14px;color:#555;font-weight:400;margin-left:1px;}' + 5140 5141 '.ifj-strike-through{display:block;text-align:center;font-size:14px;color:#a64449;text-decoration:line-through;margin:0 0 28px;font-weight:500;}' + 5142 '.ifj-strike-through.-empty{visibility:hidden;height:14px;margin:0 0 28px;}' + 5143 5144 '.ifj-checklist{list-style:none !important;padding:0 !important;margin:0 0 24px !important;}' + 5145 '.ifj-checklist li{position:relative !important;padding:6px 0 6px 24px !important;font-size:14px !important;color:#1a1a1a !important;line-height:1.45 !important;background:none !important;border:none !important;}' + 5146 '.ifj-checklist li::before{content:"\\2713";position:absolute;left:0;top:6px;color:#3a3a3a;font-weight:400;font-size:14px;line-height:1.45;}' + 5147 5148 '.ifj-gift-wrapper{margin:8px 0 24px;}' + 5149 '.ifj-deal-description{font-size:14px;font-weight:700;color:' + BRAND_COLOR + ';margin:0 0 6px;letter-spacing:0.3px;}' + 5150 '.ifj-gift-wrapper p:not(.ifj-deal-description){font-size:14px;color:#1a1a1a;margin:0 0 4px;}' + 5151 5152 '.ifj-pusher{flex:1;min-height:8px;}' + 5153 5154 '.ifj-shopfront .ifj-btn-wrapper{text-align:center !important;margin:8px 0 0 !important;padding:0 16px !important;background:none !important;border:none !important;}' + 5155 '.ifj-shopfront .ifj-btn-wrapper button{width:100% !important;background:#000 !important;color:#fff !important;font-size:16px !important;font-weight:600 !important;padding:14px 24px !important;border:none !important;border-radius:6px !important;cursor:pointer !important;transition:background-color .2s !important;font-family:inherit !important;letter-spacing:0.2px !important;}' + 5156 '.ifj-shopfront .ifj-btn-wrapper button:hover{background:' + BRAND_COLOR + ' !important;}' + 5157 5158 '.ifj-terms{text-align:center;font-size:13px;color:#666;margin:40px 0 0;}' + 5159 '.ifj-terms a{color:#1a1a1a;text-decoration:underline;font-weight:600;}' + 5160 '.ifj-terms i{font-style:italic;color:#666;}' + 5161 '.ifj-already-sub{text-align:center;font-size:14px;color:#444;margin:16px 0 0;}' + 5162 '.ifj-already-sub .fp-sign-in{color:' + BRAND_COLOR + ';font-weight:600;text-decoration:underline;cursor:pointer;margin-left:4px;}' + 5163 '.ifj-disclaimer{text-align:center;font-size:12px;color:#888;margin:8px 0 0;}' + 5164 5165 // === Botão "View Our Plans" (article.php) === 5166 '.ifj-view-plans{text-align:center !important;margin:32px 0 8px !important;padding:0 !important;background:none !important;border:none !important;}' + 5167 '.ifj-view-plans .fp-btn{display:inline-block !important;background:' + BRAND_COLOR + ' !important;color:#fff !important;font-family:Georgia,"Times New Roman",serif !important;font-size:16px !important;font-weight:700 !important;line-height:1.2 !important;padding:16px 48px !important;border:none !important;border-radius:14px !important;text-decoration:none !important;cursor:pointer !important;transition:background-color .2s !important;}' + 5168 '.ifj-view-plans .fp-btn:hover{background:#b81b21 !important;color:#fff !important;text-decoration:none !important;}' + 5169 '.ifj-view-plans .fp-btn-subscribe{color:#fff !important;}' + 5170 5171 '@media (max-width:1024px){.ifj-plans-wrapper.-cols-3,.ifj-plans-wrapper.-cols-4{grid-template-columns:repeat(2,minmax(0,1fr));}}' + 5172 '@media (max-width:640px){.ifj-plans-wrapper.-cols-2,.ifj-plans-wrapper.-cols-3,.ifj-plans-wrapper.-cols-4{grid-template-columns:1fr;max-width:480px;}.ifj-shopfront-header h2{font-size:30px;}.ifj-shopfront .ifj-box{padding:28px 24px 28px !important;}.ifj-shopfront .ifj-box.ifj-box--most-used{padding-top:36px !important;}}'; 5173 5174 var styleEl = document.createElement('style'); 5175 styleEl.id = 'ifj-rewrite-styles'; 5176 styleEl.textContent = css; 5177 document.head.appendChild(styleEl); 5178 } 5179 5180 function rewritePricesContainer(container) { 5181 if (container.dataset[REWRITTEN_FLAG] === '1') return; 5182 5183 var originalCards = container.querySelectorAll(SELECTOR_PRICE_CARD); 5184 if (originalCards.length === 0) return; 5185 5186 injectStylesOnce(); 5187 5188 var plans = []; 5189 originalCards.forEach(function (card) { 5190 var titleEl = card.querySelector('.fp-card-title'); 5191 var badgeLabelEl = card.querySelector('.fp-premium-wrap'); 5192 var priceBigEl = card.querySelector('.fp-price big'); 5193 var priceFreqEl = card.querySelector('.fp-price big + span'); 5194 var priceOutEl = card.querySelector('.fp-premium-description'); 5195 var descriptionEls = card.querySelectorAll('[data-fp-element="price-description"]'); 5196 var buttonEl = card.querySelector('[data-fp-element="price_select"]'); 5197 5198 var features = []; 5199 var bonuses = [];
5200 descriptionEls.forEach(function (li) { 5201 var textSpan = li.querySelector('span:last-child'); 5202 var rawText = textSpan ? textSpan.textContent.trim() : li.textContent.trim(); 5203 var rawHtml = textSpan ? textSpan.innerHTML : li.innerHTML; 5204 if (BONUS_PREFIX.test(rawText)) { 5205 bonuses.push({ cleanHtml: rawHtml.replace(BONUS_PREFIX, '').trim() }); 5206 } else { 5207 features.push({ 5208 html: rawHtml, 5209 enabledClass: (li.className.match(/cxb-a\s+(\S+)/) || [])[1] || '' 5210 }); 5211 } 5212 }); 5213 5214 var planName = normalizePlanName(readFromPainel(badgeLabelEl) || readFromPainel(titleEl)); 5215 5216 plans.push({ 5217 cardEl: card, 5218 planName: planName, 5219 mostUsed: isMostUsed(planName), 5220 priceBig: priceBigEl ? priceBigEl.textContent.trim() : '', 5221 priceFreq: priceFreqEl ? priceFreqEl.textContent.trim() : '', 5222 priceOut: priceOutEl ? priceOutEl.textContent.trim() : '', 5223 features: features, 5224 bonuses: bonuses, 5225 buttonEl: buttonEl, 5226 originalClasses: card.className 5227 }); 5228 }); 5229 5230 // === Seleciona os planos visÃveis PELO NOME (article.php) === 5231 // A ordem de renderização do flip-pay muda entre as abas Annual/Monthly, 5232 // então pegar "os N primeiros" mostrava Print & Digital Standard no 5233 // Annual. Agora filtramos pela whitelist VISIBLE_PLANS (nomes já 5234 // normalizados, sem sufixo de periodicidade), na ordem da lista. 5235 // Roda de novo a cada re-render do flip-pay, valendo para as duas abas. 5236 if (VISIBLE_PLANS && VISIBLE_PLANS.length > 0) { 5237 var selected = []; 5238 VISIBLE_PLANS.forEach(function (wanted) { 5239 var wantedLower = wanted.toLowerCase().trim(); 5240 for (var p = 0; p < plans.length; p++) { 5241 if ((plans[p].planName || '').toLowerCase().trim() === wantedLower && 5242 selected.indexOf(plans[p]) === -1) { 5243 selected.push(plans[p]); 5244 break; 5245 } 5246 } 5247 }); 5248 if (selected.length > 0) { 5249 plans = selected; 5250 } else if (MAX_VISIBLE_PLANS > 0 && plans.length > MAX_VISIBLE_PLANS) { 5251 // Fallback: nenhum nome bateu â mantém comportamento antigo 5252 plans = plans.slice(0, MAX_VISIBLE_PLANS); 5253 } 5254 } else if (MAX_VISIBLE_PLANS > 0 && plans.length > MAX_VISIBLE_PLANS) { 5255 plans = plans.slice(0, MAX_VISIBLE_PLANS); 5256 } 5257 5258 // Busca header/subheader tolerante: o template do flip-pay pode usar 5259 // .fp-shopfront-title (versão antiga) ou .fp-title (versão nova). 5260 var existingHeader = container.querySelector('.fp-shopfront-title') || 5261 container.querySelector('h2.fp-title') || 5262 container.querySelector('.fp-title'); 5263 var existingHeaderText = existingHeader ? existingHeader.textContent.trim() : ''; /*Unlock full digital access to Irish Farmers Journal.*/ 5264 var existingSubHeader = container.querySelector('.fp-shopfront-sub-title') || 5265 container.querySelector('.fp-sub-title'); 5266 var existingSubHeaderText = existingSubHeader ? existingSubHeader.textContent.trim() : ''; /*Choose a plan.*/ 5267 var alreadySubWrapper = container.querySelector('.fp-already-subscriber-wrapper'); 5268 var disclaimer = container.querySelector('.fp-disclaimer-wrapper'); 5269 5270 // === Captura das tabs Annual/Monthly (novo no fragmento do flip-pay) === 5271 // O flip-pay renderiza um <input type="radio" name="prices_tab"> + <label> para cada aba, 5272 // dentro de um wrapper com [data-fp-element="prices_tabs"]. 5273 // Em vez de mover os inputs originais (o que pode quebrar handlers do flip-pay), 5274 // criamos botões proxy que disparam click no input original via for=id. 5275 var tabInputs = container.querySelectorAll('input[name="prices_tab"], input[name="prices_tabs"]'); 5276 var capturedTabs = []; 5277 tabInputs.forEach(function (input) { 5278 var label = container.querySelector('label[for="' + input.id + '"]'); 5279 capturedTabs.push({ 5280 inputId: input.id, 5281 inputValue: input.value, 5282 checked: input.checked, 5283 labelText: label ? label.textContent.trim() : (input.value || '') 5284 }); 5285 }); 5286 5287 // === Pré-seleciona a aba default (Annual) no primeiro render === 5288 // Mesmo método do toggle: dispara click no input radio original do
5289 // flip-pay, que re-renderiza o fragmento já com Annual ativo â o 5290 // MutationObserver detecta e roda o rewrite de novo. O flag em <html> 5291 // garante que isso acontece só uma vez, para não impedir o usuário 5292 // de trocar para Monthly depois. 5293 if (DEFAULT_TAB && capturedTabs.length > 0 && 5294 document.documentElement.dataset[DEFAULT_TAB_FLAG] !== '1') { 5295 var defaultTab = null; 5296 for (var t = 0; t < capturedTabs.length; t++) { 5297 var hay = (capturedTabs[t].labelText + ' ' + capturedTabs[t].inputValue).toLowerCase(); 5298 if (hay.indexOf(DEFAULT_TAB.toLowerCase()) !== -1) { 5299 defaultTab = capturedTabs[t]; 5300 break; 5301 } 5302 } 5303 document.documentElement.dataset[DEFAULT_TAB_FLAG] = '1'; 5304 if (defaultTab && !defaultTab.checked) { 5305 var defaultInput = document.getElementById(defaultTab.inputId); 5306 if (defaultInput) { 5307 defaultInput.click(); 5308 // Aborta este passe: o flip-pay vai re-renderizar com Annual 5309 // marcado e o observer reprocessa o container do zero. 5310 return; 5311 } 5312 } 5313 } 5314 5315 var newRoot = document.createElement('div'); 5316 newRoot.className = 'ifj-shopfront'; 5317 5318 var inner = document.createElement('div'); 5319 inner.className = 'ifj-shopfront-inner'; 5320 newRoot.appendChild(inner); 5321 5322 var header = document.createElement('div'); 5323 header.className = 'ifj-shopfront-header'; 5324 header.innerHTML = 5325 '<h2>' + escapeHtml(existingHeaderText) + '</h2>' + 5326 '<p><div>' + escapeHtml(existingSubHeaderText) + '</div></p>'; 5327 inner.appendChild(header); 5328 5329 // === Renderiza o toggle Annual/Monthly (se existir) === 5330 if (capturedTabs.length > 0) { 5331 var tabsWrapper = document.createElement('div'); 5332 tabsWrapper.className = 'ifj-tabs-wrapper'; 5333 5334 var tabsInner = document.createElement('div'); 5335 tabsInner.className = 'ifj-tabs'; 5336 tabsWrapper.appendChild(tabsInner); 5337 5338 capturedTabs.forEach(function (tab) { 5339 var btn = document.createElement('button'); 5340 btn.type = 'button'; 5341 btn.className = 'ifj-tab-btn' + (tab.checked ? ' -active' : ''); 5342 btn.setAttribute('data-fp-tab-target', tab.inputId); 5343 btn.setAttribute('data-fp-tab-value', tab.inputValue); 5344 btn.textContent = tab.labelText; 5345 5346 btn.addEventListener('click', function () { 5347 var realInput = document.getElementById(tab.inputId); 5348 if (realInput && !realInput.checked) { 5349 // Atualiza visual imediato (antes do flip-pay re-renderizar) 5350 tabsInner.querySelectorAll('.ifj-tab-btn').forEach(function (b) { 5351 b.classList.remove('-active'); 5352 }); 5353 btn.classList.add('-active'); 5354 // Dispara o click no input radio original â o flip-pay tem listener nele 5355 realInput.click(); 5356 } 5357 }); 5358 5359 tabsInner.appendChild(btn); 5360 }); 5361 5362 inner.appendChild(tabsWrapper); 5363 } 5364 5365 var visibleCount = plans.filter(function (p) { return !/(\bhidden\b|\bfp-hide\b)/.test(p.originalClasses); }).length || plans.length; 5366 var cols = Math.min(Math.max(visibleCount, 1), 4); 5367 var grid = document.createElement('div'); 5368 grid.className = 'ifj-plans-wrapper -cols-' + cols; 5369 inner.appendChild(grid); 5370 5371 plans.forEach(function (plan) { 5372 var card = document.createElement('div'); 5373 card.setAttribute('data-fp-element', 'price'); 5374 var classes = ['ifj-box', CARD_CLASSES_TW]; 5375 if (plan.mostUsed) classes.push('ifj-box--most-used'); 5376 card.className = classes.join(' '); 5377 5378 // FITINHA "Most Used" só aparece no card destacado 5379 if (plan.mostUsed) { 5380 var badge = document.createElement('span'); 5381 badge.className = 'ifj-most-used-badge'; 5382 badge.textContent = MOST_USED_LABEL; 5383 card.appendChild(badge); 5384 } 5385 5386 // TÃtulo do plano 5387 if (plan.planName) { 5388 var planTitle = document.createElement('h5'); 5389 planTitle.className = 'ifj-plan-title'; 5390 planTitle.style.cssText = 'display:block !important;'; 5391 planTitle.textContent = plan.planName; 5392 card.appendChild(planTitle); 5393 } 5394 5395 var priceWrapper = document.createElement('div'); 5396 priceWrapper.className = 'ifj-price-wrapper fp-price-wrapper'; 5397 priceWrapper.innerHTML = 5398 '<p class="ifj-price fp-price">' + 5399 '<big>' + escapeHtml(plan.priceBig) + '</big>' + 5400 '<span>' + escapeHtml(plan.priceFreq) + '</span>' + 5401 '</p>'; 5402 card.appendChild(priceWrapper); 5403 5404 var strike = document.createElement('div'); 5405 if (plan.priceOut) {
5406 strike.className = 'ifj-strike-through fp-premium-description'; 5407 strike.textContent = plan.priceOut; 5408 } else { 5409 strike.className = 'ifj-strike-through -empty'; 5410 } 5411 card.appendChild(strike); 5412 5413 var ul = document.createElement('ul'); 5414 ul.className = 'ifj-checklist fp-sub-price-descriptions'; 5415 ul.setAttribute('data-fp-element', 'price-descriptions'); 5416 5417 plan.features.forEach(function (feat) { 5418 var li = document.createElement('li'); 5419 li.setAttribute('data-fp-element', 'price-description'); 5420 li.className = 'cxb-a ' + feat.enabledClass; 5421 li.innerHTML = feat.html; 5422 ul.appendChild(li); 5423 }); 5424 card.appendChild(ul); 5425 5426 if (plan.bonuses.length > 0) { 5427 var giftWrapper = document.createElement('div'); 5428 giftWrapper.className = 'ifj-gift-wrapper'; 5429 5430 var dealLabel = document.createElement('p'); 5431 dealLabel.className = 'ifj-deal-description'; 5432 dealLabel.textContent = '+ ANNUAL INCLUDES'; 5433 giftWrapper.appendChild(dealLabel); 5434 5435 plan.bonuses.forEach(function (bonus) { 5436 var p = document.createElement('p'); 5437 p.innerHTML = bonus.cleanHtml; 5438 giftWrapper.appendChild(p); 5439 }); 5440 card.appendChild(giftWrapper); 5441 } 5442 5443 var pusher = document.createElement('div'); 5444 pusher.className = 'ifj-pusher'; 5445 card.appendChild(pusher); 5446 5447 var btnWrapper = document.createElement('p'); 5448 btnWrapper.className = 'ifj-btn-wrapper fp-btn-wrapper'; 5449 btnWrapper.removeAttribute('style'); 5450 5451 if (plan.buttonEl) { 5452 plan.buttonEl.removeAttribute('style'); 5453 plan.buttonEl.className = ''; 5454 btnWrapper.appendChild(plan.buttonEl); 5455 } 5456 card.appendChild(btnWrapper); 5457 5458 grid.appendChild(card); 5459 }); 5460 5461 // === Botão "View Our Plans" abaixo dos cards (article.php) === 5462 // Leva para a página completa de subscription, onde todos os planos 5463 // (incluindo Print & Digital) ficam visÃveis. 5464 var viewPlansWrapper = document.createElement('div'); 5465 viewPlansWrapper.className = 'ifj-view-plans fp-btn-wrapper'; 5466 viewPlansWrapper.innerHTML = 5467 '<a href="' + VIEW_PLANS_URL + '" class="fp-btn fp-redirect-btn">' + 5468 '<span class="fp-btn-subscribe">' + escapeHtml(VIEW_PLANS_LABEL) + '</span>' + 5469 '</a>'; 5470 inner.appendChild(viewPlansWrapper); 5471 5472 /*var terms = document.createElement('p'); 5473 terms.className = 'ifj-terms'; 5474 terms.innerHTML = 5475 '<a href="#tcs">T&Cs apply</a>. ' + 5476 '<i>Please note that subscription renewals are auto charged, unless cancelled.</i>'; 5477 inner.appendChild(terms);*/ 5478 5479 if (alreadySubWrapper) { 5480 alreadySubWrapper.className = (alreadySubWrapper.className || '') + ' ifj-already-sub'; 5481 alreadySubWrapper.removeAttribute('style'); 5482 inner.appendChild(alreadySubWrapper); 5483 } 5484 5485 if (disclaimer) { 5486 disclaimer.className = (disclaimer.className || '') + ' ifj-disclaimer'; 5487 disclaimer.removeAttribute('style'); 5488 inner.appendChild(disclaimer); 5489 } 5490 5491 // Preserva os elementos originais das tabs movendo-os para um wrapper 5492 // escondido dentro do newRoot. Sem isso, container.innerHTML='' os apagaria 5493 // e os botões proxy não teriam como disparar a troca de plano. 5494 if (capturedTabs.length > 0) { 5495 var hiddenTabsHolder = document.createElement('div'); 5496 hiddenTabsHolder.className = 'ifj-original-tabs-holder'; 5497 hiddenTabsHolder.setAttribute('aria-hidden', 'true'); 5498 5499 // Tenta mover o wrapper [data-fp-element="prices_tabs"] inteiro (preserva estrutura 5500 // que o flip-pay possa estar esperando). Se não existir, cai no fallback de mover 5501 // inputs e labels individualmente. 5502 var pricesTabsWrapper = container.querySelector('[data-fp-element="prices_tabs"]'); 5503 if (pricesTabsWrapper) { 5504 hiddenTabsHolder.appendChild(pricesTabsWrapper); 5505 } else { 5506 capturedTabs.forEach(function (tab) { 5507 var realInput = document.getElementById(tab.inputId); 5508 if (realInput) hiddenTabsHolder.appendChild(realInput); 5509 var realLabel = container.querySelector('label[for="' + tab.inputId + '"]'); 5510 if (realLabel) hiddenTabsHolder.appendChild(realLabel); 5511 }); 5512 } 5513 newRoot.appendChild(hiddenTabsHolder); 5514 } 5515 5516 container.innerHTML = ''; 5517 container.appendChild(newRoot); 5518 container.dataset[REWRITTEN_FLAG] = '1'; 5519 } 5520 5521 function escapeHtml(str) { 5522 if (str == null) return ''; 5523 return String(str) 5524 .replace(/&/g, '&') 5525 .replace(/</g, '<') 5526 .replace(/>/g, '>') 5527 .replace(/"/g, '"') 5528 .replace(/'/g, '''); 5529 } 5530 5531 function tryRewrite() { 5532 var containers = document.querySelectorAll(SELECTOR_PRICES);
5533 containers.forEach(function (c) { 5534 // Se o container tem cards "originais" do flip-pay (não os nossos), 5535 // significa que o flip-pay (re)renderizou â resetamos o flag para reprocessar. 5536 // Nossos cards customizados ficam dentro de .ifj-shopfront, então um card 5537 // que NÃO está dentro de .ifj-shopfront é um card original do flip-pay. 5538 var hasOriginalCard = false; 5539 var allCards = c.querySelectorAll(SELECTOR_PRICE_CARD); 5540 for (var i = 0; i < allCards.length; i++) { 5541 if (!allCards[i].closest('.ifj-shopfront')) { 5542 hasOriginalCard = true; 5543 break; 5544 } 5545 } 5546 5547 if (hasOriginalCard) { 5548 // Flip-pay (re)renderizou â força reprocessamento 5549 c.dataset[REWRITTEN_FLAG] = ''; 5550 rewritePricesContainer(c); 5551 } 5552 }); 5553 } 5554 5555 var observer = new MutationObserver(function () { tryRewrite(); }); 5556 5557 function start() { 5558 tryRewrite(); 5559 observer.observe(document.body, { childList: true, subtree: true }); 5560 // Mantemos o observer ativo por mais tempo para capturar re-renderizações 5561 // disparadas pela troca de tabs (Annual/Monthly). 5562 setTimeout(function () { observer.disconnect(); }, 120000); 5563 } 5564 5565 if (document.readyState === 'loading') { 5566 document.addEventListener('DOMContentLoaded', start); 5567 } else { 5568 start(); 5569 } 5570})(); 5571</script>
5571 5572
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.