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

prettyPhoto

  • 15 декабря 2015 г. , редакция: 15 декабря 2015 г.
  • День добрый.
    Кручу файловый архив, у меня документация.
    В files.view.list.php хочу выводить изображение титульного листа документа, ссылку на files.view.id.php убрал.
    Планирую в место files.view.id.php оставить две кнопки, "Скачать" и "Просмотр", через "Просмотр" запускается prettyPhoto.
    Пытался колдовать с этим куском из files.view.id.php в файле files.view.list.php
    Цитата
    if (! empty($result["img"]))
    {

    foreach ($result["img"] as $img)
    {
    switch($img["type"])
    {
    case 'animation':
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">';
    break;
    }
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_('Смотреть pdf').'</a>';
    }
    echo '</div>';
    }


    Но либо не выводит картинки, либо нет реакции.
    Кто ни будь что то подобное реализовывал?
  • 15 декабря 2015 г.
  • Пытался так в files.view.list.php
    Код
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_('Просмотр').'</a>';

    Не грузит, еще ведь на страницы выводится одно фото, а грузить должно все прикрепленные к файлу.

    • 16 декабря 2015 г.
    • Цитата
      Пытался так в files.view.list.php

      Цитата
      echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_('Просмотр').'</a>';

      Конечно не мое это дело, но все же елси
      Цитата
      BASE_PATH.$img["link"]

      ссылка не битая, то попробуйте вот так
      Код

      echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_("Просмотр").'</a>';
      • 16 декабря 2015 г.
      • Виталий, а в чем разница между кодом, который я пытался использовать и Вашим? Вроде все совпадает.
        • 16 декабря 2015 г.
        • Цитата
          в чем разница между кодом

          Кавычки нужно другие ставить, т.е. не эти
          Цитата
          $this->diafan->_('Просмотр')

          а вот эти
          Код
          $this->diafan->_("Просмотр")
          • 16 декабря 2015 г. , редакция: 16 декабря 2015 г.
          • Почему? По всему diafanу
            Код
            //счетчик просмотров
            if(! empty($result["counter"]))
            {
            echo '<div class="files_counter">'.$this->diafan->_('Просмотров').': '.$result["counter"].'</div>';
            }
            • 16 декабря 2015 г. , редакция: 16 декабря 2015 г.
            • Нет, я говорю о правилах использования кавычик в php.
              Т.е. эта строчка
              Код
              echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_("Просмотр").'</a>';

              должна быть именно такой (относительно использования кавычек).
              О других строчках я не говорю, т.к. Вы их не приводили в своем вопросе.
              Цитата

              //счетчик просмотров
              if(! empty($result["counter"]))
              {
              echo '<div class="files_counter">'.$this->diafan->_('Просмотров').': '.$result["counter"].'</div>';
              }

              В этом примере все верно (исправлять не требуется)
              • 16 декабря 2015 г.
              • Так вроде это только название кнопки, как оно на функцию повлияет, тем более, что это рабочая строка из files.view.id.php?
                Не утверждаю! Спрашиваю!
              • 16 декабря 2015 г.
              • Цитата
                В этом примере все верно (исправлять не требуется)

                не, ошибся, считаю не верным. Должно быть так
                Код

                //счетчик просмотров
                if(! empty($result["counter"]))
                {
                echo '<div class="files_counter">'.$this->diafan->_("Просмотров").': '.$result["counter"].'</div>';
                }
  • 15 декабря 2015 г.
  • Плюнул я на это. Работы куча, не до излишеств ))) Просто разместил фото страниц pdf в files.view.id.php, через кнопку "Просмотр". Буду извращаться в долгие новогодние каникулы в ожидании их (когда они закончатся )
  • 16 декабря 2015 г. , редакция: 16 декабря 2015 г.
  • Цитата
    Так вроде это только название кнопки, как оно на функцию повлияет ...

    На функцию это ни как не влияет, а влияет на интерпритатор php.
    Цитата
    ..., тем более, что это рабочая строка из files.view.id.php?

    Вы привели в качестве примера только это
    Цитата
    echo '<a href="'.BASE_PATH.$img["link"].'" rel="prettyPhoto[gallery'.$result["id"].'files]">'.$this->diafan->_('Просмотр').'</a>';

    Цитата
    //счетчик просмотров
    if(! empty($result["counter"]))
    {
    echo '<div class="files_counter">'.$this->diafan->_('Просмотров').': '.$result["counter"].'</div>';
    }

    Поэтому могу говорить только о данных строчках кода (свое мнение я изложил выше по тексту)
    Цитата
    Не утверждаю! Спрашиваю!

    Еще раз повторюсь php очень чувствителен к используемым кавычкам (в отличии, например, от javascript). Поговорите с программистами, они Вам наверняка приведут кучу примеров, когда пол дня писали на php, а затем трое суток в километровом коде искали ошибку (т.е. где-то не ту кавычку поставили)
    • 16 декабря 2015 г. , редакция: 16 декабря 2015 г.
    • Не спорю, но у diafan везде так
      Код
      '.$this->diafan->_('Просмотр').'</a>';
      а не так
      Код
      '.$this->diafan->_("Просмотр").'</a>';

      Даже во взятых примерах на просторах интернета порой приходилось менять двойные кавычки на одинарные, ибо ошибка (на выходе).
      • 16 декабря 2015 г. , редакция: 17 декабря 2015 г.
      • Цитата
        Даже во взятых примерах на просторах интернета порой приходилось менять двойные кавычки на одинарные, ибо ошибка (на выходе).

        Попытаюсь очень коротко (т.к. китайцы все же выключили google ..., правда только у себя на родине).
        В php строчку можно заключать в одинарные, так и в двойные кавычки. Разница в том, что при использовании двойных кавычек компилятор php будет искать переменные, а в одинарных нет. Пример:
        Код
        $n = 123;
        $s = 'количество';
        $result = "$s = $n";
        echo $result; //выведет: количество = 123

        Также переменные можно вынести (соединить их с строкой оператором конкатенации). На всякий случай, оператор конкатенации - это обычная точка.
        Код
        $n = 123;
        $s = 'количество';
        $result = $s . ' = ' . $n;
        echo $result; //выведет: количество = 123

        Продолжу (ниже код понятен без слов):
        Код
        $s = "количество сотрудников фирмы "А" не меньше 10 человек"; // не правильно
        $s = "количество сотрудников фирмы 'А' не меньше 10 человек"; // правильно
        $s = 'количество сотрудников фирмы "А" не меньше 10 человек'; // правильно

        Последняя форма записи наиболее правильная. Потому, как php не ищет в строке переменные (следовательно код отработается быстрее). Но "фанатеть" от этого - лишнее. Также, говорить что остальные формы записи не верны - это всё равно, что утверждать: "Сегодня я встал с левой ноги, и поэтому пришел на работу раньше, чем когда я вставал с правой" (хотя одна нога короче другой - это факт. Пример: в лесу люди без ориентира ходят кругами, правда, у одних круг больше чем у других - девчонкам этот факт нравится). Однако если вы работаете с большими объёмами данных - прирост скорости будет существенней. В пределах нескольких строк данный момент можно проигнорировать.

        Кавычки можно экранировать. Т.е. можно использовать одинарную кавычку внутри строки, только ее необходмо предварительно экранировать обратной косой чертой (\). Если нужно написать обратную косую черту, тогда надо ее дублировать (\\). Все остальные случаи применения обратной косой черты будут интерпретированы как обычные символы: это означает, что если Вы попытаетесь использовать другие управляющие последовательности, такие как \r или \n, они будут выведены как есть вместо какого-либо особого поведения.
        Пример:
        Код
        $s = 'количество сотрудников фирмы "D\'Art" не меньше 10 человек';
        echo $s; // на выходе: количество сотрудников фирмы "D'Art" не меньше 10 человек

        Двойные кавычки
        Если строка заключена в двойные кавычки, php распознает и управляющие последовательности (специальные символов): \n, \r и т.п.

        Далее. В операторе include можно использовать двойные кавычки. А например в операторе count их использовать вообще не надо.

        Для размышления. Индекс ассоциативного массива должен быть в кавычках, пример:
        Код
        $arr['abc'] = 'xxx';

        а не
        Код
        $arr[abc] = 'xxx';

        Хотя второй вариант работает, но до определенной поры:
        Первая пора - если в коде инициировать константу с аналогичным именем, то результат не станет ожидаемым. Т.е. причина в том, что этот код содержит неопределенную константу (abc), а не строку ('abc' - обратите внимание на кавычки), и php может определить константу, которая будет иметь то же самое имя. А иногда работает, потому что php автоматически преобразует голую строку (не заключенную в кавычки строку, которая не соответствует ни одному из известных символов) в строку, которая содержит голую строку. Например, если константа с именем abc не определена, то php заменит abc на строку 'abc' и использует ее. Однако, это не означает, что нужно всегда заключать ключ в кавычки. Нет необходимости заключать в кавычки константы или переменные, поскольку это помешает php обрабатывать их.
        Втора пора - наступает, когда Вы переведете error_reporting() в режим отображения ошибок уровня E_NOTICE (такой как E_ALL), вы увидите эти ошибки. По умолчанию error_reporting установлена их не отображать.
        Пример перевода:
        Код

        <?php
        // Давайте покажем все ошибки
        error_reporting(E_ALL);

        ...

        ?>


        В общем много особенностей.
        • 17 декабря 2015 г.
        • Цитата
          Не спорю, но у diafan везде так

          Цитата
          '.$this->diafan->_('Просмотр').'</a>'

          Учитывая изложенное выше, можно и так. Т.е. у Вас ошибка из-за того, что Вы кэш НЕ СБРОСИЛИ.
        • 28 декабря 2015 г. , редакция: 28 декабря 2015 г.
        • В дополнение приведу практический случай (исключительно в качестве примера выше сказанного по вопросу правильного использования кавычек):
          в оригинальном файле cms.diafan.5.4.13.0 \modules\images\admin\images.admin.view.php присутствует следующая строка
          Код

          .($k == 1 ? ' alt="'.$this->diafan->_('Главное изображение').'" title="'.$this->diafan->_('Главное изображение').'"' : '').' class="image">'

          так ват в этой строке присутствует ошибка в использовании кавычек - результат ошибки Вы можете увидеть на рис.1
          А вот правильное изложение данной строки
          Код

          .($k == 1 ? ' alt="'.$this->diafan->_("Главное изображение").'" title="'.$this->diafan->_("Главное изображение").'"' : '').' class="image">'

          результат исправления ошибки Вы можете увидеть на рис.2

          PS: отдельно отмечу для тех, у кого особая чувствительность к техническим опечаткам - данная ошибка в принципе никакого негативного воздействия на cms не оказывает.
  • 16 декабря 2015 г.
  • Цитата
    Еще раз повторюсь php очень чувствителен к используемым кавычкам (в отличии, например, от javascript).

    Не более, чем. Просто в php значения в разных кавычках обрабатываются по разному: Строкиhttp://fi2.php.net/manual/ru/language.types.string.php

Новости

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