getFacebookPhotos
Последнее обновление not available | История страницы | Улучшить эту страницу | Сообщить о проблеме
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn moreСниппет getFacebookPhotos формирует списки альбомов и фото профиля Facebook (пользователя или страницы). В текущей версии работает только с публичными данными. Всё активно кэшируется ради производительности. Для более свежих данных настройте свойства кэша.
getFacebookPhotos использует собственный кэш, поэтому его можно вызывать без кэша MODX.
Доступные свойства¶
Список актуален для версии 1.0.0. Обязательные свойства выделены жирным.
| Property | Accepted Values | Description | Default Value |
|---|---|---|---|
| user | ID or name | Имя или ID пользователя или страницы, откуда загружать фото. Например "modxcms" для страницы MODX в Facebook. | |
| albums | comma separated list of IDs or names | Чтобы показать только выбранные альбомы, укажите их имена или ID через запятую. Имя альбома можно изменить, поэтому лучше использовать ID. | |
| perAlbum | 1 or 0 | Группировать изображения по альбомам. Включает свойство albumTpl как обёртку для каждого альбома. | 1 (true) |
| Templates & Output | |||
| albumTpl | name of a chunk | Чанк-обёртка для набора изображений конкретного альбома. Используется только при включённом perAlbum. | See Templating - albumTpl below. |
| albumSeparator | anything | Строка-разделитель между альбомами. | <br /> |
| outerTpl | name of a chunk | Чанк-обёртка для всего результата, включая альбомы и их изображения. | See Templating - outerTpl below. |
| photoTpl | name of a chunk | Чанк для отдельного изображения. | See Templating - photoTpl below. |
| photoSeparator | anything | Строка-разделитель между изображениями. | \n (linebreak) |
| Pagination | |||
| offset | number | С какой позиции начинать выборку для пагинации getPage или чтобы пропустить первые элементы. | 0 |
| limit | number | Число элементов на страницу для getPage или общий лимит без пагинации. | 20 |
| Caching | |||
| cacheOutput | 1 or 0 | При включении кэшируется вывод, включая содержимое чанков, для ещё большей производительности. Тогда чтобы увидеть изменения в tpl-чанках, нужно явно задать другую опцию сниппета, вручную очистить каталог core/cache/socialsuite/_processed/facebook/photos/ или дождаться истечения кэша изображений или альбомов. По умолчанию выключено. | 0 (false) |
| cacheExpires | number (seconds) | Время в секундах, в течение которого действует кэш альбомов. Кэш альбомов содержит список имён и ID альбомов, а также сырые данные Graph API Facebook. При запросе альбомов все их изображения запрашиваются одним большим запросом вместо множества маленьких. Это заметно ускорило работу. | 172800 (= 2 days) |
| cacheExpiresPhotos | number (seconds) | Время в секундах, в течение которого действует кэш фото. См. также cacheExpiresPhotosVariation ниже. Фото кэшируются по альбомам, в кэше сырые данные Graph API Facebook через FQL. Это значение не может быть больше cacheExpires: при загрузке альбомов для каждого альбома сразу подтягиваются все фото и кэш обновляется. Да, значение по умолчанию здесь действительно выглядит странно :P | 345600 (= 4 days) |
| cacheExpiresPhotosVariation | number (seconds) | Если cacheExpiresPhotos меньше cacheExpires, кэш фото в отдельных альбомах обновляется раньше полного кэша альбомов. Тогда новые фото в альбомах могут появиться *раньше*, чем новые альбомы. |
Кэш альбомов загружает все альбомы и все их фото одним оптимизированным запросом. Если внезапно истечёт только кэш фото, все видимые альбомы начнут делать мелкие запросы к Facebook, и производительность проседает. Свойство cacheExpiresPhotosVariation сглаживает это, разносит моменты истечения кэша фото.
Допустим, getFacebookPhotos показывает три альбома с cacheExpires 2 дня и cacheExpiresPhotos 12 часов. Каждые 12 часов Facebook получит 3 запроса фото для этих альбомов. Без cacheExpiresPhotosVariation срок истечения у каждого альбома совпадал бы, и одному посетителю пришлось бы ждать 3 ответа от Facebook (это не всегда быстро). Тогда включается cacheExpiresPhotosVariation. При значении 1 час (по умолчанию) срок кэша фото для каждого альбома случайно попадает в диапазон ±1 час от cacheExpiresPhotos: в нашем примере между 11 и 13 часами. Один посетитель не ждёт 3 запроса подряд, нагрузка распределяется на трёх. Win-win-win-win! | 3600 ( = 1 hour) |
Шаблоны¶
Для ленты фото Facebook доступны три чанка: photoTpl для каждого фото, albumTpl для обёртки альбомов при включённом perAlbum и outerTpl для всего вывода.
Ниже значения по умолчанию и доступные плейсхолдеры.
photoTpl¶
Чанк по умолчанию:
<li>
<img src="[[+src_small]]" width="[[+src_small_width]]" height="[[+src_small_height]]" />
</li>
Плейсхолдеры для photoTpl. Часть может быть недоступна из-за прав.
| Placeholder | Type | Description |
|---|---|---|
| object_id | int | object_id фото. |
| pid | string | ID запрашиваемого фото. pid не длиннее 50 символов. |
| aid | string | ID альбома с этим фото. aid не длиннее 50 символов. |
| owner | string | ID пользователя-владельца фото. |
| src_small | string | URL миниатюры. Максимум 75px по ширине и 225px по высоте. URL может быть пустым. |
| src_small_width | int | Ширина миниатюры в px. Может быть пустой. |
| src_small_height | int | Высота миниатюры в px. Может быть пустой. |
| src_big | string | URL полноразмерной версии. Максимум 960px по ширине или высоте. |
| src_big_width | int | Ширина полноразмерной версии в px. Может быть пустой. |
| src_big_height | int | Высота полноразмерной версии в px. Может быть пустой. |
| src | string | URL версии для просмотра альбома. Максимум 130px по ширине или высоте. URL может быть пустым. |
| src_width | int | Ширина версии для альбома в px. Может быть пустой. |
| src_height | int | Высота версии для альбома в px. Может быть пустой. |
| link | string | URL страницы Facebook с этим фото. |
| caption | string | Подпись к фото. |
| created | time (unix) | Дата добавления фото. Форматируйте output filter "date". |
| modified | time (unix) | Дата последнего изменения фото. Форматируйте output filter "date". |
| position | int | Позиция фото в альбоме. |
| album_object_id | int | object_id альбома, к которому относится фото. |
| place_id | int | Facebook ID места, связанного с фото, если есть. |
| images | array | Массив объектов с width, height, source для разных размеров. Пример: [[+images.2.source]]. |
| like_info | object | Информация о лайках: can_like, like_count, user_likes. |
| comment_info | object | Информация о комментариях: can_comment и comment_count. |
| can_delete | bool | true, если зритель может удалить фото. |
albumTpl¶
Чанк albumTpl по умолчанию. Для использования нужен включённый perAlbum.
<h2><a href="[[+link]]">[[+name]]</a> <span>([[+photo_count]] photos, created on [[+created:date=`%d/%m/%Y`]])</span></h2>
<div>
<ul>
[[+photos]]
</ul>
</div>
Доступные плейсхолдеры. Часть может быть недоступна из-за прав:
| Placeholder | Type | Description |
|---|---|---|
| photos | Фото альбома, разобранные через photoTpl. | |
| aid | string | ID альбома |
| object_id | int | object_id альбома в Facebook. Идентифицирует equivalentAlbum в Graph API. object_id также можно использовать для комментариев к альбому через Graph API Comments |
| owner | int | ID пользователя-владельца альбома |
| cover_pid | string | ID обложки альбома |
| cover_object_id | int | object_id обложки альбома |
| name | string | Название альбома |
| created | time (unix) | Время создания альбома в формате unix time. |
| modified | time (unix) | Время последнего обновления альбома в формате unix time. |
| description | string | Описание альбома |
| location | string | Местоположение альбома |
| size | int | |
| link | string | Ссылка на альбом в Facebook |
| visible | string | Видимость только для владельца альбома. Кто может видеть альбом. |
| modified_major | time (unix) | Время последнего крупного обновления (например, добавления фото) в формате unix time. |
| edit_link | string | URL редактирования альбома |
| type | string | Тип альбома: profile, mobile, wall или normal. |
| can_upload | bool | Может ли указанный UID загружать в альбом. |
| photo_count | int | Число фото в альбоме |
| video_count | int | Число видео в альбоме |
| like_info | object | Информация о лайках альбома: can_like, like_count, user_likes |
| comment_info | object | Информация о комментариях альбома: can_comment и comment_count |
outerTpl¶
outerTpl по умолчанию:
<ul>
[[+photos]]
</ul>
В этом шаблоне доступен только плейсхолдер "photos".
Примеры¶
Вариантов много!
Простой пример: группировка фото по альбомам с шаблонами по умолчанию¶
Вызов сниппета:
[[!getFacebookPhotos?
&user=`modxcms`
&perAlbum=`1`
]]
без настройки даёт такой вывод:
<h2><a href="http://www.facebook.com/album.php?fbid=437577137979&id=19110642979&aid=235059">Profile Pictures</a> <span class="smalldate">(1 photos, created on 12/09/2010)</span></h2>
<div class="gfp-photos-wrapper">
<ul>
<li class="gfp-photo">
<img src="http://photos-a.ak.fbcdn.net/hphotos-ak-snc6/179529_10150898281902980_465676445_t.jpg" width="75" height="75" />
</li>
</ul>
</div>
<br />
<h2><a href="http://www.facebook.com/album.php?fbid=10150883337702980&id=19110642979&aid=434455">CMS Expo 2012</a> <span class="smalldate">(33 photos, created on 12/05/2012)</span></h2>
<div class="gfp-photos-wrapper">
<ul>
<li class="gfp-photo">
<img src="http://photos-c.ak.fbcdn.net/hphotos-ak-ash3/529915_10150883341757980_1041537877_t.jpg" width="75" height="56" />
</li>
<li class="gfp-photo">
<img src="http://photos-d.ak.fbcdn.net/hphotos-ak-ash3/537753_10150883341637980_1323647473_t.jpg" width="75" height="56" />
</li>
<!-- ... -->
<li class="gfp-photo">
<img src="http://photos-c.ak.fbcdn.net/hphotos-ak-ash3/534903_10150883337842980_1414876671_t.jpg" width="75" height="50" />
</li>
</ul>
</div>
<!-- ... -->
Support the team building MODX with a monthly donation.
The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.
Backers
Budget
$204 per month—let's make that $500!
Learn more










