Делаем репозитарий для Evo на Ditto. Modx evo ditto параметры


Делаем репозитарий для Evo на Ditto / Хабр

Здравствуйте! Сегодня я хотел бы поговорить о наболевшей проблеме — организации репозитариев (они же: файловые хранилища, файловые галереи, файловые архивы).

Я уже рассказывал о сниппете FileDownload, который вполне приемлем для выполнения некоторых задач, но и то, для людей разбирающихся. Как показала практика, даже плагин, который я делал под FileDownload, не спасает людей не посвященных и у них возникают серьезные трудности. Что ж, поразмыслив, я подумал, что легче всего организовать файловый архив так, как реализуется практически все на MODx — через дерево ресурсов.

Для этого было решено использовать Ditto.

Итак, версия MODx Evo 1.0.4, Ditto стандартный, из дистрибутива.

Задача:

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

Идя:

В том, что бы использовать Ditto примерно так же, как, например, с выводом новостей, только вместо страниц — файлы.

Реализация:

Вообщем-то, я думаю, нужно пропустить размышления и тупиковые попытки и перейти сразу к окончательному варианту.

Структура файлового архива:

--Начальная страница архива |---Папка 1 | |------Файл 1 | |------Файл 2 |---Файл 1 |---Файл 2 |---Файл 3

Т.е. примерно так:

Итак, для того, что бы отличать документы-файлы от документов-папок было решено сделать два дополнительных шаблона: один — для файлов, другой — для папок.

Шаблон файла — пустой (не удивляйтесь, Вы потом поймете для чего он нужен) Шаблон для папки — содержит вызов Ditto.

В начальную страницу, Файловый архив, добавим вызов Ditto:<h3>Файловый архив:</h3> [!Ditto? &id=`archiv` &parents=`[*id*]` &noResults=` ` &filter=`template,15,8` &tpl=`repository` &sortBy=`createdon` &summarize=`30` &dateFormat=`%d.%m.%Y` &paginate=1 !] [!Ditto? &id=`archiv` &parents=`[*id*]` &filter=`template,16,8` &tpl=`repository` &sortBy=`createdon` &summarize=`30` &dateFormat=`%d.%m.%Y` &paginate=1 !] </div> <div> [+archiv_previous+] - Стр.: [+archiv_pages+] - [+archiv_next+] </div>

Пояснения: 1. Почему два вызова? Два вызова тут потому, что с помощью одного вызова не получится сортировать раздельно папки и файлы (а ведь мы хотим, что бы папки были всегда первыми в списке). 2. Почему &id=`archiv`? Это сделано на всякий случай, ведь на странице могут быть и другие вызовы Diito, например, Новости. 3. Зачем &noResults=` `? А это для того, что бы вместо сообщения «Записей не найдено.» ничего не выводилось. Почему в одном вызове? Просто мы не хотим, что бы на странице не было этой надписи, если нет папок в поддиректории, а вот если не будет файлов — это надпись вполне уместна. 4. &filter=`template,15,8` и &filter=`template,16,8` Вот тут выводим только то, что нужно: в первом файле выводим только те документы, которые с шаблоном id=15 (Шаблон папок), во втором только с шаблоном id=16 (Шаблон файлов).

Все остальное, я думаю, понятно.

Теперь те самые шаблоны: как я уже говорил, шаблон файлов может быть полностью пустым, а вот шаблон папок должен содержать вызов Ditto: <h3>Файловый архив:</h3> <div> <img src="assets/images/filetype/arrow_up.png"><a href="javascript:history.back()">Назад</a><hr> [!Ditto? &id=`archiv` &parents=`[*id*]` &noResults=` ` &filter=`template,15,8` &tpl=`repository` &sortBy=`createdon` &summarize=`30` &dateFormat=`%d.%m.%Y` &paginate=1 !] [!Ditto? &id=`archiv` &parents=`[*id*]` &filter=`template,16,8` &tpl=`repository` &sortBy=`createdon` &summarize=`30` &dateFormat=`%d.%m.%Y` &paginate=1 !] </div> <div> [+archiv_previous+] - Стр.: [+archiv_pages+] - [+archiv_next+] </div>

Как Вы могли заметить, отличие только в том, что мы добавили ссылку Назад. И еще: к шаблону для Папок необходимо сделать TV параметр, я его назвал tvfile, а тип ввода сделал File.

Далее, что у нас содержит чанк &tpl=`repository`:[[repome? &docId=`[+id+]` ]]

Т.е. в чанке у нас только вызов простого рукописного сниппета repome. Что делает сниппет: 1. Ассоциирует различные расширения файлов с их иконками 2. Происходит подсчет размера файла, выделение имени файла 3. Распознавание шаблонов и формирование вывода

Сниппет RepoMe Поясню основные параметры:$idTemplateFolder - ID шаблона для Папки $folderTitle - Какое поле использовать в качестве заголовка для папки $folderDescription - Какое поле использовать для описания папки $idTemplateFile - ID шаблона для Файла $fileTitle - Какое поле использовать в качестве заголовка для файла $fileDescription - Какое поле использовать для описания файла $fileFile - Какое поле использовать для ссылки на файл $fileDate - Какое поле использовать для показа время загрузки файла $imgset - Ассоциация типов файлов с иконками $imgPath - Путь к иконкам

Сам код сниппета я приводить не буду, я постарался его максимально прокомментировать и положил его в архив в конце статьи.

И, наконец, по стилям: те, кто используют FileDowload, наверное, заметили, что я использовал здесь его стили из примера — было лень переделывать (в архиве я приложил их).

Что должно получится:

И если войти в папку Вихревые генераторы:

О, и чуть не забыл: можно же ведь использовать ManagerManager. Убрав лишние поля (напомню, это делается через добавление иструкции mm_hideFields('список_полей_через_запятую', 'id_роли_пользователя', 'id_шаблона') в чанк mm_rules, если Вы держите правила там либо же в одноименный файл в директории managermanager).

Тогда, для менеджера, вид административной части будет такой:

Оцениваем:

+ Колоссальная простота использования, можно один раз объяснить принцип добавления новостей — а потом его же использовать при объяснении работы с файловым архивом + Реализуется на Ditto, а значит, теоретически, можно прикручивать всякие ditto примочки, например рейтинг + Реализуется в виде документов — а значит можно, имея фантазию, наделать кучу наворотов + Независимость названий файлов и папок от их имен + Независимость от физического расположения файлов + Поддержка иконок + В принципе, универсальность + Простой код: возможность допиливать как угодно

— Неудобная настройка вывода (отсутствие шаблонов и плейсхолдеров для них) — Для максимальной адаптации для Вашего ресурса, возможно, придется много допиливать — Все-таки до профессионального инструмента далековато

На что нужно обратить внимание: Не забываем про

<base href='[(site_url)]'> Не забываем разрешать менеджерам пользоваться FCKeditor'ом и загружать различные типы файлов

Скачать:Архив со сниппетом и всем необходимым

На этом все. Возможно, если данная версия будет в ходу, будем ее улучшать, добавив шаблоны и прочие полезности.

habr.com

| Сниппет Ditto | Уроки MODx Evo

Cниппетом Ditto выводит ресурсы с использованием шаблонов. 

Кэшируемый вызов сниппета Ditto.

[[Ditto]]

Некэшируемый вызов сниппета Ditto.

[!Ditto!]

Параметры сниппета Ditto можно посмотреть по ссылкам:

http://wiki.modxcms.com/index.php/Ditto

http://i--gu.ru/ditto 

Пример вызова сниппета Ditto

[!Ditto? &parents=`12` &tpl=`albom-gallery` &dateSource=`pub_date` &sortBy=`pub_date`!]

[!Ditto? &parents=`12` &tpl=`albom-gallery` &orderBy=`pagetitle ASC`!]

[!Ditto? &tpl=`otziv` &dateSource=`pub_date` &sortBy=`pub_date` &dateFormat=`%d.%m.%Y` &paginate=`1` &display=`2`!]

Обратите внимание, что когда вы используете TV параметр в шаблоне Ditto, то вызов осуществляется с помощью конструкции вида: [+name+], если же выводите на странице ресурса, то конструкция вывода TV параметра будет иметь вид: [*name*]. Это касается и всех стандартных полей, таких как [*pagetitle*], [*longtitle*], [*introtext*] и других полей.

Пример шаблона для Ditto

<li>[+img-news+]<div> <h3>[+longtitle+]</h3> <p>[+introtext+]</p> <p><a href="[~[+id+]~]" title="Читать подробнее об этой услуге">Подробнее &raquo;</a></p> </div></li>

где [~[+id+]~]  — конструкция, отвечающая за вывод URL ресурса.

Часто используемые параметры Ditto

&parents=`12` – список id документов, откуда будут браться документы для вывода Ditto (список ID через запятую). Документы берутся до глубины &depth.

&tpl=`albom-gallery` – шаблон вывода.

&dateSource=`pub_date` &sortBy=`pub_date`– при сортировке новостей (документов) по дате необходимо прописывать эти две конструкции.

&orderBy=`pagetitle ASC` – порядок и направление, используемые для сортировки результатов (ASC|DESC).

&dateFormat=`%d.%m.%Y` – формат даты публикации документа (tv параметр [+date+])

web-grafika.pro

Создание поддержка продвижение сайта на Modx

Автор: Марк Каплан

Ditto - сниппет для организации информации из множества документов в необходимом виде. С его помощью можно реализовать:

- блог - список статей, новостей, ссылок - архив новостей - каталог товаров, сайтов, файлов и т.д. - RSS, XML, JSON, ATOM данные - много других форматов вывода, благодаря полной поддержке шаблонов

Параметры

Шаблоны

Параметры пагинации

Параметры summary

Параметры dateFilter

Параметры tagging

Параметры request

Параметры glossaryFilter

Параметры search

Параметры tvFilter

Плейсхолдеры

Создавая шаблон Дитто, вы указываете плэйсхолдеры там, где вы хотите увидеть свои данные. У Дитто есть свои собственные пдэйсхолдеры, плюс он поддерживает переменные (поля) используемые в каждом документе. (Примечание: если вы хотите использовать переменные (поля) документа непосредственно на странице с обычным шаблоном, вы должны использовать формат [*alias*])

Плейсхолдеры документа

[~[+id+]~] – Создает полный URL, основанный на ID, но не создает саму ссылку.

Например:

<h4><a href="[~[+id+]~]">[+title+]</a></h4>

ПараметрОписание[+alias+][+cacheable+][+content+][+contentType+][+content_dispo+][+createdby+][+createdon+][+deleted+]
[+deletedby+][+deletedon+][+description+][+donthit+][+editedby+][+editedon+][+haskeywords+][+hasmetatag+][+hidemenu+][+id+][+introtext+][+isfolder+]
[+longtitle+][+menuindex+][+menutitle+][+pagetitle+][+parent+][+privatemgr+][+privateweb+][+pub_date+][+published+][+richtext+][+searchable+][+template+][+type+][+unpub_date+]
Псевдоним страницы, используется для создания ЧПУ
Возвращает 1 (true) or 0 (false) если этот документ должен быть кэширован. По умолчанию установлено в false для нормального функционирования динамических сниппетов
Содержимое документа
Возвращает строчный параметр типа содержимого из выпадающего меню Content Type в панели администратора
Строка внедрения или прикрепления. Внедренные документы показываются в веб-браузерах. Прикрепленные документ могут быть загружены на локальную машину через диалоговое окно загрузки файла веб-браузера
Возвращает идентификатор пользователя, создавшего документ
Дата (в секундах с 1 января 1970 г.), когда документ был создан
Возвращает 1 (true) or 0 (false). Когда true, этот документ находится в корзине до ее очистки. После этого запись стирается полностью из базы данных (удаляется ПО-НАСТОЯЩЕМУ)
Возвращает идентификатор пользователя, удалившего этот документ
Возвращает дату удаления документа (в секундах с 1 января 1970 г.)
Описание документа
True (1) or False (0) показывает установлен или нет счетчик посещений страницы
Возвращает идентификатор пользователя, который последний редактировал документ
Возвращает дату последнего редактирования (в секундах с 1 января 1970 г.)
True (1) or False (0) показывает установлены или нет ключевые слова для данного документа
True (1) or False (0) показывает установлены или нет метатэги для данного документа
Возвращает 1 (true) или 0 (false) – соответственно если этот документ показывается в меню или нет
Целое число обозначающее или показывающее идентификатор документа
Аннотация документа
Целое число: true (1) если документ является контейнером или false (0) если нет.
Расширенный заголовок документа
Целое число показывающее позицию в меню
Название документа в меню
Заголовок документа
идентификатор родительского документа
True (1) or False (0) показывает установлены ли разрешения на просмотр этого документа для менеджеров
True (1) or False (0) показывает установлены ли разрешения на просмотр этого документа для веб-пользователей
Дата с которой документ опубликуется (в секундах с 1 января 1970 г.). Примечание: если этот параметр указан, published автоматически устанавливается в true (1)
Целое число показывающее статус публикования (0 = нет, 1 = да)
true (1) или false (0), устанавливается, если в администраторской панели должен использоваться rich text editor
Возвращает 1 (true) или 0 (false), что означает что этот документ доступен или не доступен для поиска
идентификатор шаблона, используемого для этого документа
Возвращает строчный параметр document для страниц или "reference" для ссылок
Дата окончания публикации документа (в секундах с 1 января 1970 г.). Примечание: установка этого параметра НЕ имеет эффекта на изменение статуса установок published

Плейсхолдеры Дитто

ПараметрОписание[+author+][+date+][+ditto_iteration+][+ditto_sort+][+title+][+url+][+ditto+] или [+wrapper+][+ditto_class+]
Имя автора. Сначала createdby->fullname, createdby->username, admin
Дата в установленном формате. По умолчанию используется createdon (editedon и pub_date как варианты)
Порядковый номер полученного документа в пределах текущей страницы
Порядковый номер полученного документа в пределах полного набора документов
Содержимое поля заголовка
Ссылка на документ
С версии 2.1.1. Используется в шаблоне &outerTpl. Место вывода результата работы сниппета
С версии 2.1.1. Выводит классы even/odd, first/last и current

Плейсхолдеры пагинации

ПараметрОписание[+next+][+previous+][+splitter+][+start+][+urlStart+][+stop+][+total+][+pages+][+currentPage+][+perPage+][+totalPages+][+ditto_pagination_set+][+item[x]+]
Кнопка «Следующее»
Кнопка «Предыдущее»
Разделитель если всегда показывается 0
Номер первой показываемой страницы
Номер текущей страницы, как показано в адресной строке (?start=)
Номер последней показываемой страницы
Общее количество страниц
Список страниц
Номер показываемой текущей страницы
Отображаемых элементов на странице (равно display)
Общее количество страниц
1 если paginate включено
Сформированный вывод индивидуального документа

Плейсхолдеры summary

ПараметрОписание[+summary+][+link+]
Поле аннотация (введение) полностью, если указано, или начальная часть содержимого страницы
Ссылка на полный текст. Текст ссылки установливается параметром &trunctText. По умолчанию из файла языка Ditto

Плейсхолдеры tagging

ПараметрОписание[+tagLinks+][+tags+]
Список тэгов, связанных с документом, разделенных &tagDelimiter
На странице, содержащей результат: теги, используемые для фильтрации отображаемых документов

Плейсхолдеры dateFilter

ПараметрОписание[+year+][+month+][+day+][+month_numeric+]
Год для фильтра. Двух или четырех значное значение
Месяц для фильтра
День для фильтра
Численное значение месяца

modx-profi.ru

Параметры Ditto - примеры

Название

По умолчаниюФорматОписание
&ditto_base [(base_path)]assets/snippets/ditto/ Папка со слэшем на конце Расположение фалов Ditto
&id пусто Строка (чувствительна к регистру) Унакальный ID сессии Ditto
&language english Название языкового файла язык Ditton
&format html html | json | xml | atom | rss Используемый формат для вывода
&config default Имя конфигурационного файла Загрузка выборочной конфигурации
&debug 0 - выкл 0 | 1 Включить / выключить режим отладки
&phx 1 0 | 1 Использование PHx форматирования
&extenders пусто Расширения через запятую Имена расширений
&parents [*id*] Список ID через запятую Идентификаторы контейнеров
&startID [*id*] ID документа-контеинера Папка, откуда берутся документы
&documents пусто Числа через запятую Список ID документов для результата
&depth 1 число Глубина поиска документов
&paginate 0 - выкл 0 | 1 Включает / выключает разбиение по страницам
&paginateAlwaysShowLinks 0 0 | 1 Показывать ли [+next+] и [+previous+] всегда
&tplPaginateNext LANG чанк | код | файл Шаблон оформления ссылки Next.
&tplPaginatePrevious LANG чанк | код | файл Шаблон оформления ссылки Previous.
&dateSource createdon Поле с датой Источник определяющий значение [+date+]
&dateFormat LANG Формат времени для PHP Формат времени для
&display 3 число | all Число отображаемых документов
&total all число | all Число возвращаемых документов
&trunc 1 0 | 1 Включить обрезание для [+summary+]
&truncAt Любой уникальный текст Текст, служащий разделителем для [+summary+]
&truncLen 300 число Ограничение длины в [+summary+].
&truncOffset 30 число Количество "блуждающих" символов от truncLen
&truncText Read more... текст | html-код Текст ссылки в [+link+]
&tplTrunc truncText чанк | код | файл Шаблон для [+link+]
&showPublishedOnly 1 0 | 1 Показывать только опубликованные документы
&showInMenuOnly 0 0 | 1 Показывать только документы видимые в меню
&hideFolders 0 0 | 1 Скрывать документы-контейнеры
&seeThruUnpub 0 0 | 1 Смотреть сквозь неопубликованные документы
&queryLimit 0 число | 0 Лимит на запрос в базе
&where NULL MySQL WHERE Специальное условие для запроса
&noResults LANG текст | чанк Текст выводимый если нет результата
&removeChunk NULL список чанков Названия вырезаемых чанков
&hiddenFields NULL список полей Возвращать необработанные поля
&sortDir DESC ASC | DESC Сортировка документов
&sortBy

createdon - по дате создания

параметр:id | menutitle | pagetitle | introtext | menuindex | pub_date | published | hidemenu | parent | isfolder | description | alias | longtitle | type | template

Также: Любое поле документа или TV-параметр

параметр используемый для сортировки
&start 0 число Пропуск начальных документов
&globalFilterDelimiter | символ Разделитель правил фильтра
&localFilterDelimiter , символ Разделитель параметров фильтра
&filter NULL список фильтров Фильтр для отсеивания документов
&keywords 0 0 | 1 Использование выборки ключевых слов
&save 0 0 | 1 | 2 | 3 Сохранить результат в плэйсхолдер
&tpl LANG чанк | код | файл шаблон для записи
&tplFirst &tpl чанк | код | файл Шаблон для первого документа
&tplLast &tpl чанк | код | файл Шаблон для последнего документа
&tplAlt &tpl чанк | код | файл Шаблон для четных документов
&tplCurrentDocument &tpl чанк | код | файл Шаблон текущего документа

www.imho.74pro.ru

[Modx Evo] Новости Ditto Modx от Василисы Белозеровой

  1. Создаем новый ресурс, называем его «Новости», переходим на вкладку Настройки страницы и снимаем галочку около "Кэшируемый" (это необходимо, что бы работал переключатель страниц)
  2. Все дочерние документы этого ресурса будут нашими новостями. В поле Заголовок вводим заголовок новости, в поле Summary вводим сокращенную новость, в самое большое окно вводим полный текст новости. Обязательно включить галочку на Опубликовать. Для создания дочернего документа правой кнопкой нажимаем на документе «Новости» и выбираем «Дочерний док.» (“Create document here”)
  3. Создаем чанк , например ”tpl_news” который будет содержать html-шаблон вывода статьи. 

    <div><h3><a href="[~[+id+]~]" title="[+pagetitle+]">[+pagetitle+]</a></h3><div><span>[+date+]</span> [+introtext+] </div><div ><a href="[~[+id+]~]" title="Перейти к полному тексту новости">Читать дальше →</a></div></div>

  4. css прописываем

    .news {padding:0; margin:0 0 15px 0;}.news h3 {padding:0px; margin:0px; border:none;}.news h5 {padding:0px; margin:0px; border:none; font-size: 13px; font-weight:bolder; color:#3359CC;}.news .introtext{padding:5px 0 0 0;}.news .introtext .date {font-style:italic;}.news .readmore {text-align:right;}

  5. Что бы создать страницу вывода всех новостей в самом большом окошке ресурса «Новости» (или создаем новый ресурс и выполняем пункт 1) вызываем КЕШИРИРУЕМЫЙ Ditto&summarize=`5` — задаем количество новостей на странице &paginate=1 — включаем режим разбивки на страницы, тем самым отключаем архив &tpl=` tpl_news ` - ссылаемся на ранее созданный нами шаблон вывода статей.

    [[Ditto? &startID=`5` &summarize=`20` &tpl=`tpl_news` &paginate=`1`]] Показаны [+start+] - [+stop+] из [+total+] Новостей [+previous+] [+pages+] [+next+]

  6. Что бы создать блок нескольких последних новостей на главной странице, в нужном месте вызываем Ditto 

[[Ditto? &id=`news` &startID=`11,15` &summarize=`3` &tpl=`ditto_news`&sortBy=`menuindex`&sortDir=`ASC`]]

Сортировка:

&sortBy=`menuindex` или date или любой TV

 &sortDir=`ASC` или DESC

Дополнение:

[+createdon:date=`%d.%m.%Y`+] // дата создания документа[+editedon:date=`%d.%m.%Y`+] // дата последнего редактирования документа[+pub_date:date=`%d.%m.%Y`+] // дата публикации документа

Фото к новости

Создаем TV с именем foto и типом - картинка, применяем к шаблону вывода новостей, вписываем TV в шаблоны вывода новостей:

[+phx:if=`[*foto*]`:is=``:then=`<img alt="Нет фотографии" src="[*nofoto*]">`:else=`<img alt="[*pagetitle*]" src="[*foto*]">`+]

Создаем второй TV с именем nofoto и типом ввода Image, применяем к шаблону новостей, в значение по умолчанию прописываем путь к кртинке - заглушке.

 

yotadom.com

Вывод статей на страницу с помощью Ditto

Вероятно, одной из самых распространенных задач при конструировании сайта является вывод на страницу новостных, информационных статей, каталога продукции и т. д., одним словом вывод документов на страницу. Самым мощным инструментом MODx для этого можно считать сниппет Ditto, разработанный Марком Капланом (Mark Kaplan). Среди его основных функций - разбивка на страницы, вывод краткой версии статьи со ссылкой «далее», генерирование архива, сортировка по дате, заголовку и т. д.

Итак, рассмотрим пример вывода новостных статей на страницу сайта. Пусть нам нужно выводить по 5 статей на странице, без архива, в качестве краткой версии статьи использовать поле "Аннотация" (introtext) и как ссылку на полную версию статьи использовать «>>».

Архив02.07.06 в 22:07

modx.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта