0.00
95 читателей, 67 топиков

Console

Однажды bumkaka выложил простенькое, но полезное дополнение: MODx EVO console. Консоль неказистая, конечно, но не раз помогала. В новых версиях Evo она не работает, так что я на скорую руку исправил (теперь не будет работать в старых версиях), а заодно добавил туда редактор Ace. Почему не CodeMirror? Потому что Ace умеет показывать ошибки в php.

Если кому нужно, то лежит здесь: github.com/Pathologic/console

Сниппет для получения всякой информации о пользователе

Делал как-то для tiptop , может еще кому пригодится: https://github.com/Pathologic/userEnv. С помощью сниппета можно получить такие данные: IP, браузер, географические данные (страна, регион, город, координаты). Для получения геоданных используется база Sypex Geo City (UTF-8), базу нужно периодически обновлять.

Сниппет можно указать в параметре prepare или prepareProcess при вызове FormLister, тогда можно будет использовать плейсхолдеры [+env.ip+], [+env.browser+], [+env.country+], [+env.region+], [+env.city+], [+env.coords+].

Можно и как обычный сниппет вызвать, указав чанк в параметре &tpl. Плейсхолдеры будут без префикса env. Например:

[!
userEnv?
&tpl=`@CODE:Ваш IP: [+ip+]`
!]

Вывод даты создания, если дата публикации отсутствует

При переносе данных из Wordpress в EVO, столкнулся с такой проблемой – дата публикации для документа не указана. А в уже настроенных шаблонах что-то менять было лень. Кроме того, просто указывать в качестве даты документа — дату создания не всегда уместно – бывает отложенная публикация.
Так как вывод документов идёт через Doclister, добавляем prepare:
&prepare=`myDate`

Создаем сниппет myDate:
if ($data['pub_date'])
   $data['myDate'] = $data['pub_date'];
else
	$data['myDate'] = $data['createdon'];
return $data;

Соответственно, внутри шаблона Doclister указываем:
[+myDate:date=`%d.%m.%Y`+]


Возможно, существует более быстрое решение, но это первое, что пришло на ум.

Два виджета для ManagerManager

Написал два виджета для плагина ManagerManager.
На 25.05.2017 года не рекомендую использовать!
В версии MODX.Evo.Custom 1.2.1-d9.1.5 от виджета полностью ломается ManagerManager 0.6.2
В версии MODX.Evo.Custom 1.2.1-d9.1.0 работает нормально.

Первый mm_setDefaultTab.
Виджет делает видимой вкладку ОБЩИЕ в случаи если активной вкладки нет. Такая ситуация может возникнуть когда в конфигурации сайта стоит галочка — «Запоминать вкладки» (мне очень удобно, всегда ставлю ДА) и создали свои вкладки с помощью mm_createTab назначенные для определенных шаблонов.
Для использования добавить строчку mm_setDefaultTab('tabGeneral', '', ''); в mm_rules. Добавлять надо после строк которые создают дополнительные табы.
Скачать mm_setDefaultTab

Второй mm_hideNameTvFields
Для использования добавлять mm_hideNameTvFields('список TV параметров', '', '');
Предназначен для своих custom TV параметров. Виджет скрывает ячейку таблицы в которой отображается название/описание TV параметра, когда я пишу свой custom TV параметр мне жалко это практически пустующие место.
Скачать mm_hideNameTvFields

Кастомные TV + JS: patternTV, colorsTV, tagsTV - добавление графических параметров

Здравствуйте!

Решение возможно незрелое и код корявенький, но для меня удобное и простое.
Так как не использую managermanager, и, соответственно виджеты — а необходимость ввода графических данных (параметров) TV сохраняется — появилось это решение.

GitHub https://github.com/maximlit/modxCustomTV

Базируется: CustomTV и JS без зависимостей.

Читать дальше →

ДЕЛАЕМ AJAX мать его так! :)

Требование: подключённый jquery.

Загружаем в наш DIV чё хотим. В примере id у DIV'а lalala.

Если подключён jquery, делаем:

<div id="#lalala" style="display: none;">
тут для поисковиков напишите что хотите, SEO'шникам ваще лафа.
</div>
<script>
$(document).ready(function() {
 $('.levajax').click(function(e){  //href class='levajax' data-levajax='divid'
   var href = this.href;
   var d = this.dataset.levajax; 
   $.ajax({
       url: href,
       type: 'GET',
       dataType: 'html',
       success: function(response) {
                 result = $(response).find(d);
                 $( d ).html(result);
                 $( d ).css('display','block'); //или inline как хошь
       }
   });
   return false; 
 });
</script>


и делаем где угодно, как пример:
<a href='что хошь' class='levajax' data-levajax="#lalala">
[+pagetitle+]
</a>


Главное, чтобы на странице был DIV с id, указанный в data-levajax и у ссылки класс был class='levajax'.