Скаут

Скаут

С нами с 22 мая 2017; Место в рейтинге пользователей: #356
Скаут
15 мая 2019, 09:56
0
спасибо)
если я правильно понял, то всё же внутри сниппета валидатора можно получить все поля формы
$allFormValues = $formit->request->dictionary->toArray();
Скаут
31 января 2019, 20:53
0
нагуглил два варианта:
этот:
$parent = 2;

$query = $modx->newQuery('modResource');
$query->where(array('parent' => $parent));
$childs = $modx->getCollection('modResource',$query);

foreach ($childs as $child) {
  $child->set('class_key','msProduct');
  $result = $child->save();
  if(!$result){
      echo 'Error for id='.$child->get('id');
  }
}
echo 'Done!';
и такой, более простой:
$parent = 2; 
foreach ($modx->getIterator('modResource', array('parent' => $parent)) as $resource) {
	$resource->set('class_key','msProduct');
}
Оба работают, но, также, оба в лог высыпают ошибку:
(ERROR in modProcessor::run @ /home/s17279/www/core/model/modx/modprocessor.class.php: 177) Flat file processor support is deprecated since version 2.7.0.


Я так понимаю, какая-то устаревшая функция используется? Какая можете подсказать? Не критично, но всё же
Скаут
10 января 2019, 21:31
0
Спасибо за ответ.
Поправь, если ошибусь. Тут идет завязка именно на свойства товаров в минишопе, т.е. они где-то в какой-то момент были все заданы, а потом при создании ресурса (назовем его категорией) во вкладке суперселекта выбираем нужные? Не понял, где и каким образом при формировании списка опций устанавливается вид отображения опции (список, чекбокс и т.п.)?

если, предположим, постараться обойтись без минишопа, то можно ли всё это дело завязать на обычные ТВ? И как-то можно создавать эти ТВ не из обычной вкладки, а наподобие опций минишопа?
Скаут
15 апреля 2018, 16:40
0
а как расширение определить? как вариант брать то что идёт после последней точки? или как-то заюзать PATHINFO_EXTENSION
Скаут
26 февраля 2018, 16:29
+1
наверное, преобразовать обе даты при помощи strtotime и дальше использовать операторы "><=".
Скаут
03 февраля 2018, 15:05
0
Мне кажется, для таких целей надо использовать migx.
На его основе можно создавать так называемые «повторяющиеся» строки (repeatable field), т.е. каждому ресурсу задавать столько сколько нужно при создании/редактировании.
Хранится все это в виде json, и дёргаться бд будет один раз для всех полей, а не 1 ТВ — 1 запрос.
выводится тоже, одним вызовом все что есть.

вроде так, а вот код-пример уже подсказать не смогу.
Скаут
28 января 2018, 16:47
0
{if $filters != 'тут ошибка, когда нет фильтров, т.е. сюда надо Нечего фильтровать '}
	{$filters}
	// тут начинка, если фильтры есть: кнопки всякие, элементы верстки блока
{/if}
Скаут
20 января 2018, 18:36
0
Хорошо, спасибо. Попробую. А то в инете находил инструкции просто офигеть с какой последовательностью действий…
Скаут
20 января 2018, 18:12
0
Оффтоп и всё же, смена кодировки по данной инструкции не нарушит таблицу? буквы е/ё не спутаются?
Скаут
17 января 2018, 17:47
0
Очень бы хотел увидеть новую версию вашего компонента CET_assetsTV, т.к. последняя, взятая из вашего гитхаба сыпет ошибки в логах.
Скаут
17 января 2018, 10:18
0
думаю, можно или migx использовать. Или как вариант обычное ТВ создать, а логика скрипта катая: получил ваше значение, получил значение из тв (если оно есть) перезаписал значение тв «старое содержимое##новое_содержмсое##». Каждый раз при добавлении нового значения присоединять разделитель ## (можно что угодно использовать). При чтении ты, использовать разделитель чтобы получить отдельно значения.
Скаут
16 января 2018, 23:52
0
думаю, надо не через css, а скриптами ext js
выше пример дали как можно. можно по другому, сразу код extjs подключать. Суть в том, что в исходном коде страницы смотрите id элемента и по этом айдишнику манипулируете.
Можно подключить js файл или скрипт прямо в тело.
<?php
switch ($modx->event->name) {
	case 'OnDocFormPrerender':  
   		 $modx->regClientStartupScript(MODX_ASSETS_URL . js/script.js');
	break;
}
Путь assets/js/script.js

Там делаем что хотим.
Например (минишопа нет, пример с обычными вкладками):
Ext.onReady(function() {
MODx.addTab("modx-resource-tabs",{title:"Описание",id:"modx-resource-desc"});
MODx.moveTV(["tv16"],"modx-resource-desc");
});
В данном примере добавляем вкладку «Описание» и перемещаем туда tv с id 16.

Тоже самое можно без подключения отдельного файла.
<?php
switch ($modx->event->name) {
	case 'OnDocFormPrerender':  
   		 $modx->controller->addHTML('
			<script type="text/javascript">
				Ext.onReady(function() {
					MODx.addTab("modx-resource-tabs",{title:"Описание",id:"modx-resource-desc"});
					MODx.moveTV(["tv16"],"modx-resource-desc");
				});
			</script>
		');
	break;
}
Скаут
16 января 2018, 23:36
0
думаю, надо не через css, а скриптами ext js
Скаут
14 января 2018, 16:16
0
не знаю, что за фигня, но \n, $n или ${n} никак не удалось завести. Зато тупо br сработал.
сделал так
{$title|ereplace:'/^([^\s]*)\s/':"$1br"}
br с кавычками, тут редактор тег применяет…

Проверьте, пожалуйста, ошибок нет? Работать работает.
Скаут
14 января 2018, 13:28
0
ах вот оно, я то думал, он автоматически присваивает название модуля.
[[+FileAttach:notempty=`<div>[[+FileAttach]]</div>`]]
Спасибо.
Скаут
10 января 2018, 21:39
+1
отлично, спасибо, вообще сегодня сделал так:
{var $tv_staffjob = $_pls['tv.staffjob']}
{var $val1 = 'выезд на дом для мед. процедур'}
{var $val2 = 'приходящая на несколько часов'}
{var $val3 = 'проживание только с больным'}
{var $val4 = 'проживание с больным и родственниками'}
А потом в месте вывода так:
{if $tv_staffjob == '21'}{$val1}{elseif $tv_staffjob == '22'}{$val2}{elseif $tv_staffjob == '23'}{$val3}{elseif $tv_staffjob == '24'}{$val4}{/if}
Но тоже слишком много символов.

Со switch вот так вышло:
{switch $_modx->resource.TVname}
    {case '21'}
        {var $tvname = 'вариант 1'}
    {case '22'}
        {var $tvname = 'вариант 2'}
    {case '23'}
        {var $tvname = 'вариант 3'}
    {case '24'}
        {var $tvname = 'вариант 4'}
{/switch}
И в месте вывода:
{$tvname}
Хотя со сниппетом вышло бы лучше в плане, в одном месте хранится, а выводить можно в разных чанках и шаблонах чисто переменную.
Скаут
29 июля 2017, 18:33
0
огромнейшее спасибо! я уже больше часа варианты перебираю…
ещё момент можно как-то подправить, сейчас регулярка проверяет наличие плюса, количество цифр, можно ли, чтобы она проверяла жёстко +7? потому как сейчас после плюса может быть любая цифра и валидация будет удачной, если количество равно указанному.
Скаут
29 июля 2017, 17:16
1
0
Всё оказалось проще, даже данный плагин не нужен.
В поле можно задать регулярное выражение и оно будет контролировать всё это дело, введёт не так — система напишет, попробует сохранить — получит ошибку.

Можете помочь с написанием регулярки
+79999999999
вот такой формат нужен, без каких-либо других вариантов.

смог вот так
[+7]\[0-9]{10}
, но такой вариант не следит за количеством, т.е. минимальную длину контролирует, но макс нет, т.е. спокойно пропускает +79999999999999999999
Скаут
29 июля 2017, 12:55
0
а как можно добавить свои js на страницу создания / редактирования ресурсов?

кстати, в доп полях (вариант произвольный текст) есть возможность регулярки использовать, может так ещё можно?