Константин

Константин

С нами с 24 апреля 2017; Место в рейтинге пользователей: #5751
Константин
12 мая 2022, 18:27
0
Да, походу)
Но когда такой код чанка

{foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}
Вот что выводит: prntscr.com/ujPFA_6LX2nQ

Опять кракозябла
Константин
12 мая 2022, 17:23
0
Блин, туплю капец.

Вот вызов сниппета:
{$_modx->runSnippet('msProductOptions', [
'product' => 8875,
'tpl' => 'msProductOptionsSearchTpl'
'onlyOptions' => 'marka'
])}
Вот вместо прошлого кода вставил это и что получилось:

<select name="marka" class="no-border jsSelect">
{foreach $options as $name => $values}
    <div class="form-group row align-items-center">
        <label class="col-6 col-md-3 text-right text-md-left col-form-label" for="option_{$name}">{('ms2_product_' ~ $name) | lexicon}:</label>
        <div class="col-6 col-md-9">
            <select name="options[{$name}]" class="form-control col-md-6" id="option_{$name}">
                {foreach $values as $value}
                    <option value="{$value}">{$value}</option>
                {/foreach}
            </select>
        </div>
    </div>
{/foreach}

</select>
И выводит кракозяблу prntscr.com/W-SvGf1Es-rQ
Константин
11 мая 2022, 20:02
0
Join убрал, заменил на split
Теперь чанк такой:
<select name="marka" class="no-border jsSelect">
{foreach $options as $option}

            {if $option.value is array}
               <option value="{$option.value | split : ', '}">{$option.value | split  : ', '}</option>
            {else}
                <option value="{$option.value}">{$option.value}</option>
            {/if}
            
{/foreach}
</select>

И выводит, как я уже понял, массив Array: prntscr.com/bBdan3Y7zv1y

Выходит его теперь как-то разобрать foreach menom?
Константин
11 мая 2022, 16:24
0
Получилось вывести, но почему-то значения опций идут через запятую: prnt.sc/tttKEXSIDpZU

Есть ли возможность каждое значение опции отдельным полем в выпадающем списке выводить?
Константин
11 мая 2022, 14:55
0
То есть создать технический товар, который будет содержать все существующие значения опций, указать его в product, но скрыть от индексации и публикации? Спасибо за идею. Точно же.
Константин
11 мая 2022, 14:22
0
Спасибо, я просто очень новичок в программировании, почти ноль в php по этому так туплю.
Понял, как вывести название полей.
Но не могу понять, как вывести именно значения конкретного поля: prnt.sc/2FKOYRKsdTPl
То есть не МОДЕЛЬ, а его значения: RIO, SOLARIS.
Может не правильно изначально сформулировал.
Константин
11 мая 2022, 12:29
0
Спасибо! Теперь ошибка пропала: prnt.sc/Y6GQrMCHXjyr
Скрипт сработал
Но локализации spb в ресурсах не добавились:https://prnt.sc/uKX81XjRPLcN

Вот скрипт:

<?php
$lang = 'spb';
$localizator = $modx->getService('localizator');
$resources = $modx->getIterator('modResource');
foreach($resources as $resource) {
	$tmp = $modx->getObject('localizatorContent', array('resource_id' => $resource->id, 'key' => $lang));
	if($tmp) {
		$tmp = $modx->newObject('localizatorContent');
		$tmp->fromArray(array(
			'key' => $lang,
			'resource_id' => $resource->id,
			'active' => 1,
			'pagetitle' => $resource->pagetitle,
			// ...
		));
		$tmp->save();
	} else {
		// обновление если нужно, fromArray или ->set(key, value);
	}
	
}
Константин
11 мая 2022, 09:43
0
Ведь задача вывести значения списком, например МаркиL mazda, kia, bmw… Модели: CX-7, Rio, X6

Пробую написать сниппет такого плана.

<?php
$options = $modx->getIterator('msOption');
$output = array();
$onlyoptions = marka, model;
foreach($options as $onlyoptions ){
$output[] = $onlyoptions ->get('key').'=='.$option->get('value');
}
return $output;

Не работает…
Константин
11 мая 2022, 09:06
0
Нашел такой вариант вывода опций, но выводятся только названия опций, а не значения: prnt.sc/EmEinITQ3NQt

<?php
$options = $modx->getIterator('msOption');
$output = '';
foreach ($options as $opt){
$values[] = $opt->get('caption').'=='.$opt->get('key');
}
$output = implode('||',$values);

return $output;
Константин
11 мая 2022, 08:50
0
То есть, в сниппете мы сделали массив с опциями под названием option: prnt.sc/2KP4LPH3PSi6
А в шаблоне феном разбираем этот массив так? prnt.sc/n_EJth9nw9pr
Тогда на странице пустое поле: prnt.sc/iUZ68adwGFtX
Константин
06 мая 2022, 12:12
0
Спасибо!
1. Создал сниппет с этим кодом prnt.sc/ZuVvCHGba7Ny
2. Вывел сниппет в шаблоне prnt.sc/szcJrmnmSQ2O
3. Вот что получилось: ARRAY prnt.sc/vVOULK-zDUZh
Константин
06 мая 2022, 09:31
0
Fatal error: Uncaught Error: Call to a member function save() on null in /home/o/olesiayc/olesiayc.beget.tech/public_html/core/components/console/processors/exec.class.php(24): eval()'d code:19 Stack trace: #0 /home/o/olesiayc/olesiayc.beget.tech/public_html/core/components/console/processors/exec.class.php(24): eval() #1 /home/o/olesiayc/olesiayc.beget.tech/public_html/core/model/modx/modprocessor.class.php(185): ConsoleExecProcessor->process() #2 /home/o/olesiayc/olesiayc.beget.tech/public_html/core/model/modx/modx.class.php(1770): modProcessor->run() #3 /home/o/olesiayc/olesiayc.beget.tech/public_html/core/model/modx/modconnectorresponse.class.php(144): modX->runProcessor('exec', Array, Array) #4 /home/o/olesiayc/olesiayc.beget.tech/public_html/core/model/modx/modconnectorrequest.class.php(86): modConnectorResponse->outputContent(Array) #5 /home/o/olesiayc/olesiayc.beget.tech/public_html/core/model/modx/modconnectorrequest.class.php(73): modConnectorRequest->prepareResponse(Array) #6 /home/o/olesiayc/olesiayc.beget.te in /home/o/olesiayc/olesiayc.beget.tech/public_html/core/components/console/processors/exec.class.php(24): eval()'d code on line 19
Константин
06 мая 2022, 09:30
0
Спасибо!!! Попробовал, но фатальная ошибка возникла prnt.sc/IRdEt9PcHJgf
Константин
06 мая 2022, 08:15
0
Добрый день, подскажите пожалуйста, можно ли с помощью этого скрипта modx.pro/components/12012/#comment-83962 автоматически создать локализацию для всех созданных ресурсов перенеся в эту локализацию поля: pagetitle, longtitle?
Пробую так: prnt.sc/lfgYjY8GrPRL
Ругается на синтаксическую ошибку…
Константин
06 мая 2022, 08:15
0
Добрый день, подскажите пожалуйста, можно ли с помощью этого скрипта modx.pro/components/12012/#comment-83962 автоматически создать локализацию для всех созданных ресурсов перенеся в эту локализацию поля: pagetitle, longtitle?
Пробую так: prnt.sc/lfgYjY8GrPRL
Ругается на синтаксическую ошибку…
Константин
29 апреля 2022, 17:44
0
А можно еще вопрос, тоже касается сортировки и mfilter2, но тут задача попроще вроде, но тоже не могу докумекать, как реализовать. Можно ли как-то поменять в выпадающем списке порядок: prnt.sc/4nPxdi19Oc7D
Что бы KIA была первой в списке?
Константин
29 апреля 2022, 15:05
0
foreach ($optCollection as $opt) {
$key = 'mse2_filter_msoption_'.$opt->get('key'); // Добавляем к каждой опции префикс
$q = $modx->newQuery('modLexiconEntry');
$q->where(array(
'namespace' => 'msearch2',
'topic' => 'default',
'name' => $key
));
$lexicon = $modx->getObject('modLexiconEntry', $q);
// Пытаемся получить запись из словаря для этой опции
if (!$lexicon){
// Если записи нет — добавляем опцию в словарь
$newLexicon = $modx->newObject('modLexiconEntry', array(
'name' => $key,
'value' => $opt->get('caption'),
'namespace' => 'msearch2',
'topic' => 'default',
'language' => 'ru',
'createdon' => time()
));
Константин
29 апреля 2022, 09:58
0
Ура, заработало, спасибо огромное за помощь)))