+1.13
125 читателей, 211 топиков

Исправление раскладки msearch2

Это скорее всего, простоq вопрос, но я не могу понять где это включается…
Подскажите, люди добрые:)
На сайте минишоп эта функция работает. Но с одной проблемой: если ввести не «тов», а «njd», то будет искать «тов». Но если ввести вместо «това» — «njdf», то уже не ищет. Почему так?)
Спасибо!

EditDocs - модуль для редактирования полей базы & TV параметров (Evo) update 11.02.2017

Я долго пользовался Fast content csv для разных случаев, но в последних версиях evo он работал через раз и разбираться не очень хотелось, решил запилить свое решение.
Итак что представляет из себя данный модуль — это табличное редактирование выбранных полей документа & tv, импорт из Excel или Calc, апдейт из Excel или Calc. Выбор нужных полей происходит путем расстановки галочек в меню. Также нужно вписать в поле ID родителя от которого мы будем редактировать дочерние документы. Выбираем уровень вложенности в дереве, по умолчанию — 1.
Далее кликаем «Поехали» и получаем таблицу.


Редактирование происходит в поле Input, внесение результата идет аяксом на событие onblur().
Модуль не рекамендуется блониданкам и прочему офисному планктону. Хотя в шаблонах tpl вы найдете где можно оставить только нужные поля для редактирования и добавить вывод только нужных TV. По дефолту они все выводятся через плейсхолдер.

Для удобства сделал кнопку для очистки кэша, после внесения изменений это необходимо.
ОБЯЗАТЕЛЬНО наличие DocLister и Modx API.

Скачать можно с гитхаба https://github.com/Grinyaha/editDocs
Установка стандартная, содерджимое архива закидываем в modules. Создаем новый модуль editDocs и вставляем туда
include_once($modx->config['base_path'].'assets/modules/editdocs/editdocs.module.php');


UPD 28.01.2017 — переписал функционал по новому, исправил баги, добавил уровни вложенности. Спасибо огромное Pathologic за помощь!

UPD 01.02.2017
— перевод модуля на ООП.
— добавлена опционально ajax-пагинация
ДЛЯ РАБОТЫ ПАГИНАЦИИ необходимо создать чанк с именем paginateEditDocs и содержимым
[+dl.wrap+]

<tr><td colspan="100" align="center">
	
[+list.pages+]
	
	</td>
</tr>


UPD 11.02.2017
— добавил импорт из Excel или Calc
— добавил апдейт из Excel или Calc
— мелкие фиксы

Спасибо Agel_Nash Pathologic a-sharapov
за помощь!
И спасибо какому-то доброжелателю за донат в 200 руб. Это было неожиданно :)

А кому понравился модуль может задонатить мне на чай :)

R948295169787
Z350511691467

MODx Letters (бывший EasyNewsletter)

Переписал EasyNewsletter.

Сервисы почтовой рассылки сейчас очень популярны. Однако не все компании прибегают к платным услугам рассылки и подписки на новости. Главные задачи сервиса почтовых рассылок: ведение клиентской базы и рассылка им писем. Очень важным этапом подготовки к внедрению сервиса почтовых рассылок является правильная настройка домена для того, чтобы письма, отправленные на адреса, не попадали в спам. Сюда входит не только правильная настройка mx-записей, но и настройка dkim и spf.
Читать дальше →

Костыль для защиты документа в зависимости от группы пользователя

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

Лечение:

В файле manager/includes/secure_web_documents.inc.php комментим строчку 26:
$modx->db->update('privateweb = 1', $modx->getFullTableName("site_content"), "id IN (".implode(", ",$ids).")");


Выполняем запрос к mySql:
Update `modx_site_contnet` set privateweb=0

Обратите внимание, что префикс может быть иным

Далее создаем плагин на OnWebPageInit, вставляем:
$e = $modx->event;

if ($e->name == 'OnWebPageInit') {
	if ($_SESSION['mgrInternalKey']) return;
	$currentID = $modx->documentIdentifier;
	$modx->db->query('Update '.$modx->getFullTableName('site_content').' set privateweb=0 where id='.$currentID); 
	
	$errorPage = $modx->getConfig('unauthorized_page');
	$errorPage = $modx->makeUrl($errorPage);
	$sql = 'Select GROUP_CONCAT(`document_group`) from '.$modx->getFullTableName('document_groups').' where `document`='.$currentID;
	//echo $sql;
	//exit();
	$dg = $modx->db->getValue($sql);
	if (!$dg) return;
	if (!$_SESSION['webInternalKey']) $modx->sendRedirect($errorPage);
	
	$wg = $modx->db->getValue('Select GROUP_CONCAT(`webgroup`) from '.$modx->getFullTableName('webgroup_access').' where `documentgroup` in ('.$dg.')');
	
	$access = $modx->db->getValue('Select count(*) from '.$modx->getFullTableName('web_groups').' where `webgroup` in ('.$wg.') and `webuser`='.$_SESSION['webInternalKey']);
	if (!$access) $modx->sendRedirect($errorPage);
	
}

Должно заработать. Проверял на сайте с 1.2-d8.1.4

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, чтобы облегчить работу со сложными формами и переделана работа с капчами, про капчи и напишу.

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