Писать на форуме DIAFAN.CMS могут только зарегистрированные пользователи. Войдите или зарегистрируйтесь.

Сделать предпросмотр товаров

  • 30 ноября 2013 г.
  • Как сделать предпросмотрт товара по типу как на http://www.wildberries.ru/catalog/571/child.aspx
    • 30 ноября 2013 г.
    • Вопрос какой-то обширный, не очень понятно, что у вас вызывает трудности для диафана.

      Вы не можете реализовать при наведении смену картинки, смену текста? С jquery по моему никаких проблем нету это сделать.
      Плагинов различных масса, на любой вкус и цвет, и можно взять даже скрипты с этого сайта примера.
      Если про кнопку быстрый просмотр, которая нажимается, то это обычное модальное окно, плагинов масса, да и можно самому такое написать.

      Делаешь конкретный товар(id), как на сайте примере. В итоге сразу два зайца, и id и быстрый просмотр.

      Подгрузка окна быстрого просмотра, либо iframe, либо js ajax.
      Ну, а грузить фактически тот же id(), чутка обрезанный, или вовсе необрезанный, но с другим шаблоном.
      • 02 декабря 2013 г.
      • По поводу создания окошка проблем нет, интересует вопрос именно подгрузки данных. Не хочется сразу все о товаре вываливать на странице списка, хотелось бы, чтобы подгружалось по аяксу как-то в определенный блок
        • 04 декабря 2013 г.
        • Илья уже говорил можно грузить просто другой шаблон например if(isset($_GET['ajax'])) в shop.php можно посмотреть в какой переменной шаблоны лежат. Тему страницы тоже можно менять динамически (если мне не изменяет память print_r($this));

          И получится по ?ajax - один шаблон без него стандартный... выводи в модальное окно и все.
          По поводу не хочу вываливать все товары в странице списка, ну а допустим медленное соединение у людей, через планшет смотрят... каждый раз подгружать AJAX а если он обратно пролистнул... тут надо делать что-то умное типа 5 товара в кеше - окно... туда сюда матаем подгружается :) чтоб без тормозов...

          Мне кажется вывести данные всех товаров на странице списка - не так уж и жестоко... если их не больше 10 конечно...
          • 04 декабря 2013 г. , редакция: 21 декабря 2013 г.
          • Ага, ну видимо привыкли, когда даже такие простые вещи нужно писать кодом, а может ещё и строчку говорить, аля строка 70 пропишите это и т.д. Мозг атрофируется в итоге, иногда всё же надо его включать!

            Инструкция более подробная.

            шаг 1.
            в контроллер shop, внутри, где решило уже что это id
            Код
            if(isset($_GET["action"]) && $_GET["action"] === 'quick_view')
            {
            $model->quick();
            } else
            $model->id();


            шаг 2.
            соответственно quick это в модели shop, копия id, только со своими особенностями, и обязательно empty шаблоном, подгрузка в очередной раз скриптов и css тут не нужна, нужен просто html.
            Код
            $this->result["theme"]='empty.php';
            $this->result["view"]= 'quick';

            Я указывал вначале функции quick, но может быть и в конце, а может где-то ещё, зависит от текущей реализации выбора шаблона и вьюхи системой cms.
            Пустой шаблон – пустой файл, empty.php – почти пустой, с проверкой есть такая или нет(404)
            шаг 3. (Подзагрузка в элемент, с id(#tabs-3), вставить в события либо клика на быстрый, либо open api модального, чтобы подгружалось по желанию поль-ля)
            Внутри load соответственно это должна быть просто ссылка на id, с доп. параметрами.
            Код
            $("#tabs-3").load("/shop/clivki-petmol/?action=quick_view");

            Можно заморочится и с управляемым ajax-ом, но в принципе хватит и этой строчки.
            шаг 4. сам шаблон вьюхи quick, и ссылка на быстрой просмотр, где она нужна.
            --
            Если это копия id всё ещё проще, добавляем пустой шаблон, в id прописываем динамический шаблон, строчка в скрипте, и сама собственно ссылка на кнопке просмотра. :)
            --

            P.S. страница будет в кэше, соответственно, если такого не должно быть - добавляем рандом параметр, или средствами jquery параметр = cache : false
    • 02 декабря 2013 г.
    • Как успехи?
      Я бы внедрил тоже на неск. сайтах.
      • 02 декабря 2013 г.
      • на advantshop повсеместно такое решение. http://demo.advantshop.net/ В коробку бы.
      • 18 декабря 2013 г.
      • В этом вопросе помогла техподдержка.

        Я создал чистый шаблон без оформления. где только контент, назвал его clear

        Для вылетающего окошка использовал prettyPhoto новый, с возможностью открытия iframe привязал к ссылке соответсвующие параметры. осталось только подменять шаблоны

        Ответ из ТП:

        Вы можете открывать страницу предпросмотра с помощью prettyPhoto, просто повесив атрибут на соответствующую ссылку. И к ссылке прикрепить ?templae=clear. В файле includes/parse_theme.php в функции show_theme задавайте шаблон при условии $_GET["template"] == 'clear'.

        Мой код, 50 строчка:

        Код
        if($_GET["template"] == 'clear') {
        $this->diafan->theme = 'clear.php';

        } else {

        if (! file_exists(ABSOLUTE_PATH.'themes/'.$this->diafan->theme))
        {
        $this->diafan->theme = 'site.php';
        }
        }

        • 18 декабря 2013 г.
        • пример в студию
          • 20 декабря 2013 г.
          • Присоединяюсь к просьбе Александра. И вообще, на мой взгляд, такому примеру место в практических примерах документации. В связи с эти вопрос к Виталию: может ваш технический писатель возьмет на себя труд оформить это!? Я думаю многие были бы благодарны за это.
            • 21 декабря 2013 г. , редакция: 21 декабря 2013 г.
            • так тут описывать нечего, всё уже описано, про открытие модального окна полно в интернете.
              по поводу ответа т.п. глупо проверять все странички на параметр, да и ещё так не безопасно без проверки на существование, потенциальная угроза зашита, мой вариант лучше, безопаснее и быстродейственнее, да и без смены вьюхи, будет открываться точная копия id

              iframe, pretty
              так:

              Код
              $(document).on('click', ".quick_view", function () {
              // при клике на быстрый просмотр(класс quick_view), вызываем модальное окно, в данном случае стандартное pretty
              $.prettyPhoto.open($(this).attr('href')+"?action=quick_view&type=text&iframe=true"); // открываем модальное окно в iframe
              // оно сразу в iframe открывается
              return false;
              });


              где quick_view, класс у ссылки быстрого просмотра, которая является просто ссылкой на id, как-то так
              //вьюха списка товаров.....
              echo '<a class="quick_view" href="'.BASE_PATH_HREF.$row["link"].'">Быстрый просмотр</a>';
              ....
  • 02 октября 2017 г.
  • А подниму-ка я темку, ибо больше ничего по данному вопросу не нашла.

    Как сделать быстрый просмотр товара при помощи стандартных средств (уже имеющихся в диафане)?
    Понятно, что можно прикрутить левый скрипт и делать любые рюшечки, но эти скрипты уже из ушей выплескиваются. Рано или поздно сайт ляжет под весом прикруток.

    В общем попыталась сделать так, как писал Александр https://user.diafan.ru/forum/show1516/#12445

    Сайт ругается нецензурно на строчку
    if($_GET["template"] == 'clear') {
    в /includes/parser_theme.php:51.

    Undefined index: template
    #1 Parser_theme->show_theme() called at [/includes/init.php:121]
    #2 Init->start() called at [/index.php:65]

    Или по прошествии четырех лет есть более правильный/красивый вариант сделать быстрый предпросмотр товара?

  • 02 октября 2017 г.
  • Изменила ссылку быстрого просмотра. Получилось:
    Код
    <a rel="prettyPhoto[ajax]" href="'.BASE_PATH_HREF.$row["link"].'?ajax=true">Быстрый просмотр</a>


    Выводится то, что нужно. Одна печаль: туда попадает шаблон shop.view.id.php.
    А здесь нужно подцепить другой шаблон, урезанный. Как это сделать?

    Может кто-нибудь помочь в данном вопросе?
    • 03 октября 2017 г.
    • Надо в контроллере условие прописать (shop.php)
      В функции public function init() в конце ее перед $this->model->result() :

      Код


      if(! empty($_GET["ajax"]))
      {
      $this->model->result["view"] = 'id_ajax';
      $this->model->result["theme"] = 'empty_for_ajax.php';
      }



      Где - id_ajax - название вьюхи (в папке будет называться shop.view.id_ajax.php),
      а empty_for_ajax.php - название темы из themes. В данной теме вы вырезаем все-всё кроме show-content ну и скрипты еще можно оставить если в корзину хотите класть.

      Так же если будете из этого окна класть в корзину - нужно будет еще кое-что допилить чтобы при его закрытии в родительском окне пересчитывалась корзина
      • 03 октября 2017 г. , редакция: 03 октября 2017 г.
      • Лучше в контроллер не лезть, а в прям в шаблоне прописать условие site_catalog.php или какой там у вас работает, может site.php

        Код
        <?php if($_GET["template"] == 'clear') : ?>

        <insert name="show_body">

        <? esle: ?>
        <!--тут весь остальной шаблон-->
        <?php endif; ?>


        так обновление движка будет нормально работать
  • 29 января, среда
  • Что-то не могу победить "быстрый просмотр" ) дополнительный шаблон не нужен, нужно чтобы просто во всплывающем окне выходил стандартный шаблон shop.view.id.php
    ссылка формата
    Код
    <a rel="prettyPhoto[ajax]" href="'.BASE_PATH_HREF.$row["link"].'?ajax=true">Быстрый просмотр</a>

    почему то не работает, точнее не ссылка не работает а prettyPhoto не подгружает, в окне пишет "The requested content cannot be loaded. Please try again later." Последняя версия diafan.cms. В чем может быть проблема? В какую сторону капать?
    • 29 января, среда
    • Да, уже давненько, вместо него, в системе используется fancybox !
      Вы что-то своё озвучили, и ни каких подробностей: ссылки, версии CMS и т. д.

Новости

Блоги

  • 16.11.2019
  • Достаточно широкой проблемой, которая вызывает множество вопросов, обращений в тех.поддержку и тем на форуме, является обновление, а именно ошибки, с ним связанные. Корни проблем, возникающих при этом, совершенно различны, но наиболее часто причина в кастомизации. И хоть определение это слишком широкое, всё же процедура выявления проблемы вполне стандартизована и проста. Об этом и пойдёт речь в статье.