+1.13
133 читателя, 228 топиков

DocInfo && published

Столкнулся с необходимостью с помощью сниппета доставать поля из неопубликованных ресурсов, но как оказалось DocInfo не имеет входящего параметра published и по умолчанию достает поля только из опубликованных ресурсов. Так как сниппет построен на основе методов getPageInfo, getTemplateVarOutput, getTemplateVar которые принимают входящим параметром published — немного доработал код сниппета DocInfo чтобы можно было указывать опубликован ли ресурс, пример:
[[DocInfo? &docid=`10` &field=`tvname` &published=`0`]]
код:
<?php
/**
 * DocInfo
 *
 * @category  parser
 * @version   0.4
 * @license     GNU General Public License (GPL), http://www.gnu.org/copyleft/gpl.html
 * @param string $field Значение какого поля необходимо достать
 * @param int $docid ID документа
 * @param int $tv является ли поле TV параметром (0 - нет || 1 - да)
 * @param int $published является ли ресурс опубликованным (0 - нет || 1 - да || all - оба варианта) добавлено GTX59
 * @param int $render Преобразовывать ли значение TV параметра в соответствии с его визуальным компонентом
 * @return string Значение поля документа или его TV параметра
 * @author akool, Agel_Nash <Agel_Nash@xaker.ru>
 *
 * @TODO getTemplateVarOutput не применяет визуальный компонент к TV параметрам у которых значение совпадает со значением по умолчанию
 * 
 * @example
*       [[DocInfo? &docid=`15` &field=`pagetitle`]]
*       [[DocInfo? &docid=`10` &field=`tvname`]]
*       [[DocInfo? &docid=`3` &field=`tvname` &render=`1`]]
*/
if(!defined('MODX_BASE_PATH')){die('What are you doing? Get out of here!');}
$default_field = array('type','contentType','pagetitle','longtitle','description','alias','link_attributes','published','pub_date','unpub_date','parent','isfolder','introtext','content','richtext','template','menuindex','searchable','cacheable','createdon','createdby','editedon','editedby','deleted','deletedon','deletedby','publishedon','publishedby','menutitle','donthit','haskeywords','hasmetatags','privateweb','privatemgr','content_dispo','hidemenu','alias_visible');
$docid = (isset($docid) && (int)$docid>0) ? (int)$docid : $modx->documentIdentifier;
$field = (isset($field)) ? $field : 'pagetitle';
$render = (isset($render)) ? $render : 0;
$published = (isset($published) && in_array($published, array(0,1,'all'))) ? $published : 1;
$output = '';
if (in_array($field, $default_field)) {
    $doc = $modx->getPageInfo($docid, $published, $field);
    $output = $doc[$field];
}else{
    if(isset($render) && 1==$render){
        $tv = $modx->getTemplateVarOutput($field, $docid, $published);
        $output = $tv[$field];
    }else{
        $tv = $modx->getTemplateVar($field,'*',$docid, $published);
        $output = ($tv['value']!='') ? $tv['value'] : $tv['defaultText'];
    }
}
return $output;

Генерация ключевиков по содержимому. (snippet)

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

Автор сниппета — liberpro . Сниппет имеет возможность обработки tv, но за донат :)

оригинал топика

[!keyw? &id=`2` &fields=`longtitle,alias` &min=`5` &limit=`10`!]



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

Скрываем дочерние документы в дереве ресурсов. Плагин TreeAction.

Знакомая многим настройка для скрытия дочерних ресурсов в дереве у определённых документов пропала после выхода одного из обновлений системы. А похоже, что этот функционал востребован. И дело даже не в скорости работы админки, а просто в удобстве отображения большого списка документов.

Как раз дошли руки до этой задачи, и получился плагин использующий стандартные (хоть скрытые и неиспользуемые) функции системы.

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

catalogfill запуск по cron крон

Добрый день!

Кто-нибудь настраивал catalogfill для импорта по крону? Подскажите как сделать? Делал пару лет назад сам делал, но забыл, сейчас вспомнить и разобраться не получается(.
Спасибо!

FormLister 1.5: новые капчи

Писать про изменения и новые баги улучшения я не буду, потому как это не очень интересно — можно глянуть здесь. Главное, что добавлена поддержка Twig, чтобы облегчить работу со сложными формами и переделана работа с капчами, про капчи и напишу.

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

MODX.Evolution.updateNotify - Обновление Evo в пару кликов


Обновил плагин добавив в него функционал обновления.

Как работает:
Сравнивает текущую версию и версию на GitHub, если появилась новая версия показывает в админке информер. По клику обновить до версии # скачивается свежая версия, из которой удаляются файлы:
/assets/cache/siteManager.php, .htaccess, robots.txt
что б не затереть изменения которые в них могли внести.
И после чего запускается Install (оттуда автоматически удаляются все шаблоны, тв и чанки), так же что б не было сюрпризов.

— так же работает если изменили папку Manager на другую.
p.s. в Планах сделать мультиязычную версию.

Скачать можно тут: extras.evolution-cms.com/packages/core/modxupdatenotifer.html
Или установить через Extras

Думаю после тестирования будет отправлен в плагины по умолчанию.

Telegram bot&MODX

0. Кому и зачем это нужно


Вообще никому. И незачем.

Но если вдруг кому-то придет в голову подключить какой-то магазин, написанный на Evo, к мессенжеру Telegram, то я скажу — это вполне возможно.

Речь сейчас не идет о чат-помощнике на сайте. Подобных решений в сети достаточно. Мне довелось немного попробовать как работает полноценный бот с базовой установкой MODX Evo. Ожидаемо все
Читать дальше →

modxAccount - личный кабинет веб пользователя

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

Долго разбирался с параметрами аналогичных сниппетов для регистрации, все они в чём то, да не устраивали, чтобы расширить возможности кабинета, приходилось читать простыни кода и запоминать всю логику. Но намучавшись, решил, что своё решение будет намного быстрее сделать, нежели переделать чужое.

Dmi3yy порекомендовал обратить внимание на класс modUsers от Agel_Nash. Из этого класса и позаимствовал некоторые методы, для упрощения работы.

Что может modxAccount.
Регистрация пользователя, с использованием всех доступных полей юзера, плюс, можно создавать свои настройки юзера в таблице web_user_settings, добавление аватарки, капча.
Восстановление пароля.
Личный кабинет.
Форма входа.

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

modxLoader - загрузчик классов и методов

modxLoader — это плагин для загрузки классов и методов, как из PHP так и через AJAX.

Использование данного класса достаточно просто и позволит разрабатывать новые сниппеты без записи их в админке, а вызывать сразу методы класса.

Удобство в том, что создав свой класс, можно использовать его без его объявления, а потом обращения к нужному методу, а так же инклюдов. А сразу выбираем метод.

Пример
$modx->load->controller('account/controller/login', $config);

'account/controller/login' — путь в папке assets/snippets/ до нужного сниппета и название класса контроллера (AccountControllerLogin).
По умолчанию, если не указан метод, вызывается метод класса index.

$config — параметры передаваемые в выбранный метод.

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