It Hints
Search
Close this search box.

Всем при­вет. Заду­мал я сде­лать оче­ред­ной интер­нет мага­зин (на этот раз по про­да­же шаб­ло­нов для Elementor) через WooCommerce. Ну и раз уж делать так всё по взрос­ло­му, как на серьез­ных сай­тах, то есть что­бы мож­но было посмот­реть как дан­ный шаб­лон выгля­дит на мобиль­ных, план­шет­ных и деск­топ­ных устройствах.

Посмот­рел как это дела­ет­ся на серьез­ных сай­тах, к при­ме­ру на офи­ци­аль­ном сай­те Elementor, а дела­ет­ся это там так — шаб­ло­ны пока­зы­ва­ют­ся внут­ри iFrame, а кра­си­вые кноп­ки с икон­ка­ми для пере­клю­че­ния вида (мобиль­ный, план­шет­ный и деск­топ­ный) про­сто меня­ют шири­ну это­го iFrame — таким обра­зом содер­жи­мое авто­ма­ти­че­ски под­стра­и­ва­ет­ся под iFrame и всё ста­но­вит­ся красиво.

То есть HTML будет выгля­деть при­мер­но вот так

				
					<button id="mobile-btn">Мобильный вид</button>
<button id="tablet-btn">Планшетный вид</button>
<button id="desktop-btn">Десктопный вид</button>

<iframe id="my-iframe" src="ваш_сайт" width="100%" height="600px"></iframe>

				
			

Нам оста­лось про­пи­сать Java Script кото­рый будет менять, и для удоб­ства встав­лять мы его будет в function.php. Выгля­деть он будет так

				
					add_action('wp_footer', 'custom_iframe_resizer_script');

function custom_iframe_resizer_script() {
    ?>
    <script type="text/javascript">
        document.addEventListener('DOMContentLoaded', function() {
            document.getElementById('mobile-btn').addEventListener('click', function() {
                document.getElementById('my-iframe').style.width = '320px'; // Ширина для мобильного вида
            });

            document.getElementById('tablet-btn').addEventListener('click', function() {
                document.getElementById('my-iframe').style.width = '768px'; // Ширина для планшетного вида
            });

            document.getElementById('desktop-btn').addEventListener('click', function() {
                document.getElementById('my-iframe').style.width = '100%'; // Ширина для десктопного вида
            });
        });
    </script>
    <?php
}

				
			

И вро­де бы всё отлич­но — но есть одно но. По всей види­мо­сти про­сто пока­зать сек­цию или кон­тей­нер в бра­у­зе­ре не полу­чит­ся, а шорт­код типа в iFrame не вставишь.

Поэто­му при­нял решение:

  1. Делаю шаб­лон обыч­ным спо­со­бом, сохра­няю его в биб­лио­те­ке шаб­ло­нов, тип шаб­ло­на выби­раю “Кон­тей­нер”
  2. Делаю одно­имен­ную запись (что­бы не запу­тать­ся) и встав­ляю туда шорт­код кон­тей­не­ра. Шаб­лон для запи­си став­лю как “Elementor canvas”, что­бы там кро­ме мое­го создан­но­го кон­тей­не­ра ниче­го не было.
  3. В опи­са­ние това­ра встав­ляю уже iFrame с URL запи­си, к при­ме­ру <iframe id=“my-iframe” src=“https://mysite.ru/menu‑1” width=“100%” height=“600px” style=“border: 1px solid black”></iframe>

 

Минус дан­но­го под­хо­да — мне при­хо­дит­ся делать запись что­бы вста­вить туда шорт­код, но как выво­дить шорт­код напря­мую я пока не знаю.

Друзья - если вы нашли для себя что то полезное и хотите помочь проекту развиваться дальше, Вы можете задонатить любую сумму на поддержку. Деньги пойдут исключительно на оплату доменного имени, хостинга, а так же на мотивацию.

Facebook
Twitter
Email
VK
WhatsApp
Telegram