Advertisement
briank

Kartra Post-Specific Sidebar Banners

Jan 25th, 2022 (edited)
1,437
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 1.77 KB | None | 0 0
  1. <!--
  2.    Post-Specific Banners - Convert highlight boxes to sidebar banners
  3.    Author: Brian Katzung <briank@kappacs.com>
  4.  
  5.    Paste this banner manager in a custom code block above post content.
  6.    Put your (optionally linked) banner images in highlight boxes.
  7.    Use box title ##banner@position for single sidebar or
  8.    ##lbanner@position or ##rbanner@position for left/right sidebars.
  9.    Positive positions from start (0 first), negative from end (-1 last).
  10.    Multiple positions may look similar due to hidden sidebar content.
  11. -->
  12. <!-- The following label is an editing aid and will not appear in live -->
  13. <p>Banner Manager</p><!-- membership-post-specific-banner-manager -->
  14. <script>
  15. if (!!location.pathname.indexOf('/membership/edit/')) {
  16.     document.currentScript.parentElement.parentElement.style.display = 'none';
  17.     $(function () {
  18.     $('div[td_type="highlight"]').each(function () {
  19.         var $el = $(this); title = $el.find('.element_title').text(), match = title && title.match(/^##([lr])?banner@(-?\d+)/i);
  20.         if (match) {
  21.         var sb = 'div.sidebar_wrapper';
  22.         switch (match[1]) {
  23.         case 'l': case 'L': sb = sb + '.left-sidebar'; break;
  24.         case 'r': case 'R': sb = sb + '.right-sidebar'; break;
  25.         }
  26.         var pos = parseInt(match[2]), banner = $('<div class="panel panel-blank banner_box" data-group="sidebar" data-type="banner"><div class="panel-body">'), con = $el.find('.element_content p').children().first(), kids = $(sb).children(), nkids = kids.length;
  27.         banner.find('.panel-body').append(con);
  28.         $el.remove();
  29.         if (pos >= nkids) banner.insertAfter(kids[nkids - 1]);
  30.         else if (pos >= 0) banner.insertBefore(kids[pos]);
  31.         else if (nkids + pos < 0) banner.insertBefore(kids[0]);
  32.         else banner.insertAfter(kids[nkids + pos]);
  33.         }
  34.     });
  35.    });
  36. }
  37. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement