Наумов Алексей

Наумов Алексей

С нами с 31 марта 2013; Место в рейтинге пользователей: #13
Наумов Алексей
19 сентября 2018, 15:42
0
Сейчас вы в head напишите
{var $id = $_modx->resource.id}
а в чанке мм… допустим login вот так:
{var $id = $_modx->user.id}
вопрос, сколько времени вы будете искать почему конструкция
{$id}

неправильно работает в чанке footer?

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

Пользуйтесь $_modx->resource.id, это нормально, понятно, удобно.

Ну и setPlaceholder, когда это нужно.
Наумов Алексей
13 сентября 2018, 11:06
0
Именно… приходится все помнить и держать в голове постоянно эту вероятность.
Наумов Алексей
13 сентября 2018, 09:59
0
Мне при схожей задаче пришлось из-за этого уйти от обновления ресурсов через процессоры, т.к. очень долго.
Все через ручную работу с объектами делал и каждый раз вспоминал, не забыл ли чего…
Зато 15 тыс объектов за 5 минут обновлялись.
Наумов Алексей
13 сентября 2018, 09:01
0
Это больше вопрос к pdoTools…
но в тексте ошибки прямо написано:
Could not join TVs to the class "ecMessage" that is not a subclass of the "modResource". Try to specify correct class in the "joinTVsTo" parameter.
Попробуйте указать этот параметр!!!
Наумов Алексей
12 сентября 2018, 15:10
+1
Да не умеет он искать нигде, кроме ресурсов и комметариев Tickets.

«Прописать» — посмотрите исходный код mSearch2, мб по аналогии с Tickets сможете внести изменения, чтобы и в других таблицах искал.
Наумов Алексей
12 сентября 2018, 15:04
0
Потому что в данном коде вы сначала ищете по полям ресурса, а затем присоединяете к результату таблицу с сообщениями, но никак не ищете по ней!

Вот цитата из документации на mSearch2:
Благодаря специальному алгоритму, можно индексировать необычные поля документов, например свойства товаров miniShop2, просто указав их в настройках наравне со всеми. Также mSearch2 умеет индексировать комментарии Tickets, соответствующая настройка включена по умолчанию.
отсюда видим, что поиск может идти по полям документа и по комментариям Tickets, так mSearch2 сделан!
Наумов Алексей
10 сентября 2018, 16:12
0
Смотрю base добавили и заработало)
Наумов Алексей
10 сентября 2018, 15:30
0
Вот даже сформулировать проблему лень.

Ссылки генерируются относительные, без "/" в начале, отсюда и проблема вся.

Или тег base в head добавьте, или используйте параметр schema конкретно в вызове сниппета, или глобально для всего сайта. Например, вот, классная инструкция: modx.pro/howto/5139, раздел «I».
Наумов Алексей
06 сентября 2018, 15:40
0
Поменять контексты местами — операция не для чайника. Так что или учиться, или найти более опытного и смелого :)
Наумов Алексей
06 сентября 2018, 15:04
0
Я бы попробовал перекинуть ресурсы местами у контекстов, а затем уже сменить их настройки… Прям через базу сделать это.
Вот только что там еще кроме ресурсов к контекстам привязано…
Наумов Алексей
06 сентября 2018, 14:20
0
Да: clip2net.com/s/3WvKAM9

Создаем в MIGX 2 конфига, один для таблицы 1, другой для таблицы 2.

В таблице 1 у поля, которое будет таблицей 2 указываем Input TV type = migx, а Configs = имя конфига 2.
Наумов Алексей
29 августа 2018, 11:23
2
+1
Есть такое решение у меня:

1) Создаем TV changeTemplate и назначаем его категориям.
2) Создает плагин changeTemplate, на событие OnDocFormRender (код ниже)
3) Теперь в TV мы можем написать:
«2» — всем дочерним ресурсам будет назначен шаблон 2
«2,3» — первый уровень дочерних ресурсов будет с шаблоном 2, второй уровень и далее — с шаблоном 3
ну и т.д., «2,3,4»
4) Но данный плагин сработает на все, в том числе и на категории, а не только на товары, если это нужно исправить — внесите изменения в код.

<?php
/**
* =========================
* ChangeTemplate
* =========================
*
* Plugin for MODX Revolution
* Set which template is inherited by children 
* documents of a certain parent document
*
* Author:
* Marc Loehe (boundaryfunctions)
* marcloehe.de
*
* Modified by:
* Lorenzo Stanco <lorenzo.stanco@gmail.com>
* Lorenzostanco.com
*
* Usage:
*
* 1. Paste this as new plugin and connect it to system event
* 'OnDocFormRender'.
*
* 2. Assign a new TV 'changeTemplate' to each template
* for which you want to define the default children template.
*
* 3. Set the newly created TV to input type "Text" 
*
* 4. Open a document and in the 'changeTemplate' TV type a 
* comma separated list of template IDs.
*
* 5. Have fun!
*
*/
 
// Check Event
if ($modx->event->name == 'OnDocFormRender' && $mode == modSystemEvent::MODE_NEW) {
   
  $id = empty($_REQUEST['id']) ? false : $_REQUEST['id'];
  $id = empty($id) ? (empty($_REQUEST['parent']) ? false : $_REQUEST['parent']) : $_REQUEST['parent'];
  // Get current document ID
  if ($id) {
 
    // Document Chain
    $resources = array($id);
 
    // Get parent ID
    foreach ($modx->getParentIds($id, 10, array('context' => $_REQUEST['context_key'])) as $parentId) {
      if ($parentId) array_push($resources, $parentId);
    }
     
    // Search changeTemplate in the chain
    $level = 0;
    $childTemplates = array();
    foreach ($resources as $resourceId) {
      $resource = $modx->getObject('modResource', $resourceId);
      if ($childTemplatesTV = $resource->getTVValue('changeTemplate')) {
         
        // Create template array for each tree level
        $childTemplates = @explode(',', $childTemplatesTV);
        if (empty($childTemplates)) break;
        foreach ($childTemplates as $k => $v) $childTemplates[$k] = intval(trim($v));
         
        break;
 
      }
 
      $level++;
 
    }
 
    // Set template based on tree level
    if (!empty($childTemplates)) {
      $useTemplate = $childTemplates[$level];
      if (!empty($useTemplate)) {
        
        // Set default template
        if (isset($modx->controller)) {
          $modx->controller->setProperty('template', $useTemplate);
        } else { // modX < 2.2.0
          $_REQUEST['template'] = $useTemplate;
        }
 
      }
    }
 
  }
 
}
Наумов Алексей
28 августа 2018, 16:52
+1
Вот тут
$uri = str_replace($matches[1], '', $matches[0]);
для главной страницы получается или пустая строка или слеш.
Ну и подозреваю, что findResource ее не находит.
В этом случае добавьте условие в код, что если строка пуста — то это главная страница ($id = 1).
Наумов Алексей
16 августа 2018, 15:37
0
см. параметр tvPrefix у сниппета pdoResources
Наумов Алексей
09 августа 2018, 14:48
0
Версия MODX и Tickets последняя?
Наумов Алексей
06 августа 2018, 13:45
0
Формат телефона 79990000000 строго обязателен? Что для зарубежных пользователей?