vgrish 05 апреля 2013 0 22
Добрый день ребята.
Затеял галерею с использованием “prettyPhoto” и столкнулся со следующей проблемой:
вывожу вот так элементы галереи

<article class="portfolio" data-category="photography">
                <section class="thumbImage">
                	<img src="assets/components/images/gallery/01-thumb.jpg" alt="" class="fullwidth">
                    <div class="thumbTextWrap">
                        <div class="thumbText">
                            <h3 class="sectionTitle">На Волге</h3>
                            <p>Мы с Саньком на рыбалке</p>
                            <a class="thumbLink" href="assets/components/images/gallery/01.jpg" rel="prettyPhoto[gallery1]" title=" "></a>
                        </div>
                    </div>
                </section>
            </article>

все отлично работает, но только с одной галереей. А мне необходимо как бы галерея в галерее, т.е. чтобы при клике на миниатюру у меня открывалось слйдшоу из конкретно указанной папки, и для каждой миниатюры таким образом.
каким образом это можно реализовать? у меня пока только мысль пришла в [iframes] загружать другое слайдшоу.
может есть более элегантное решение?
заранее спасибо огромное за вашу помощь!!!
22 комментария
Fi1osof1
Fi1osof 05 апреля 2013г в 17:23 #
Добрый день.

Обычно эти галереи работают с уже имеющимися ссылками. И различные группы картинок идентифицируют по какому-нибудь параметру (тот же rel используют). То есть на странице не надо обязательно миниатюры иметь, достаточно просто ссылок с адресами на картинки и идентификатором для галереи. Кликнув одно фото, можно будет листать эти фотки. То есть миниатюры — одна фотка из галереи, а остальное — просто ссылки, разбитые по блокам галерей.
vgrish1
vgrish 05 апреля 2013г в 17:40 #
мысль была выводить на одной странице миниатюры всех альбомов, а при клике на миниатюру подружалась бы галерея этого альбома без перезагрузки страницы. я так понимаю это невозможно на данный момент?
хотя нашел вот такой пример:
demo.freesoft.portonvictor.org/prettyPhoto-AJAX-test.html#prettyPhoto
вроде как раз то, но для меня это совсем сложно
Fi1osof1
Fi1osof 05 апреля 2013г в 18:17 #
мысль была выводить на одной странице миниатюры всех альбомов, а при клике на миниатюру подружалась бы галерея этого альбома без перезагрузки страницы.
Я вообще-то и объяснил, как это делается. Неясно выразился? Значит вы еще не изучили как вообще эти галереи работают. Это следует сделать прежде, чем пытаться их вывести.
vgrish1
vgrish 05 апреля 2013г в 20:32 #
Вдумался, стало понятно))) спасибо!!! оказывается все так просто…

просто добавил ниже

 <a href="http://components/focus/images/gallery2/gallery-02.jpg" rel="prettyPhoto[gallery2]" title="title 2"></a>
 <a href="http://components/focus/images/gallery2/gallery-03.jpg" rel="prettyPhoto[gallery2]" title="title 2"></a>
… и т.д.
Fi1osof1
Fi1osof 05 апреля 2013г в 20:50 #
Вот именно
vgrish1
vgrish 05 апреля 2013г в 21:12 #
можно еще тогда вопрос: если планирую много галерей, от 20 и выше и в каждой хотя бы по 50 фоток. каким образом, быстрее набивать эти ссылки? каким инструментом лучше воспользоваться, так чтоб не по одной фото загружать, а допустим по фтп скинул и все…
p.s. нельзя ли яндекс диск для хранения всего этого использовать или что либо подобное? или это пока не реализовать?
ilyautkin1
ilyautkin 05 апреля 2013г в 22:04 #
Готов поделиться своим решением, в ходе установки объяснить, как оно работает, что делает, как можно модифицировать и как использовать.

Естественно, не бесплатно…
vgrish1
vgrish 05 апреля 2013г в 22:13 #
в личку черканите пожалуйста, что да как… какие плюсы вашего решения и сколько тенге
ilyautkin1
ilyautkin 05 апреля 2013г в 22:39 #
Начал писать в личку, но решил выложить здесь.

Вот, небольшой скрипт самописный. На странице вызываю так, например: [[Gal? &galdir=`images/gal/tube`]]

Там есть несколько параметров, немножко некрасиво сделал то, что оформление с кодом смешано, но разобраться можно.

Сниппет берет все файлы из указанной папки, обходит их циклом, с помощью phpThumbOf генерирует превьюшки и выводит на страницу. Результаты кеширует, чтобы каждый раз в папку не лезть (например, если галерея выводится на нескольких страницах, генерироваться будет только 1 раз). Оттолкнувшись от него можно будет сделать свою галерею.

Если скрипт подойдет, но трудно будет разобраться, тогда поговорим о консультациях. Или если будут конкретные вопросы, пишите в клуб)
vgrish1
vgrish 05 апреля 2013г в 23:19 #
спасибо огромное, все работает… мне оформление и не надо как бы
мне достаточно вот такого вывода

 <a href="images/gallery_N/name.jpg" rel="prettyPhoto[gallery_N]" title="name_Galery_N"></a>


и все)))
спасибо!
vgrish1
vgrish 05 апреля 2013г в 23:48 #

<?php
$properties = implode("-", $scriptProperties);
$cache_key = "gal".$properties;
$output = $modx->cacheManager->get($cache_key);
if ($output) return $output;
$files = scandir($galdir, 0);
// если директории не существует
if (!$files) return false;
// удаляем . и .. (я думаю редко кто использует)
if ($sort == 0) unset($files[0],$files[1]);
else unset($files[count($files)-1], $files[count($files)-1]);

foreach ($files as $file) {
  if (!$each_href) {$href = $modx->runSnippet('phpthumbof', array("input" => "/$galdir/$file", "options" => "w=1100&h=1100"));} else {$href = $each_href;}
  $output .= $before.'<a href="'.$href.'" '.$class.' rel="prettyPhoto['.$galdir.']">
</a>'.$after."\n";
}
$modx->cacheManager->set($cache_key,$output);
return $output;

выводит то что нужно единственно индификатор это полный путь.
можно как то обрезать до названия папки?
ато сейчас он вот в таком виде rel=«prettyPhoto[assets/components/focus/images/gal]»
Fi1osof1
Fi1osof 05 апреля 2013г в 23:55 #
Извините, но столько много вопросов, касаемых самых основ — это очень плохая тенденция. Во-первых, никто не будет постоянно на них отвечать, сутки не резиновые. Во-вторых, это говорит о том, что вы сами мало пытаетесь искать ответы на свои вопросы. Сталкиваясь даже простейшими вопросами, вы не сидите, и не ломаете над этим голову, а просто идете спрашивать. Так вы ничему и никогда не научитесь. Будет бессмысленный копипастинг.
vgrish1
vgrish 06 апреля 2013г в 00:07 #
да блин оказывается все просто, надо просто прочитать)))
$name  = $scriptProperties['name'];

и вызываю
[[!Gal1? &galdir=`assets/components/focus/images/gal` &name=`[[*pagetitle]]` ]]
ilyautkin1
ilyautkin 06 апреля 2013г в 23:42 #
В принципе, строка
$name  = $scriptProperties['name'];
не нужна — MODX и сам создает переменные по именам всех параметров, так что можно получить доступ к значению любого параметра двумя способами — написать $name или $scriptProperies['name']

Кстати, есть еще одна фишка. Если написать так:
[[*pagetitle:Gal=`assets/images/gal`]]
то в сниппете значение [[*pagetitle]] будет помещено в переменную $input, а путь — в переменную $options (это сделано для того, чтобы можно было создавать свои модификаторы помимо стандартных, типа [[*longtitle:default=`[[*pagetitle]]`]]).

Кстати, сниппет phpthumbof является таким модификатором. И параметры в него можно передавать так:
[[+tv.img:phpthumbof=`w=50&h=50&zc=1`]]

или так:
[[phpthumbof? &input=`[[+tv.img]]` &options=`w=50&h=50&zc=1`]]


Теперь можно легко понять, что это за строчка такая в сниппете:
$modx->runSnippet('phpthumbof', array("input" => "/$galdir/$file"
                                    , "options" => "w=1100&h=1100"));
vgrish1
vgrish 07 апреля 2013г в 02:02 #
т.е. вызывать я и так могу

[[!Gal1? &galdir=`assets/components/focus/images/gal` &id=`[[*id]]` &options=`w=1100&h=1100`]]

выкинув ту бесполезную строчку, а options присвою "'.$options.'"
Спасибо за урок!) очень интересно!
vgrish1
vgrish 07 апреля 2013г в 09:54 #
вывожу некешированный ресурс с 60 фотографиями, обрабатывается гдето порядка 6 секунд. Хотел поинтересоваться, а если phpthumbof не обрабатывать фото а просто путь выводить, цикл ведь быстрее будет? Но тут путь как раз и формирует phpthumbof и его просто так не выкинуть да?
Fi1osof1
Fi1osof 07 апреля 2013г в 12:18 #
А вы попробуйте, и посмотрите, что получится.
vgrish1
vgrish 07 апреля 2013г в 12:20 #
я уже пробовал- получаю пусто)
ilyautkin1
ilyautkin 07 апреля 2013г в 12:41 #
Отключите плагин phpThumbofCacheManager — этот плагин каждый раз удаляет сгенерированные картинки при очистке кеша.
Fi1osof1
Fi1osof 05 апреля 2013г в 22:05 #
каким инструментом лучше воспользоваться, так чтоб не по одной фото загружать, а допустим по фтп скинул и все…
Если речь именно о наполнении галереи, то там есть такое дело как «Пакетная загрузка». Жмете ее, он сообщает о директории, где он будет искать фотки (можно изменить), и все. Грузите туда фотки, он все это скопирует в этот альбом. (каждый альбом придется так же создавать в ручную).
Есть еще там загрузка zip-архивом.
Это все в том случае, если используете именно Gallery.
p.s. нельзя ли яндекс диск для хранения всего этого использовать или что либо подобное? или это пока не реализовать?
Я.Диск нет (еще не видел анонса такого пакета, хотя надо бы написать). Но можно облако Amazon3S, соответствующий медиасурс из коробки идет.
vgrish1
vgrish 05 апреля 2013г в 22:12 #
спасибо… с вопросами пока закончено, надо пробовать)
Fi1osof1
Fi1osof 05 апреля 2013г в 22:12 #
Пожалуйста.
Авторизуйтесь или зарегистрируйтесь (можно через соцсети ), чтобы оставлять комментарии.