modx-pro / docs Goto Github PK
View Code? Open in Web Editor NEWOpen Source documentation for MODX Revolution
Home Page: https://docs.modx.pro
License: GNU General Public License v2.0
Open Source documentation for MODX Revolution
Home Page: https://docs.modx.pro
License: GNU General Public License v2.0
https://docs.modx.pro/komponentyi/minishop2
Не хватает описания и перечня функций (возможностей) minishop2 из коробки.
Wonderful plugin, it's the best! I think I found a bug in pdoPage
Does not show Template Variables
&element=pdoResources
&includeTVs=newsDate
&processTVs=newsDate
Work around
&element=getResources
&includeTVs=newsDate
&processTVs=newsDate
Any way to fix the pdoPage to show custom template variables?
Я думаю его стоит создать и добавить в игнор при импорте. Мнения?
https://docs.modx.pro/komponentyi/pdotools/klassyi/pdofetch#%D0%9C%D0%B5%D1%82%D0%BE%D0%B4-addJoins
После заголовка Как нужно указывать параметры для присоединения в pdoFetch? есть код:
$pdo->setConfig(array(
'class' => 'modUser',
'leftJoin' => array(
'Profile' => array(
'class' => 'modUserProfile',
'on' => 'modUser.id = Profile.internalKey',
),
'select' => array(
'modUser' => '*',
'Profile' => 'fullname,email',
)
));
В коде ошибка, не закрыта скобка после leftJoin
и перед select
, должно быть так:
$pdo->setConfig(array(
'class' => 'modUser',
'leftJoin' => array(
'Profile' => array(
'class' => 'modUserProfile',
'on' => 'modUser.id = Profile.internalKey',
)
),
'select' => array(
'modUser' => '*',
'Profile' => 'fullname,email',
)
));
Надо написать workflow:telegram который бы отправлял оповещения о новых обновлениях в главный чат
При наличии этого файла github выдает для всех, кто создает issue или pr плашку со ссылкой на этот файл и предложением ознакомиться с правилами. Собственно в этом файле нужно описать, как правильно слать сюда доки, как оформлять и возможно как делать не следует.
Записал, чтобы не потерялось.
Выписал все общие параметры из pdoTools (ядро + pdoFetch): https://gist.github.com/argnist/e39edc5721c3686a64d1
Хочу оформить их отдельно. Поэтому возникли следующие вопросы:
Как я понял часть из параметров остались для совместимости с getResources? Правильно ли я их указал и не стоит ли их вынести в сниппет pdoResources, чтобы не засорять код ядра? (Хотя по мне так legacy-код стоит удалять в каждой стабильной версии, чтобы меньше тормозило. Если меняешь сниппет - будь готов изучить его параметры).
Может быть в папках создавать какой-то специальной файл типа INDEX.md, который бы открывался в docs.modx.pro, когда нажимаешь на папку? Например, эти параметры можно было бы показывать сразу по нажатию на pdoTools или pdoTools/Сниппеты.
Как проводить обсуждение документации (коим примером является это сообщение)? Issue не особо кажется удобным.
И небольшое пожелание. Если есть такая возможность, хотелось бы, чтобы на страницах документации отображалось, кто внес вклад в создание страницы со ссылками на профиль на гитхабе.
Еще непонятные параметры:
'tvsJoin' => array(),
'tvsSelect' => array(),
зачем они и почему тип массив, и что будет, если указать их в сниппете (и что указать можно)?
Расширение реализует основу для постинга в соцсети. В основной набор входит только Twitter.
Имя | По умолчанию | Описание |
---|---|---|
msocial_tt_ot | Пусто | Access Token для Twitter |
msocial_tw_ck | Пусто | Consumer Key (API Key) для Twitter |
msocial_tw_cs | Пусто | Consumer Secret (API Secret) для Twitter |
msocial_tw_os | Пусто | Access Token Secret для Twitter |
msocial_tw_tp | tpl.msocial.tw | Чанк шаблона для постинга в Twitter |
msocial_im_ps | 0 | Дополнять ли посты в соцсети изображениями на основе парсинга поста (те если сообщение содержит изображения они будут прикреплены к посту, при условии что данный параметр переключен на Да). |
Для того что бы изображения корректно загружались нужно что бы они присутствовали в теле сообщения, в виде <img src="путь до изображения"/>. Например можно вставлять изображения в тело поля content с помощью редактора TinyMCE. Путь к изображению должен быть следующего вида files/mSocial.jpg.
Twitter поддерживаются следующие форматы: PNG, JPEG, WEBP и GIF.
С требованиями к изображениям можно ознакомиться здесь: https://dev.twitter.com/rest/public/uploading-media.
Здравствуйте!
Спасибо вам за вашу работу!
На данный момент не работает плагин HybridAuth в связке с Вконтакте.
Для начала как минимум плагин генерирует неправильный редирект урл, у вконтакте (как минимум на данный момент) нельзя задать урл с ? в поле "доверенный redirect url". В результате вконтакте выдает сообщение о неправильном редирект урле и не работает.
Я попробовал решить эту проблему, прописал урл /havkontakte, на своей стороне настроил редирект в .htaccess и заменил в файле /core/components/hybridauth/model/hybridauth/lib/Provider_Adapter.php строку 162
$this->params["login_done"] = $HYBRID_AUTH_URL_BASE . ( strpos($HYBRID_AUTH_URL_BASE, '?') ? '&' : '?' ) . "hauth_done={$this->id}";
на
if($this->id === 'Vkontakte')
$this->params["login_done"] = $HYBRID_AUTH_URL_BASE . 'havkontakte';
else
$this->params["login_done"] = $HYBRID_AUTH_URL_BASE . ( strpos( $HYBRID_AUTH_URL_BASE, '?' ) ? '&' : '?' ) . "hauth.done={$this->id}";
Вконтакте перестал ругаться, но теперь после возвращения на сайт я вижу опять блок login.
То есть сама аутентификация не происходит.
Как минимум надо исправить генерацию урла для вк и перепроверить работоспособность плагина в целом.
Было бы круто выложить где-то работающий пример.
Компонент позволяет создавать Яндекс Карту и размещать на ней список объектов (1 объект = 1 ресурс). Можно вывести одиночный объект на карте по id ресурса.
Для добавления карты к ресурсу нужно всего лишь создать TV с типом "YandexMaps" (появится после установки компонента).
Чтобы указать местоположение объекта нужно просто кликнуть на том месте на карте в "дополнительных полях" ресурса.
Имя | По умолчанию | Описание |
---|---|---|
&tpl | tpl.yandexMaps | Шаблон обёртка вывода ссылок фильтров для отображения/скрытия объектов на карте |
&tplEventsItemsWrapper | @INLINE [[+title:notempty= [[+title]] ]]<ul>[[+wrapper]]</ul> |
Шаблон обёртка вывода ссылок фильтров для отображения/скрытия объектов на карте. |
&tplEventsItems | @INLINE <li><input type="hidden" name="ym[checkboxes][[+inputSufixName]]" id="checkbox_yandexMapsEvent[[+idFilterItem]][[+idFilterSubItem]]" value="[[+itemInputValue]]" /><a href="javascript:;" class="[[+classEventItem]] [[+itemInputValue:is= 1:then= yandexMapsEventHide:else= yandexMapsEventShow]]" id="yandexMapsEvent[[+idFilterItem]][[+idFilterSubItem]]">[[+itemTitle]]</a>[[+wrapper]]</li> |
Шаблон вывода ссылок фильтров для отображения/скрытия объектов на карте. |
&idMap | yandexMap | Id карты для html разметки и JS инициализации. |
¢erCoords | 55.75356,37.62001 | Координаты для центра карты. |
&zoom | 14 | Zoom карты (приближение). |
&tvCoords | Имя TV поля с типом yandexMaps (в которое будем записывать координаты объекта). | |
&tvAddress | Имя TV поля с адресом объекта (если хотим, чтобы компонент сам определил координаты для каждого объекта по его адресу в ТВшке). | |
&addressPrefix | Префикс в начало адреса. Если в TV поле "tvAddress" все адреса указаны без обозначения страны и города. Например: "Россия, Москва, ". | |
&objectsTypesJSON | JSON строка с типами объектов, родительскими id, тайтлами, иконками или пресетами, а также субфильтрами по TV (и назначение каждому варианту ответа иконки или пресета). | |
&id | Id ресурса для вызова одиночного объекта на карте. Например: [[*id]]. | |
&markerIcon | Иконка для одиночного объекта. Например: "/images/map_marker.png". | |
&markerPreset | Ключ стиля для одиночного объекта. Например: "islands#yellowStretchyIcon" или "islands#violetDotIcon". | |
&markerPresetText | Текст для одиночного объекта на preset. Например: "Плавательный бассейн". | |
&markerPresetFieldText | Поле, откуда извлекать текст для одиночного объекта на preset. Например: "menutitle". | |
&fieldForBalloonContent | Какое поле ресурса использовать для описания в balloon. | |
&fieldForHint | Какое поле ресурса использовать для подсказки при наведении на объект. | |
&showMoreLink | 0 | Ставить ли ссылку "подробнее" на ресурс в конец текста в balloonContent. |
&showMoreLinkTpl | @INLINE <p><a href="[[~[[+id]]]]" target="_blank">Подробнее</a></p> |
Шаблон ссылки "подробнее" на ресурс в конце текста в balloonContent. |
&classMapBlock | yandexMapsBlock | Класс для блока карты. |
&styleMapBlock | float:left; width:90%; height:100%; | Стиль для блока карты. |
&idEventsForm | yandexMapsEventsForm | Id для формы фильтров (вкл/выкл) гео-объектов. |
&classEventsBlock | yandexMapsEventsBlock | Класс для блока ссылок фильтров (вкл/выкл) гео-объектов. |
&styleEventsBlock | float:left; width:10%; height:100%; | Стиль для блока ссылок фильтров (вкл/выкл) гео-объектов. |
&classEventItem | yandexMapsEvent | Класс для ссылки фильтра (вкл/выкл) гео-объектов (нужен для отслеживания клика JSом). |
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&markerIcon=`/images/cafe_marker_icon.png`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&showMoreLink=`true`
]]
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&markerPreset=`islands#violetDotIcon`
&fieldForBalloonContent=`introtext`
&fieldForHint=`menutitle`
]]
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&markerPreset=`islands#yellowStretchyIcon`
&markerPresetText=`Плавательный бассейн`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&showMoreLink=`true`
]]
[[!yandexMaps?
&tvCoords=`coords`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&objectsTypesJSON=`[
{
"InvestProjects": {
"parent":"5",
"preset":"islands#violetStretchyIcon",
"presetText":"Реализованный",
"title":"Инвестиционные проекты"
},
"InvestPlaygrounds": {
"parent":"6",
"icon":"/images/playgrounds_map_icon.png",
"title":"Инвестиционные площадки"
}
}
]`
]]
[[!yandexMaps?
&tvCoords=`coords`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&objectsTypesJSON=`[
{
"InvestProjects": {
"parent":"5",
"icon":"/images/projects_map_icon.png",
"title":"Инвестиционные проекты",
"subFilters": {
"status": {
"title":"Статус проекта",
"options": {
"0":{ "value":"Реализуемый==1", "icon":"/images/projects_map_icon1.png" },
"1":{ "value":"Реализованный==2", "preset":"islands#violetStretchyIcon", "presetText":"Реализованный" },
"2":{ "value":"Подписано соглашение==3", "preset":"islands#blueStretchyIcon", "presetFieldText":"pagetitle" }
}
},
"branch": {
"title":"Отрасль",
"options": {
"0":{ "value":"Фармацевтика и биотехнологии==1" },
"1":{ "value":"Автомобили и автокомпоненты==2" },
"2":{ "value":"Транспортно-логистические==3" },
"3":{ "value":"Другие направления==4" }
}
}
}
},
"InvestPlaygrounds": {
"parent":"6",
"icon":"/images/playgrounds_map_icon.png",
"title":"Инвестиционные площадки",
"subFilters": {
"types": {
"title":"",
"options": {
"0":{ "value":"Особые экономические зоны==1", "icon":"/images/playgrounds_map_icon1.png" },
"1":{ "value":"Индустриальные парки==2", "icon":"/images/playgrounds_map_icon2.png" }
}
}
}
}
}
]`
]]
Простой конвертер арабских цифр в римские
Использование:
[[+my_digit:romanDigit]]
[[romanDigit? &input=23
]]
Maybe it's a good idea to add a note to the docs that dots (.) in a TV name will make the filters in mFilter2 stop working. Took me hours to figure out why my filters didn't work ;)
Does not work:
&filters=tv|car.color
&tplCondition - Поле ресурса, из которого будет получено значение для выбора чанка по условию в &conditionalTpls. Это может быть любое поле , такое как template , pagetitle и т.п , чтобы указать ТВ нужно писать его с префиксом , типа : &tplCondition=tv.my_tvname
Под заголовком стоит ссылка Скачать TicketComments в магазине дополнений →
, которая перекидывает в магазин Simple Dream на компонент msOptionsPrice.
Первое предложение:
Выводит комментарии и форму для ко мментирования ресурса.
Ошибка в слове "ко мментирования".
Описание
Сниппет обрабатывает только документы с Не знаю как сформулировать. Кто нибудь поправте как надо
Как-то не кошерно.
Привет!
Классный проект!
Наконец-то документация по и по Васиным работам будет находиться в одном месте.
Вась, огромная просьба, добавь пожалуйста к описанию твоих продуктов список используемых плейсхолдеров. Постоянно приходится лазить где-то искать. Например, для освежения памяти по pdoResources приходится лезть в описание getResources. Жутко не удобно :(
Спасибо за ответственный и комплексный подход к работе!
Hi, I am using pdoTools pdoUser to return users from MODx using the code below:
[[!pdoUsers?
&groups=Partners
&xtpl=partnerTpl
&sortby=id
&sortdir=asc
&limit=3
&where={"modUserProfile.extended:LIKE":"%\"customField1\":\"Value\"%"}
&showLog=1
]]
This works well, My questions is... Is it possible to pass more than one customvalue to the Where element of the code? e.g. to search more than one of the custom fields for the searched value. e.g.
&where={"modUserProfile.extended:LIKE":"%\"customField1,customField2\":\"Value\"%"}
Please advise on how to achieve this...
Компонент позволяет создавать Яндекс Карту и размещать на ней список объектов (1 объект = 1 ресурс). Можно вывести одиночный объект на карте по id ресурса.
Для добавления карты к ресурсу нужно всего лишь создать TV с типом "YandexMaps" (появится после установки компонента).
Чтобы указать местоположение объекта нужно просто кликнуть на том месте на карте в "дополнительных полях" ресурса.
Имя | По умолчанию | Описание |
---|---|---|
&tpl | tpl.yandexMaps | Шаблон обёртка вывода ссылок фильтров для отображения/скрытия объектов на карте |
&tplFiltersItemsWrapper | tpl.yandexMaps.filtersItemsWrapper | Шаблон обёртка вывода ссылок фильтров для отображения/скрытия объектов на карте. |
&tplFiltersItems | tpl.yandexMaps.filtersItems | Шаблон вывода ссылок фильтров для отображения/скрытия объектов на карте. |
&idMap | yandexMap | Id карты для html разметки и JS инициализации. |
¢erCoords | 55.75356,37.62001 | Координаты для центра карты. |
&zoom | 14 | Zoom карты (приближение). |
&tvCoords | Имя TV поля с типом yandexMaps (в которое будем записывать координаты объекта). | |
&tvAddress | Имя TV поля с адресом объекта (если хотим, чтобы компонент сам определил координаты для каждого объекта по его адресу в ТВшке). | |
&addressPrefix | Префикс в начало адреса. Если в TV поле "tvAddress" все адреса указаны без обозначения страны и города. Например: "Россия, Москва, ". | |
&objectsTypesJSON | JSON строка с типами объектов, родительскими id, тайтлами, иконками или пресетами, а также субфильтрами по TV (и назначение каждому варианту ответа иконки или пресета). | |
&id | Id ресурса для вызова одиночного объекта на карте. Например: [[*id]]. | |
&markerIcon | Иконка для одиночного объекта. Например: "/images/map_marker.png". | |
&markerPreset | Ключ стиля для одиночного объекта. Например: "islands#yellowStretchyIcon" или "islands#violetDotIcon". | |
&markerPresetText | Текст для одиночного объекта на preset. Например: "Плавательный бассейн". | |
&markerPresetFieldText | Поле, откуда извлекать текст для одиночного объекта на preset. Например: "menutitle". | |
&fieldForBalloonContent | Какое поле ресурса использовать для описания в balloon. | |
&fieldForHint | Какое поле ресурса использовать для подсказки при наведении на объект. | |
&showMoreLink | 0 | Ставить ли ссылку "подробнее" на ресурс в конец текста в balloonContent. |
&showMoreLinkTpl | @INLINE <p><a href="[[~[[+id]]]]" target="_blank">Подробнее</a></p> |
Шаблон ссылки "подробнее" на ресурс в конце текста в balloonContent. |
&classMapBlock | ymBlock | Класс для блока карты. |
&styleMapBlock | float:left; width:90%; height:100%; | Стиль для блока карты. |
&idFiltersForm | ymFiltersForm | Id для формы фильтров (вкл/выкл) гео-объектов. |
&classFiltersBlock | ymFiltersBlock | Класс для блока ссылок фильтров (вкл/выкл) гео-объектов. |
&styleFiltersBlock | float:left; width:10%; height:100%; | Стиль для блока ссылок фильтров (вкл/выкл) гео-объектов. |
&classFiltersItem | ymFilters | Класс для ссылки фильтра (вкл/выкл) гео-объектов (нужен для отслеживания клика JSом). |
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&markerIcon=`/images/cafe_marker_icon.png`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&showMoreLink=`true`
]]
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&markerPreset=`islands#violetDotIcon`
&fieldForBalloonContent=`introtext`
&fieldForHint=`menutitle`
]]
[[!yandexMaps?
&id=`[[*id]]`
&tvCoords=`coords`
&markerPreset=`islands#yellowStretchyIcon`
&markerPresetText=`Плавательный бассейн`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&showMoreLink=`true`
]]
[[!yandexMaps?
&tvCoords=`coords`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&objectsTypesJSON=`[
{
"InvestProjects": {
"parent":"5",
"preset":"islands#violetStretchyIcon",
"presetText":"Реализованный",
"title":"Инвестиционные проекты"
},
"InvestPlaygrounds": {
"parent":"6",
"icon":"/images/playgrounds_map_icon.png",
"title":"Инвестиционные площадки"
}
}
]`
]]
[[!yandexMaps?
&tvCoords=`coords`
&fieldForBalloonContent=`description`
&fieldForHint=`pagetitle`
&objectsTypesJSON=`[
{
"InvestProjects": {
"parent":"5",
"icon":"/images/projects_map_icon.png",
"title":"Инвестиционные проекты",
"subFilters": {
"status": {
"title":"Статус проекта",
"options": {
"0":{ "value":"Реализуемый==1", "icon":"/images/projects_map_icon1.png" },
"1":{ "value":"Реализованный==2", "preset":"islands#violetStretchyIcon", "presetText":"Реализованный" },
"2":{ "value":"Подписано соглашение==3", "preset":"islands#blueStretchyIcon", "presetFieldText":"pagetitle" }
}
},
"branch": {
"title":"Отрасль",
"options": {
"0":{ "value":"Фармацевтика и биотехнологии==1" },
"1":{ "value":"Автомобили и автокомпоненты==2" },
"2":{ "value":"Транспортно-логистические==3" },
"3":{ "value":"Другие направления==4" }
}
}
}
},
"InvestPlaygrounds": {
"parent":"6",
"icon":"/images/playgrounds_map_icon.png",
"title":"Инвестиционные площадки",
"subFilters": {
"types": {
"title":"",
"options": {
"0":{ "value":"Особые экономические зоны==1", "icon":"/images/playgrounds_map_icon1.png" },
"1":{ "value":"Индустриальные парки==2", "icon":"/images/playgrounds_map_icon2.png" }
}
}
}
}
}
]`
]]
У меня при переходе на страницу http://docs.modx.pro/components/pdotools/snippets/pdopage выводится страница "О проекте", а по адресу http://docs.modx.pro/components/pdotools/snippets/pdousers выводится страница "Pdopage" - это так и задумано?
ru/01_Компоненты/15_Tickets/01_Интерфейс/04_Управление_комментариями.md
Страницы в документации не соответствуют страницам на гите.
После строки "Класс gsProduct генерирует следующие события:" пусто, а должен быть текст.
https://github.com/argnist/Docs/tree/master/ru/02_%D0%A1%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D0%B0/02_xPDO
Набросал структуру раздела. Планирую там смесь перевода официальной документации с напором на более развернутые примеры и использование в modx. Т.е. везде будет $modx (чтобы новички не путались с этими $xpdo), кроме своей модели работа с моделью modResource и т.п. Может быть даже куски из исходного кода ядра и дополнений, а не сферический класс Box в вакууме.
Но возможности конкретно класса modx, скорее всего, оставлю для другого раздела.
Есть какие-нибудь предложения по структуре, или может я чего забыл?
Компонент предназначен для ведения учёта остатка товара по его одному свойству, указанному в настройках компонента.
При редактирование товара вам необходимо выставить количество оставшихся товаров по каждому значению свойства, выбранного в настройках компонента.
После того, как статус заказа будет равен тому статусу, что указан в настройках компонента, количество оставшихся товаров, заказанных клиентом, будет автоматически уменьшено на то количество, что было в корзине клиента.
Для редактирования настроек компонента перейдите в раздел "Настройки системы" и выберите фильтр "msproductremains"
Для данного компонента доступны следующие настройки:
После активации компонента в ресурсе товара miniShop2 появится новая вкладка "Остатки", где вы можете вводить количество оставшихся товаров по каждому значению выбранного свойства.
Предварительно необходимо добавить значения в выбранное свойство товара (по умолчанию, размер), сохранить товар и перезагрузить страницу.
Для вывода количества оставшихся товаров на сайте в любое место сайта необходимо добавить тег с классом remains_change
.
<div class="remains">Товара в наличии: <span class="remains_change"></span> шт.</div>
После загрузки страницы автоматически в тег <span class="remains_change">
будет добавлено количество оставшихся товаров для выбранного свойства или для значения по умолчанию.
<div class="remains_change">[[%msproductremains_text_more]]</div>
После загрузки страницы автоматически текст внутри тега <div class="remains_change">
будет изменён на текст, соответствующий условию выборки и количеству оставшихся товаров.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.