Вход • Регистрация

Как сделать, чтобы нажав фото альбома перейти в альбом

  • 21 ноября 2015 г.
  • Добрый день! Вопрос по фотогалерее. Сейчас на главной фотогалереи по умолчанию есть заголовки и фото альбомов. Кликнув на заголовок переходим в альбом, кликнув на фото альбома получаем большое изображение фотки. Подскажите, плз, где и что поменять в коде (как я понимаю, в phoho.view.first_page), чтобы при нажатии на фото альбома переходить в сам альбом. Я понимаю, что это где-то здесь, но что-то туплю уже несколько часов:

    //название альбома
    echo '<a href="'.BASE_PATH_HREF.$cat["link_all"].'" class="photo_cat_link">'.$cat["name"].' ('.$cat["count"].')</a>';

    //рейтинг альбома
    if (! empty($cat["rating"]))
    {
    echo '<div class="photo_cat_rating">'.$cat["rating"].'</div>';
    }
    //вывод изображений альбома
    if (! empty($cat["img"]))
    {
    echo '<div class="photo_cat_img">';
    foreach ($cat["img"] as $img)
    {
    switch($img["type"])
    {
    case 'animation':
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'photo]">';
    break;
    case 'large_image':
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
    break;
    default:
    echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
    break;
    }
    echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
    .'</a> ';
    }
    echo '</div>';
    }
    else
    {
    //вывод нескольких фотографий из текущей категории (задается в настройках модуля)
    if ($cat["rows"])
    {
    echo '<div class="photo_cat_images">';
    echo $this->get('rows','photo',$cat);
    echo '</div>';
    }
    }

    Подскажете? Заранее спасибо!
    • 21 ноября 2015 г. , редакция: 21 ноября 2015 г.
    • Удаляем/коментируем эту строку
      Код
      echo $this->get('rows','photo',$cat);

      и ставим следующее
      Код

      //изображение
      if (!empty($row["img"])) {
      echo '<a href="' . BASE_PATH_HREF . $cat["link_all"] . '">';
      echo '<img src="' . $row["img"]["src"] . '" width="' . $row["img"]["width"] . '" height="' . $row["img"]["height"]
      . '" alt="' . $row["img"]["alt"] . '" title="' . $row["img"]["title"] . '">'
      . '</a>';
      }

      :) Вчера делал - думал это другой наш программист придумал - оказывается это теперь такая фича системы. Вон оно что.
      Видать это раньше так оно было как в приведёном мной примере.
      • 21 ноября 2015 г.
      • Денис, можете уточнить, что и куда - у меня последняя версия, поменял в скрипте по вашему способу:

        //вывод изображений альбома
        // if (! empty($cat["img"]))
        // {
        // echo '<div class="photo_cat_img">';
        // foreach ($cat["img"] as $img)
        // {
        // switch($img["type"])
        // {
        // case 'animation':
        // echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'photo]">';
        // break;
        // case 'large_image':
        // echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["//link_height"].'">';
        // break;
        // default:
        // echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        // break;
        // }
        // echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["//title"].'">'
        // .'</a> ';
        // }
        // echo '</div>';
        // }
        if (!empty($row["img"])) {
        echo '<a href="' . BASE_PATH_HREF . $cat["link_all"] . '">';
        echo '<img src="' . $row["img"]["src"] . '" width="' . $row["img"]["width"] . '" height="' . $row["img"]["height"]
        . '" alt="' . $row["img"]["alt"] . '" title="' . $row["img"]["title"] . '">'
        . '</a>';
        }
        else
        {
        //вывод нескольких фотографий из текущей категории (задается в настройках модуля)
        if ($cat["rows"])
        {
        echo '<div class="photo_cat_images">';
        // echo $this->get('rows','photo',$cat);
        echo '</div>';
        }
        }

        Просто пропали фото. Если вас не затруднит, буде благодарен за полный код файла photo.view.first_page заранее огромнейшее спасибо!
        • 21 ноября 2015 г.
        • Там в админке в настройке, можно сделать, чтобы по фотке в альбом заходить.
          Фото у альбома.
        • 23 ноября 2015 г. , редакция: 23 ноября 2015 г.
        • Ну написал-же
          Вместо
          Код

          echo $this->get('rows','photo',$cat);

          вставить
          Код

          //изображение
          if (!empty($row["img"])) {
          echo '<a href="' . BASE_PATH_HREF . $cat["link_all"] . '">';
          echo '<img src="' . $row["img"]["src"] . '" width="' . $row["img"]["width"] . '" height="' . $row["img"]["height"]
          . '" alt="' . $row["img"]["alt"] . '" title="' . $row["img"]["title"] . '">'
          . '</a>';
          }

          почему вы закоментировали вот ето я не понял
          Код

          //вывод изображений альбома
          // if (! empty($cat["img"]))
          // {
          // echo '<div class="photo_cat_img">';
          // foreach ($cat["img"] as $img)
          // {
          // switch($img["type"])
          // {
          // case 'animation':
          // echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'photo]">';
          // break;
          // case 'large_image':
          // echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["//link_height"].'">';
          // break;
          // default:
          // echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
          // break;
          // }
          // echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["//title"].'">'
          // .'</a> ';
          // }
          // echo '</div>';
          // }

          У меня файл с этим решением не родной вам он не подойдёт

          в итоге если опираясь на приведённый пример выше должно получится следующее
          Код

          //название альбома
          echo '<a href="'.BASE_PATH_HREF.$cat["link_all"].'" class="photo_cat_link">'.$cat["name"].' ('.$cat["count"].')</a>';

          //рейтинг альбома
          if (! empty($cat["rating"]))
          {
          echo '<div class="photo_cat_rating">'.$cat["rating"].'</div>';
          }
          //вывод изображений альбома
          if (! empty($cat["img"]))
          {
          echo '<div class="photo_cat_img">';
          foreach ($cat["img"] as $img)
          {
          switch($img["type"])
          {
          case 'animation':
          echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'photo]">';
          break;
          case 'large_image':
          echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
          break;
          default:
          echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
          break;
          }
          echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
          .'</a> ';
          }
          echo '</div>';
          }
          else
          {
          //вывод нескольких фотографий из текущей категории (задается в настройках модуля)
          if ($cat["rows"])
          {
          echo '<div class="photo_cat_images">';
          //echo $this->get('rows','photo',$cat);
          //изображение
          if (!empty($row["img"])) {
          echo '<a href="' . BASE_PATH_HREF . $cat["link_all"] . '">';
          echo '<img src="' . $row["img"]["src"] . '" width="' . $row["img"]["width"] . '" height="' . $row["img"]["height"]
          . '" alt="' . $row["img"]["alt"] . '" title="' . $row["img"]["title"] . '">'
          . '</a>';
          }
          echo '</div>';
          }
          }
          • 24 ноября 2015 г.
          • Денис, ещё раз спасибо, однако не помогло - полностью сделал код как вы написали - просто исчезли фотки, остались только названия альбомов... Блин. уже реально не знаю, что делать....
    • 26 ноября 2015 г.
    • Всё, вопрос закрыт, всем огромное спасибо за участие в обсуждении и за советы! В итоге техподдержка помогла понять, где я ступил. Надеюсь, это кому-нибудь тоже пригодится. Итоговое решение вопроса:

      Цитата
      ... Конечно, там же первым условием идет //вывод изображений альбома - так и написано в комментариях. Это те изображения, которые прикреплены к описанию самой категории, а не фотографии из альбома.

      Сами фотографии из альбома выводятся ниже, единой функцией $this->get('rows','photo',$cat); - это отдельный файл photo.view.rows.php и он выводит все списки фотографий. Его править нежелательно, т.к. ссылки с фотографий изменятся везде.

      Поэтому мы просто закомментировали вызов той функции извне, а внутрь photo.view.first_page.php перенесли её текст и там поправили ссылки. Сейчас все работает как надо.


      Итоговый кусок кода в photo.view.first_page.php:

      //вывод изображений альбома
      if (! empty($cat["img"]))
      {
      echo '<div class="photo_cat_img">';
      foreach ($cat["img"] as $img)
      {
      switch($img["type"])
      {
      case 'animation':
      echo '<a href="'.BASE_PATH.$cat["link_all"].'" rel="prettyPhoto[gallery'.$cat_id.'photo]">';
      break;
      case 'large_image':
      echo '<a href="'.BASE_PATH.$cat["link_all"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
      break;
      default:
      echo '<a href="'.BASE_PATH_HREF.$cat["link_all"].'">';
      break;
      }
      echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
      .'</a> ';
      }
      echo '</div>';
      }
      else
      {
      //вывод нескольких фотографий из текущей категории (задается в настройках модуля)
      if ($cat["rows"])
      {
      echo '<div class="photo_cat_images">';
      //echo $this->get('rows','photo',$cat); //переносим всю функцию сюда и здесь правим ссылку

      foreach ($cat["rows"] as $row)
      {
      echo '<div class="photo_item">';

      //вывод маленького изображения
      if (! empty($row["img"]))
      {
      echo '<a href="'.BASE_PATH_HREF.$cat["link_all"].'" class="photo_image">';
      echo '<img src="'.$row["img"]["src"].'" alt="'.$row["img"]["alt"].'" title="'.$row["img"]["title"].'">' .'</a>';
      }

      //вывод названия и, если используется, ссылки на отдельную страницу фотографии
      if (!empty($row["name"]))
      {
      echo '<div class="photo_name">';
      if (!empty($row["link"]))
      {
      echo '<a href="'.BASE_PATH_HREF.$cat["link_all"].'" class="photo_link">';
      }
      echo $row["name"];
      if ($row["link"])
      {
      echo '</a>';
      }
      echo '</div>';
      }
      //вывод краткого описания фотографии
      if (! empty($row["anons"]))
      {
      echo '<div class="photo_anons">'.$row['anons'].'</div>';
      }
      //вывод рейтинга фотографии
      if (! empty($row["rating"]))
      {
      echo '<div class="photo_rate rate">'.$row["rating"] . '</div>';
      }
      //теги фотографии
      if (! empty($row["tags"]))
      {
      echo '<div class="photo_tags">'.$row["tags"].'</div>';
      }
      echo '</div>';
      }



      echo '</div>';
      }
      }


      //краткое описание альбома
      if (! empty($cat["anons"]))
      {
      echo '<div class="photo_cat_anons">'.$cat['anons'].'</div>';
      }

      echo '</div>';
      }

      echo '</div>';

      Ещё раз всем огромное спасибо!
      • 26 ноября 2015 г.
      • Почему разработчики бегают ветряками сражаюццо а на такие нужные штуки забивают
        • 26 ноября 2015 г.
        • На какие?
          • 26 ноября 2015 г.
          • Только сегодня делал, чтобы при нажатие на фото у альбома переходило в раздел, делается 2 минуты.
          • 27 ноября 2015 г.
          • См сообщение- Александра Биг Яблоко
          • 27 ноября 2015 г.
          • Хотите переделать в коробке, чтобы все фотки из списка вели на альбом, что ли?
            • 27 ноября 2015 г.
            • Текущая логика непонятна пользователям - Лучше конечно так как сказал Биг Эпл
              Цитата
              "чтобы при нажатие на фото у альбома переходило в раздел"
              • 27 ноября 2015 г.
              • Все дело в настройке модуля фоотогалереи, где есть параметр "Количество фотографий выводимых в списке альбомов". Можно поставить 3, например, и тогда будет так, как на скриншоте.
                Соответственно, 1) ведет на альбом, а любое нажатие по фотке ведет на каждую фотку. Ведь если сделать ссылку с любой фотки на альбом - это бедт тоже не очень правильно?

                Плюс ко всему, не все хотят фотографии на отдельной странице. Кто-то в списке альбомов ставит "Показывать фотографий - 100", и убирает галку "Открывать фотографии на отдельной странице", тогда клик по фоткам из списка альбомов просто увеличивает фотки подряд.
                Если сделать безусловным переход из фотографий в списке альбомов вглубь альбома, то отпадает сразу две галки из настроек, как конфликтующие по логике.
  • 21 ноября 2015 г.
  • В настройках галереи поставьте галку открывать фото на отдельной странице. Хотя по умолчанию она должна быть активна.
    • 21 ноября 2015 г. , редакция: 21 ноября 2015 г.
    • Сергей, спасибо за совет, но это не вариант, так как в этом случае все фото В альбомах тоже будут открываться на отд страницах. Мне же нужно, чтобы в альбомах фотки окрывались с анимацией (приттифото), а вот с главной фотогалереи при нажатии на фото, соответствующее определенному альбому переход шел именно в раздел с этим альбомом, а не просто большое изо фотки показывалось, как сейчас...

      Вопрос в том, что и как правильно поменять в коде, чтобы с фото, соответствующего каждому альбому заменить ссылку на большое изо ссылкой на сам альбом...
      • 22 ноября 2015 г. , редакция: 22 ноября 2015 г.
      • сейчас у вас там что-то вроде
        Код
        //вывод изображений альбома
        if (! empty($cat["img"]))
        {
        echo '<div class="photo_cat_img">';
        foreach ($cat["img"] as $img)
        {
        switch($img["type"])
        {
        case 'animation':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$cat_id.'photo]">';
        break;
        case 'large_image':
        echo '<a href="'.BASE_PATH.$img["link"].'" rel="large_image" width="'.$img["link_width"].'" height="'.$img["link_height"].'">';
        break;
        default:
        echo '<a href="'.BASE_PATH_HREF.$img["link"].'">';
        break;
        }
        echo '<img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'">'
        .'</a> ';
        }
        echo '</div>';
        }


        Вам необходимо вместо BASE_PATH_HREF.$img["link"] поставить BASE_PATH_HREF.$cat["link_all"] и получится что-то вроде:
        Код
        //вывод изображений альбома
        if (! empty($cat["img"]))
        {
        echo '<div class="photo_cat_img">';
        foreach ($cat["img"] as $img)
        //тут мы убираем switch
        {
        echo '<a href="'.BASE_PATH_HREF.$cat["link_all"].'"><img src="'.$img["src"].'" width="'.$img["width"].'" height="'.$img["height"].'" alt="'.$img["alt"].'" title="'.$img["title"].'"></a>';
        }
        echo '</div>';
        }
        • 24 ноября 2015 г.
        • Алексей, спасибо, но, к сожалению, это почему-то не сработало. Сделал всё, как вы написали, ничего не поменялось. Скинул кэш - всё равно при нажатии на фотки идёт вывод большого изо...
          • 24 ноября 2015 г.
          • Это правильный способ. А где правили?
            /modules/photo/views/photo.view.first_page.php или есть тема с /custom/my/modules/photo/views/photo.view.first_page.php?
            • 24 ноября 2015 г.
            • Конечно в теме /custom/, с этим у меня всё четко... Буду пробовать дальше этот вариант "заводить", раз вы говорите, что так правильно. Спасибо!
              • 25 ноября 2015 г.
              • нужно править в /custom/тема/modules/photo/ а дальше файл, напишите какой меняете
        • 25 ноября 2015 г.
        • Цитата
          нужно править в /custom/тема/modules/photo/ а дальше файл, напишите какой меняете


          Правлю в /custom/sv/modules/photo/views/photo.view.first_page Уже связался с техподдержкой, по их совету добавил в код echo "11111111111"; чтобы убедиться, что меняется то, что нужно - выяснилось, что файл не обновляется... То есть я по тотал коммандеру его обновляю и вижу, что он на 100% обновлён, а на сайте ничего не меняется и 11111111111 тоже нет.

          Делаю как положено, то есть с включенным режимом разработки и отключенным кэшированием. Дополнительно ещё и кэш скинул, и в браузере страницу тоже исключительно через ctrl + обновить обновляю. Ботва какая-то. Сейчас жду помощи от техподдержки, как что выяснится - обязательно сюда отпишусь. А за код вам спасибо - он точно правильный, это уже подтвердили!
          • 26 ноября 2015 г. , редакция: 26 ноября 2015 г.
          • Осмелюсь спросить
            Цитата
            /custom/sv/modules/photo/views/photo.view.first_page
            у Вас для отображения страницы точно используется данный файл - photo.view.first_page.php.
            Скорее всего при отображении у Вас используется совсем другой. Посмотрите в админке или, как долгий вариант, ради эксперемента запихните echo "111", echo "222" и так далее во все вьюшки модуля photo, т.е. какой вариант на странице проявиться - та вьюшка и используется
            • 26 ноября 2015 г.
            • Виталий, спасибо за хороший совет - надо было мне так сделать с самого начала. Сейчас вопрос уже решился благодаря техподдержке - их ответ и итоговое решение я только что выложил в этой ветке.
  • 21 ноября 2015 г.
  • Интересно, планирует ли диафан переделать модуль фотогалерею?
    Замечаю плохую индексацию фоток.
    Вордпресс в этом плане рулит. Не знаю почему, но в диафан как-то задушены прямые пути на .jpg.
    • 24 ноября 2015 г.
    • Совершенно непонятная проблема. У нас не генерируются картинки, а лежат целиково, в отдельных папочках. Доступны по прямому обращению, отдают 200ОК, в коде указаны правильно. Не известно, что Яндексу не нравится.
      • 25 ноября 2015 г.
      • Одного моего клиента тоже эта проблема волнует!
        он из кожи лезет - фотки ставит и спрашивает - почему они не индексируются?

Новости

  • 18 июня
  • В сборке большое обновление demo-шаблона, дополнительная защита от спама, улучшение YML-импорта и еще много важного и интересного.
  • 24 апреля
  • В новой сборке совершили революцию в структурировании кастомизированной информации в шаблонах, добавили авторегистрацию пользователей, усовершенствовали защиту от спама, актуализировали накопительную скидку, а также улучшили производительность и стабильность работы системы.
  • 12 января
  • После выхода сборки 7.1 мы выпустили уже три патча, в каждом из которых улучшаем административную часть сайта. Сборка DIAFAN.CMS 7.1.3 уже доступна к установке. 

Форум