Вопросы

В зависимости от рефера подгружать свой скрипт

Добрый день.
Подскажите пожалуйста, как можно реализовать такую штуку:
Если человек пришел на сайт с Поисковиков яндекс или гугл, то подгружается один скрипт.
Если c контекстной рекламы Google — то другой.
Если с ЯДиректа — то третий.
Собственно всю голову сломал, определить откуда человек пришел через pdoParser получается, а вот условия написать пока не придумал.
Юрий
31 октября 2017, 10:20
modx.pro
911
0

Авторизация в новом контексте

Всем привет, возник вопрос:
Когда пользователь авторизован в админке, то это без проблем можно проверить в контексте web
{if $_modx->hasSessionContext('mgr')}OK{/if}
Но возникает проблема в новом созданном контексте, там этот метод не работает.
Нашёл в сообществе пост, где Василий поделился плагином, который может авторизовать в любом контексте
<?php
if ($modx->event->name == 'OnWebPageInit') {
   if ($modx->user->hasSessionContext('mgr') && !$modx->user->hasSessionContext($modx->context->key)) {
	$modx->user->addSessionContext($modx->context->key);
   }
}

Но проблема в том, что первая часть условия не срабатывает в новом контексте и авторизация не происходит.
Подскажите как можно из любого контекста проверить авторизован ли пользователь в админке?
Семён Кудрявцев
31 октября 2017, 07:38
modx.pro
3 035
0

К общей сумме товара в корзине прибавить значение

Подскажите как при формировании общей суммы в корзине товара прибавить значение тв поля этого товара

public function status($data = array())
    {
        $status = array(
            'total_count' => 0,
            'total_cost' => 0,
            'total_weight' => 0,
        );
        foreach ($this->cart as $item) {
            if (empty($item['ctx']) || $item['ctx'] == $this->ctx) {
                $status['total_count'] += $item['count'];
                $status['total_cost'] += ($item['price'] * $item['count']) + значение тв поля p1;
                $status['total_weight'] += $item['weight'] * $item['count'];
            }
        }

        return array_merge($data, $status);
    }
Максим
31 октября 2017, 06:13
modx.pro
851
0

Revo в корзине подсчет суммы

Подскажите, как при формирование total_cost сумму каждого товара разделить на 2? где копать?
Максим
31 октября 2017, 05:54
modx.pro
739
-1

msOrder получить id товара

как получить id товара в сниппете
msOrder?
пробовал так но ничего не выводит
$idcost = $miniShop2->order->get('id');
Максим
30 октября 2017, 21:24
modx.pro
1 593
-1

mFilter2 - из метода boolean убрать значение "нет"

Здравствуйте!

Помогите, пожалуйста, доработать метод фильтрации. У товара есть поле ms|favorite. У некоторых товаров это поле отмечено (чекбокс). Нужно в фильтре вывести только одну галочку, по клику на которую бы фильтровались товары. Можно выводить методом boolean, но тогда будет выбор «да» и «нет».

Нашел направление, куда копать.

Создал новый метод Positive, присвоил:

&filters=`ms|favorite:positive`
Но дальше эксперименты-правки не увенчались успехом.

Грубо говоря, из метода boolean, который я взял за основу, нужно убрать те варианты, где поле не отмечено (нулевое?). Далее чистый boolean с исправленными названиями на positive.

<?php
class myCustomFilter extends mse2FiltersHandler {
	public function buildPositiveFilter(array $values, $name = '') {
		if (count($values) < 2 && empty($this->config['showEmptyFilters'])) {
			return array();
		}
		$results = array();
		foreach ($values as $value => $ids) {
			$empty = empty($value) || (is_numeric($value) && (int)$value === 0);
			$title = $empty
				? $this->modx->lexicon('mse2_filter_positive_no')
				: $this->modx->lexicon('mse2_filter_positive_yes');
			if (!isset($results[$title])) {
				$results[$title] = array(
					'title' => $title,
					'value' => (int)!$empty,
					'type' => '<b>positive</b>',
					'resources' => $ids,
				);
			}
			else {
				$results[$title]['resources'] = array_merge($results[$title]['resources'], $ids);
			}
		}
		ksort($results);

		return $results;
	}
 	public function filterPositive(array $requested, array $values, array $ids) {
		$matched = array();

		$tmp = array_flip($ids);
		foreach ($requested as $value) {
			foreach ($values as $k => $resources) {
				$empty = empty($k) || (is_numeric($k) && (int)$k === 0);
				if ((empty($value) && !$empty) || (!empty($value) && $empty)) {
					continue;
				}
				foreach ($resources as $id) {
					if (isset($tmp[$id])) {
						$matched[] = $id;
					}
				}
			}
		}

		return $matched;
	}
}
Мартин Очоа
30 октября 2017, 20:06
modx.pro
2
2 102
0

Office + расширенные поля пользователей

Не сохраняются дополнительные поля для юзеров при регистрации через office.
пример кода:
if($_POST['group'] == 'entity'){
    
    $extended = $user->Profile->get('extended');
    $extended['inn'] = 'asdasdas';
    $user->Profile->set($extended['inn']);
}
но в админке абсолютно ничего не сохраняется(
Ярослав
30 октября 2017, 17:45
modx.pro
1 446
0

Списки множественного выбора для потомков

Здравствуйте делаю список множественного выбора в TV

@SELECT `pagetitle`, `id` FROM `modx_site_content` WHERE `parent`=3

Не суть важно через что выводить. У меня в ресурсе 3 лежат категории блога, а в этих категориях уже статьи. Так вот в админке при выборе появляются только категории, но не ресурсы этих категорий. Как заставить отображаться в админке при выборе и ресурсы подкатегорий?
Пробывал писать id через запятую- не помогает.
Сергей
30 октября 2017, 16:25
modx.pro
3
4 399
0

Как получить возможные значения столбца типа SET

Доброго времени суток! Создал объект по инструкции Ильи Уткина тут. Все работает отлично, НО у меня в таблице есть столбец типа SET (на подобии селекта), знает ли кто способ вывести возможные значения этого столбца. Знаю что в SQL можно вывести через SHOW COLUMN, а как через xPDO это сделать?

P.S. В столбце возможны значения: 'Петя', 'Вася', 'Игорь'. Нужен метод который вернет массив этих значений.
Павел Степанов
30 октября 2017, 16:13
modx.pro
2 499
0

Расширение класса фильтрации в mSearch2

Приветствую всех!
В данный момент пишу кастомный класс фильтрации под дополнение msearch2 по инструкции
Класс подключен и фильтрация работает, на сайте выводиться два select.
Возникла следущая дилемма:
Andrey
30 октября 2017, 15:29
modx.pro
1 075
0