Сетка сателитов и парсер контента на MODX Revo (часть 5)

03 марта 2016, 21:30


В этой статье мы рассмотрим как можно сделать симпатичную сетку сателитов с разными дизайнами. Советую конечно купить вёрстку понравившихся сайтов на http://themeforest.net/ в HTML и CSS версии свёрстанных на Bootstrap 3, тогда сайт у нас будет сразу адаптивным и поисковики будут намного эфективней индексировать странички. Можно конечно рипнуть понравившийся шаблон с помощью програмки Cyotek WebCopy, но это на свой страх и риск. Итак приступим. Для удобства я для себя накатал простенький компонент под названием Satellite в который включил такие разделы как видео с Youtube и панель сайтов, аналог PR-CY панели. Табличка для Youtube под названием modx_satellite_youtube простая и имеет следующие поля в базе: id, video, title, description, context В video мы будем парсить ссылки, в title — заголовок, в description — описание и наконец в context контекст нашего сайта для которого будем ваять контент. Нам нужна структура, чтобы всё у нас было по папочкам. Для этого создайте в Категориях папку Satellite, а в неё создайте категорию с url'ом вашего сайта, чтобы в конечном счёте у нас получилась примерно такая структура. За пример возьмём один из сателитов babysecret34.ru, который находится на этой же установке MODX, что и наше сообщество:

Как видим из скриншота, в категории Satellite -> babysecret34.ru у нас расположены шаблоны в начале которых большими буквами написано BABYSECRET34.RU: и после двоеточия название шаблона по предназначению. По такой же схеме делаем чанки:

А вот как выглядит чанк tpl.BABYSECRET34.RU.head:

[[MinifyX?
&minifyCss=`1`
&registerCss=`1`
&cssSources= assets/sites/babysecret34.ru/style.css, assets/sites/babysecret34.ru/screen.css, assets/sites/babysecret34.ru/custom.css, assets/sites/babysecret34.ru/rs-plugin/css/settings.css 
&minifyJs=`1`
&registerJs=`1`
&jsSources= assets/sites/babysecret34.ru/js/main.js, assets/sites/babysecret34.ru/js/libs/modernizr.min.js, assets/sites/babysecret34.ru/js/libs/respond.min.js, assets/sites/babysecret34.ru/js/jquery.spritely.min.js, assets/sites/babysecret34.ru/js/jquery.easing.min.js, assets/sites/babysecret34.ru/js/general.js, assets/sites/babysecret34.ru/js/hoverIntent.js, assets/sites/babysecret34.ru/rs-plugin/js/jquery.themepunch.plugins.min.js, assets/sites/babysecret34.ru/rs-plugin/js/jquery.themepunch.revolution.min.js 
]]
Как можно заметить в корне у нас есть папки с вложеностью: assets --sites ----babysecret34.ru и в этой папке assets/sites/babysecret34.ru/ у нас храняться файлы нашего сайта. Так же вы можете заметить такой плейсхолдер [[++msat_images]], мы создали его через системные настройки:

Как видим на скриншоте, у нас появились уникальные системные настройки, которые путь до нужной папки подставляют из плейсхолдера [[++http_host]] мы видели такую системную настройку в настройках контекста. Главное в папке /assets/sites/ создавать папку с вашим контекстом, который по умолчанию должен являться адресом. А вот таким образом мы выводим видео с YouTube, которые находятся у нас в базе:
[[!pdoPage? &class=`Youtube` &tpl=`tpl.BABYSECRET34.RU.youtubelist` &element=`YouTubeList` &limit=`15` &context=`[[++site_url]]` &where=`{«context:>»:[[++site_url]]}` &tplPage=`@INLINE [[+pageNo]]` &tplPageWrapper=`@INLINE [[+first]][[+prev]][[+pages]][[+next]][[+last]]` &tplPageActive=`@INLINE [[+pageNo]]` &tplPageFirst=`@INLINE «` &tplPageLast=`@INLINE »` &tplPagePrev=`@INLINE «` &tplPageNext=`@INLINE »` &tplPageSkip=`@INLINE ...` &tplPageFirstEmpty=`@INLINE «` &tplPageLastEmpty=`@INLINE »` &tplPagePrevEmpty=`@INLINE <` &tplPageNextEmpty=`@INLINE >` ]]

[[!+page.nav]]


 Для этого нужно установить pdoTools и создать сниппет YouTubeList с таким содержимым:

getService('pdofetch','pdoFetch', $path, $scriptProperties);
$pdoFetch->setConfig($scriptProperties);
return $pdoFetch->run();


а чанк tpl.BABYSECRET34.RU.youtubelist


SEQUEL.ONE
1    900    0
+1

Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.