Denis Bushaev

Denis Bushaev

Был в сети 07 мая 2021, 12:45
Заказы принимаю
Обрезка по кол-ву символов. Потом ищет первую точку и обрезает всё после неё. Если не находит возвращает просто обрезку по кол-ву симполов

{$str | excerpt : 150}
$fenom->addModifier('excerpt', function ($str, $limit = 120) {
    $str = substr($str, 0, $limit);
    $str = explode('.', $str);
    if (count($str) > 1) unset($str[count($str) - 1]);
    return implode('.', $str . '.');
});
Смею предположить, что это проблема php на винде. У меня тоже копия (даже несколько сайтов) modx с обычного линуксовского хостинга на винде всякие разные ошибки генерят. Есть еще постоянные ошибки, типа
  • Error caching lexicon topic
  • Plugin ****(тут название рандомного плагина) failed
  • Error caching script elements/modplugin/**(тут id плагина)
При переносе обрано на нормальных хостинг все эти проблемы тут же исчезают и сайт работает как нужно.
Надыбал инфу как это исправить. При создании поля для рендера, оно не должно называться так же как и поле, с которым вы взаимодействуете. Ну то бишь. Например у вас есть поле id, в которое вы передаёте id ресурса. Для поля отображения не вы должны уже указывать id т.к. он его перезапишет в этом случае.
Вот пример моего конфига вывода тайтла для ресурсов.

Пример загрузки изображений для msOptionsPrice2
$msoptionsprice = $modx->getService('msoptionsprice');
$msoptionsprice->initialize('web');

$pcsAction = 'mgr/gallery/upload';
$pcsOptions = ['id' => $productId, 'name' => $imgName, 'file' => $imgTmpPath];
$pcsConfig = ['processors_path' => MODX_CORE_PATH . 'components/minishop2/processors/'];
/** @var \modProcessorResponse $response */
$response = $this->modx->runProcessor($pcsAction, $pcsOptions, $pcsConfig);
if ($response->isError()) {
    $this->modx->log(MODX_LOG_LEVEL_ERROR, "Не удалось установить фото для товара ($productId). Сообщение: {$response->getMessage()}");
}

$responseObject = $response->getObject();
$id = $responseObject['id'];

$modifications = array(
    array(
        'price'   => '1860.0',
        'article' => 'BL802-32A',
        'weight'  => '150',
        'image' => $id,
        'options' => array(
            'size' => '32A'
        )
    ),
);

$rid = 152;

$modifications = $modx->call('msopModification', 'saveProductModification', array(&$modx, $rid, $modifications));
На всякий случай прикрепляю наполнение. Как писал выше. Кроме pagetitle, parent, alias, uri и нескольких tv`шек наполнение одинаковое 100%. Проверил несколько раз.
array(44) {
  ["id"]=>
  int(162)
  ["type"]=>
  string(8) "document"
  ["contentType"]=>
  string(9) "text/html"
  ["pagetitle"]=>
  string(26) "Теплоизоляция"
  ["longtitle"]=>
  string(0) ""
  ["description"]=>
  string(0) ""
  ["alias"]=>
  string(16) "teploizolyacziya"
  ["alias_visible"]=>
  bool(true)
  ["link_attributes"]=>
  string(0) ""
  ["published"]=>
  bool(true)
  ["pub_date"]=>
  int(0)
  ["unpub_date"]=>
  int(0)
  ["parent"]=>
  int(3)
  ["isfolder"]=>
  bool(true)
  ["introtext"]=>
  string(0) ""
  ["content"]=>
  string(0) ""
  ["richtext"]=>
  bool(true)
  ["template"]=>
  int(3)
  ["menuindex"]=>
  int(0)
  ["searchable"]=>
  bool(true)
  ["cacheable"]=>
  bool(true)
  ["createdby"]=>
  int(1)
  ["createdon"]=>
  string(19) "2020-11-03 22:50:13"
  ["editedby"]=>
  int(1)
  ["editedon"]=>
  string(19) "2020-11-05 21:05:19"
  ["deleted"]=>
  bool(false)
  ["deletedon"]=>
  int(0)
  ["deletedby"]=>
  int(0)
  ["publishedon"]=>
  int(0)
  ["publishedby"]=>
  int(0)
  ["menutitle"]=>
  string(0) ""
  ["donthit"]=>
  bool(false)
  ["privateweb"]=>
  bool(false)
  ["privatemgr"]=>
  bool(false)
  ["content_dispo"]=>
  int(0)
  ["hidemenu"]=>
  bool(false)
  ["class_key"]=>
  string(10) "msCategory"
  ["context_key"]=>
  string(3) "web"
  ["content_type"]=>
  int(1)
  ["uri"]=>
  string(25) "katalog/teploizolyacziya/"
  ["uri_override"]=>
  int(0)
  ["hide_children_in_tree"]=>
  int(0)
  ["show_in_tree"]=>
  int(1)
  ["properties"]=>
  NULL
}