Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • Дополнения
  • avatar
    • Автор: media_kot

DLLastViews: последние просмотренные документы

  • Дополнения
  • DLLastViews
2243

DLLastViews: последние просмотренные документы

В свойствах сниппета есть два параметра:

  1. Время хранения cookie. Задается в секундах, по умолчанию 30 дней
  2. Сколько документов запоминать? По умолчанию: 5

Установка:

  1. Создать новый сниппет и вставить туда код
  2. Поставить галочку «Анализировать DocBlock» и сохранить
<?php
/**
 * DLLastViews
 *
 * Conclusion viewed products with DocLister.
 *
 * @category    snippet
 * @version     1.1
 * @internal    @properties &expired=Время хранения cookie;text;2592000;2592000;по умолчанию: 30 дней &maxDocs=Сколько документов запоминать;text;5;5
 * @internal    @modx_category Content
 * @internal    @installset base
 * @author      Created By mkot, optimization Pathologic
 * 
 * @lastupdate  04/09/2017
 */

if (!isset($params['mode'])) $params['mode'] = 'register';
if (!isset($params['tpl'])) $params['tpl'] = '@CODE: ';
$maxDocs = isset($maxDocs) ? $maxDocs : 5;
$expired = isset($expired) ? $expired  : 2592000;
$params['idType'] = 'documents';
$item = array();

if (isset($_COOKIE['last_view']) and $_COOKIE['last_view'] != '') {
    $params['documents'] = $_COOKIE['last_view'];   
        $item = explode(',', $_COOKIE['last_view']);   
}

switch ($params['mode']) {
    case 'register':
        if (!in_array($modx->documentIdentifier, $item)) {
            array_unshift($item, $modx->documentIdentifier);
            array_slice($item, 0, $maxDocs - 1);
            setcookie('last_view', implode(',', $item), time()+$expired, '/');
        }
    break;
    
    case 'show':      
        if (!empty($item)) {
                        return $modx->runSnippet('DocLister',$params);
                }
    break;
        default:
        break;
}

Использование:

На страницах, которые нужно запоминать написать не кэшируемый вызов без параметров

[!DLLastViews!]

Там где нужно выводить список просмотренных документов написать некэшируемы вызов с параметрами. Все параметры, как у DocLister'а (кроме idType, он жестко задан в сниппете) и добавить параметр &mode=`show`

[!DLLastViews? 
    &mode=`show`
    &ownerTPL=`
    [+dl.wrap+]
` &tpl=`@CODE: <li><a href="[+url+]">[+title+]</a></li>` !]