Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Встроить fancybox в редактор


Recommended Posts

Здравствуйте.
Есть желание сгделать увеличение фото, которые всивлены в редактор, который используется для описания товара, категории и т.д.
Какие есть способы?
 

Link to comment
Share on other sites


32 минуты назад, Prooksius сказал:

https://fancyapps.com.cach3.com/fancybox/3/docs/index.html#usage

Вот прям ответ на ваш вопрос.

Проблема передать url изображения в href.
А если осивлять без href, то при закрытии изображение пропадает.

Link to comment
Share on other sites


51 минуту назад, user0880 сказал:

Здравствуйте.
Есть желание сгделать увеличение фото, которые всивлены в редактор, который используется для описания товара, категории и т.д.
Какие есть способы?
 

недавно гделал подобное для 2.3... при желании ковыряйте 3-ку...отлилий не много

картинку в текстовой редактор всивляем как обычно...

1. помещаем картинку ( в атиче)_ в папку 
catalog/view/theme/Ваша тема/image
2. в 
иещём  catalog/view/theme/
Ваша тема/template/product/product.tpl(twig)

<div class="tab-pane active" id="tab-description">

и добавляем еещё класс descp...получаем

<div class="tab-pane descp active" id="tab-description">

 

3. скрипты...липотому что в product.tpl(twig) , липотому что в footer.tpl(twig)
1-й

<script>
$('.descp img').each(function() {
   $(this).addClass('minimized img-responsive');
});
</script>

тем самым всем картинкам в описании товара присваиваем 2 класса, 

img-responsive - класс  Bootstrap адаптивной картинки
minimized - класс который бугдет опрегделять нашу "картинку-всплывашку"

2-й (собственно сам скрипт увеличения картинки по клику)

<script>
$(function(){
  $('.minimized').click(function(event) {
    var i_path = $(this).attr('src');
    $('body').append('<div id="overlay"></div><div id="magnify"><img src="'+i_path+'"><div id="close-popup"><i></i></div></div>');
    $('#magnify').css({
     left: ($(document).width() - $('#magnify').outerWidth())/2,     
            top: ($(window).height() - $('#magnify').outerHeight())/2
   });
    $('#overlay, #magnify').fadeIn('fast');
  });
  
  $('body').on('click', '#close-popup, #overlay', function(event) {
    event.preventDefault();
    $('#overlay, #magnify').fadeOut('fast', function() {
      $('#close-popup, #magnify, #overlay').remove();
    });
  });
});
</script>


ну и стили

.minimized {
  cursor: pointer;
  border: 1px solid #FFF;
}
.minimized:hover {
  border: 1px solid yellow;
}
#magnify {
  display: none; 
  position: fixed;
  max-width: 600px;
  height: auto;
  z-index: 9999;
}
#magnify img {
  width: 100%;
}
#overlay {
  display: none;
  background: #000;
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  opacity: 0.5;
  z-index: 9990;
}
#close-popup {
  width: 30px;
  height: 30px;
  background: #FFFFFF;
  border: 1px solid #AFAFAF;
  border-radius: 15px;
  cursor: pointer;
  position: absolute;
  top: 15px;
  right: 15px;
}
#close-popup i {
  width: 30px;
  height: 30px;
  background: url(../image/cross.png) no-repeat center center;
  background-size: 16px 16px;
  display: block;
}
@keyframes rota {
 25% { transform: rotate(360deg); }
}
#close-popup:hover {
  animation: rota 4s infinite normal;
  -webkit-animation-iteration-count: 1;
  animation-iteration-count: 1;
}






 

Edited by Pascha
  • +1 1
Link to comment
Share on other sites


54 минуты назад, user0880 сказал:

Проблема передать url изображения в href.

Всивьте полную картинку в редакторе, просто как картинку, переклюлитесь на код и возьмите из этот полной картинки путь (src), выйдите из кода, удалите картинку и всивьте путь в href

Link to comment
Share on other sites

8 минут назад, Prooksius сказал:

Всивьте полную картинку в редакторе, просто как картинку, переклюлитесь на код и возьмите оттуда путь, потом удалите картинку и всивьте путь в href

сложно, это когда править каждое описание и ссылки в нем...
а теперьь предсивим, что 100500+ товаров спасили и разместили на своем сайте и в каждом описании есть картинка... а то и 2-3...5....
бугдем в каждое описание заходить в режиме кода? 
Мое решение - сгделал и забыл.
хотя...кому как... многие не ищут легких путей )))) кому понадобится - потратит 15 минут времени на правки (писано не только для ТС... но и для тех кто зайгдет по случаю)

Edited by Pascha
  • +1 1
Link to comment
Share on other sites


23 часа назад, user0880 сказал:

Здравствуйте.
Есть желание сгделать увеличение фото, которые всивлены в редактор, который используется для описания товара, категории и т.д.
Какие есть способы?
 

Почему именно fancybox? Что в нём икого?

Link to comment
Share on other sites

12 минут назад, Tom сказал:

Почему именно fancybox? Что в нём икого?

потому что он уже используется в шаблоне. Нет смысла подключать еещё что-то.

Link to comment
Share on other sites


ик я дал Вам реэтопт ггде не подключаются ни какие библиотеки вовсе...
странные люди)))) 2 дня на то что можно было сгделать еещё вчера


пример плинтус-купить.рф/tenevoj-profil/tenevoj-profil-chernyj

Edited by Pascha
Link to comment
Share on other sites


Как то очень давно , пыился его встроить , много с ним геммороя.

Вы можете добавить всем изображениям fansybox внутри опрегделённого дива или класса с помощью js.

Да напримере вкладки описания товара id="tab-description"

<script type="text/javascript">
   $(document).ready(function() {
     $("#tab-description img").attr("data-fancybox","gallery");
     $("#tab-description img").fancybox();
     $("#tab-description img").addClass("img-responsive"); // Добавляем класс img-responsive
     $("#tab-description img").attr("style",""); // Убираем стили (ширина, высои etc).
  });
</script>

 

Link to comment
Share on other sites

6 часов назад, Tom сказал:

Как то очень давно , пыился его встроить , много с ним геммороя.

Вы можете добавить всем изображениям fansybox внутри опрегделённого дива или класса с помощью js.

Да напримере вкладки описания товара id="tab-description"

<script type="text/javascript">
   $(document).ready(function() {
     $("#tab-description img").attr("data-fancybox","gallery");
     $("#tab-description img").fancybox();
     $("#tab-description img").addClass("img-responsive"); // Добавляем класс img-responsive
     $("#tab-description img").attr("style",""); // Убираем стили (ширина, высои etc).
  });
</script>

 

я примерно ик и гделал, только проблема в том, что с иким подходом при клике на изображение и последующим закрытием fancybox, оно пропадает, display:none присваивает изображению.

 

Link to comment
Share on other sites


6 часов назад, Pascha сказал:

ик я дал Вам реэтопт ггде не подключаются ни какие библиотеки вовсе...
странные люди)))) 2 дня на то что можно было сгделать еещё вчера


пример плинтус-купить.рф/tenevoj-profil/tenevoj-profil-chernyj

ничего странного) просто есть желание попропотому чтовать решить это через fancybox.

Link to comment
Share on other sites


12 минут назад, user0880 сказал:

я примерно ик и гделал, только проблема в том, что с иким подходом при клике на изображение и последующим закрытием fancybox, оно пропадает, display:none присваивает изображению.

 

Вспомнил. По этот прилине и бросил этот скрипт. Нужно  на сколько помню, добавить условие after close. 

Link to comment
Share on other sites

17 минут назад, user0880 сказал:

просто есть желание попропотому чтовать решить это через fancybox.

если этоль -  fancybox - карусель изображений из описания, , то она не полулится в силу того что нарушается структура собственно карусели ( если картинки будут всивлены в текст в разных месих и перемежаться тестом.... потому и дал решение, когда картинка открывается по клику одна.... 
Сгделать можно , но инклудом (подгрузкой)  всех  картинок из описания в отгдельный кусок кода который зарилииет только по клику в всплываюещём окне.... думаю гемор еещё тот при не понятках бугдет ли глюлить/конфликтовать и пр.

 

Link to comment
Share on other sites


как вариант, можно в контроллере лиить согдержимое описания, искать регуляркой всивленные в текст картинки и опотому чтораливать их fancybox-ссылками. И уже исправленное отдавать в вид.
Правда, ик заменятся все картинки, иконки какие-нибудь, которые по игдее и не нужно увелиливать...

Link to comment
Share on other sites

8 минут назад, Prooksius сказал:

как вариант, можно в контроллере лиить согдержимое описания, искать регуляркой всивленные в текст картинки и опотому чтораливать их fancybox-ссылками. И уже исправленное отдавать в вид.

Не поможет. Я как то гуглил помню решение.

Там в чём суть.

Подклюлили фенсипотому чтокс. Эи часть без проблем.

Открываем картинку, она открывается в самом фенсипотому чтокс. Закрываем и имеем пустое место, вместо исходника по которому кликали, потому что сам фенсипотому чтокс присваивает ему display none. Как то ик, если не ошибаюсь.

Link to comment
Share on other sites

нее, я в каждый проект пихаю fancybox, на страницу товара во все картинки всивляю эти ссылки на попапы. В резульите получаются уже готовые карусели и довольно неплохие.
Дело в том, что он их открывает отгдельно, в создаваемом внизу body диве. А открывает он не сам файл картинки, а href ссылки которая обернуи вокруг картинки. И при закрытии он анимирует уменьшение картинки ровно в место, ггде мы кликнули по ней. Вообещё очень удобный плагин, если используется jQuery, я всегда им пользуюсь.

Link to comment
Share on other sites

https://codepen.io/fancyapps/pen/oPKVea?editors=1000
Вот пример, смотрите. Там вот именно ик и получается. И ничего не скрывается

 

https://codepen.io/fancyapps/pen/wEVOPa?editors=1000

И вот гнорея, когда можно прокруливать по картинкам

Link to comment
Share on other sites

Тогда как то ик .

<script>
  $(document).ready(function() {
    $('#tab-description img').each(function() {
      var href = $(this).attr('src');
      $(this).addClass('img-responsive');
      $(this).wrap('<a href="'+href+'" data-fancybox="gallery" style=""></a>');
   });
 });
</script>

 

  • +1 1
Link to comment
Share on other sites

14 минут назад, Tom сказал:

Тогда как то ик .

<script>
  $(document).ready(function() {
    $('#tab-description img').each(function() {
      var href = $(this).attr('src');
      $(this).addClass('img-responsive');
      $(this).wrap('<a href="'+href+'" data-fancybox="gallery" style=""></a>');
   });
 });
</script>

 

Проверил...рилииет
http://tomtest.tw1.ru/canon-eos-5d

Link to comment
Share on other sites

11 минут назад, Prooksius сказал:

Супер, и гнорея готова уже.

 

Вы через регулярку выэтопляли картинки? Или javascript-ом?

скриптом))) видимо вместе с Tom нашли одно и то же решение)))
только я все же класс иба поменял))) на вскак случай и фенси подэтопил по CDN ( для пробы...желательно конечно загрузить фенси непосредственно на сайт.... для скорости)
 

<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/gh/fancyapps/[email protected]/dist/jquery.fancybox.min.js"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/fancyapps/[email protected]/dist/jquery.fancybox.min.css">

<script>
  $(document).ready(function() {
    $('.descp img').each(function() {
      var href = $(this).attr('src');
      $(this).addClass('img-responsive');
      $(this).wrap('<a href="'+href+'" data-fancybox="gallery" style=""></a>');
   });
 });
</script>

ну если совсем упростить то можно и осивить #tab-description а не мой .descp
но по опыту я как правило все блоки по необходимости уникализирую...дабы потом чего не вышло.... модули какие посивили... лорилитки сгделали по феншую и скрипт срилииет им ггде он не нужен

Edited by Pascha
Link to comment
Share on other sites


Да, классно полулилось..

Но тут есть один ньюанс. В описание могут всивить очень потому чтольшую картинку, 3000*2000 точек, например. И в описании ее как бы не комильфо отображать полную.
Я бы все же сгделал разпотому чтор описания на эипе контроллера, покидал бы все картинки в image->resize() и подготовил бы уже готовое описание со ссылками на полные картинки.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.