Павел Левин

Павел Левин

С нами с 30 августа 2013; Место в рейтинге пользователей: #150
Павел Левин
09 февраля 2014, 17:16
0
Действительно, это хорошая идея, но как и с любыми хорошими идеями их нужно и обмозговать, ведь скорей всего я буду привязываться к сессии, чтоб менять значения сортировки, который выбрал пользователь, а это значит, кэшировать вызов основного сниппет нельзя, что может сказаться на скорости загрузки сайта.

Будем пробовать. Спасибо.
Павел Левин
07 февраля 2014, 13:39
0
OR идёт для второго массива или только для значения $context ????

Помогло, что-то вывел), буду дальше пытать.
спасибо.
Павел Левин
07 февраля 2014, 12:10
0
Спасибо. Странно, что мне он выводит пустой массив, хотя если делать 2 разных запроса, то массивы будут не пусты.

Пишу так:
array(
         'context_key'      => $context
        ,'isfolder'         => 0
        ,'deleted'          => 0
        ,'editedon:>'       => $pubTime
        ,'editedon:<='      => $pubTimeEnd
        ),
        array(
         'OR:context_key'      => $context
        ,'isfolder'         => 0
        ,'deleted'          => 0
        ,'publishedon:>'    => $pubTime
        ,'publishedon:<='   => $pubTimeEnd
        )
Получаю пустоту [].
Павел Левин
06 февраля 2014, 15:55
0
Не могу найти пример использования OR для запроса в БД, для
$q->where()
Павел Левин
04 февраля 2014, 14:28
1
0
сделал так, работает:
$q->select('id,parent');
Павел Левин
03 февраля 2014, 18:20
0
Делаю так
$pubTime = strtotime(date("Y-m-d G:i:s"))-(24*60*60);
$pubTimeEnd = $pubTime+((24*60*60)*2);
$q = $modx->newQuery('modResource', array(
         'context_key' => 'web'
        ,'isfolder' => 0
        ,'deleted' => 0
        ,'publishedon:>' => $pubTime
        ,'publishedon:<=' => $pubTimeEnd
	));
$q->select($modx->getSelectColumns('modResource','modResource','',array('id','parent')));
$q->prepare();
$q->stmt->execute();
$result = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
return $modx->toJSON($result);
Получаю массив, но не знаю… верно ли я это сделал, не особо понял зачем $modx->getSelectColumns и для чего указывать 'modResource','modResource', всё это меня смущает и возможно оно работает криво??
Павел Левин
02 февраля 2014, 22:10
0
Всё пытаюсь исключить из выдачи ненужные поля, но никак не могу понять как это сделать, к примеру мне нужны «id» и «parent», а мне выплёвываются в массив все поля всех найденных документов, что и увеличивает работу скрипта.

М.б. кто нибудь подскажет ссылочку на статью, для наводки? или пример.
Павел Левин
25 ноября 2013, 19:11
0
MS не использую…

Да, интересно и как выводить рандом документ (пдоРесурс).

Вывод документов (статьи), просто мне стало интересно как делают рекомендации, какова логика автоматизации…

Как вариант, выводить рандом документы находящиеся в этой же категории.
Павел Левин
15 ноября 2013, 16:24
0
Здорово!
Сделал вывод данных для сниппета LastView в плейсхолдер (опционально).
Для гибкости).

— Спасибо.
Павел Левин
11 ноября 2013, 19:49
0
Я не заметил разницы.
Павел Левин
09 ноября 2013, 13:08
0
Спасибо. Очень похоже на цитату из фильмы Кадры, только там был про поисковый ресурс =)
Павел Левин
08 ноября 2013, 12:56
0
Сделал, правда использовал другую вашу статью.

Сниппет LastUpdate:
<?php
$pubTime = strtotime(date("Y-m-d"));//текущая дата в секунадах
$pubTimeEnd = $pubTime+(24*60*60);//следующий день
$ids = $modx->getChildIds($input);
$count = 0;
$value = 0;

if (!empty($ids)) {//проверяем дочерние ресурсы
    $count = $modx->getCount('modResource', array(
		'id:IN' => $ids
		,'isfolder' => 0
        ,'publishedon:>' => $pubTime
        ,'publishedon:<=' => $pubTimeEnd
	));
} else {//проверяем текущий ресурс
    $count = $modx->getCount('modResource', array(
    	'id:IN' => array($input)
		,'isfolder' => 0
        ,'publishedon:>' => $pubTime
        ,'publishedon:<=' => $pubTimeEnd
	));
    $value = 'new';
}

if($count) {return '<span class="last-update">'.($value?$value:$count).'</span>';} else {return ' ';}

Вызов в чанке/шаблоне:
[[+id:LastUpdate]]

Результат:
Вывод шильдика с количеством новых статей в категории, или помечает шильдиком "new".


Павел Левин
07 ноября 2013, 17:31
0
Василий, вам не приходилось использовать сравнение дат BETWEEN? такое возможно использовать в modx запросах?
Павел Левин
07 ноября 2013, 16:20
0
о, там много всякого, буду экспериментировать, перепишу, чтоб выводилось без MS. =)

Спасибо.
Павел Левин
07 ноября 2013, 14:18
0
Спасибо Василий, теперь работает как и планировалось:
Павел Левин
14 октября 2013, 17:24
0
Работает, но странно pdoResources все время выводит администратора т.е. юзер id 1, а на деле юзер id 2.
Павел Левин
04 октября 2013, 18:35
0
и так так же не работает, выводит только массив
<?php
$id = $modx->resource->id;

if (!isset($limit)) {$limit = 10;}
// Добавляем просмотренную страницу
if ($modx->resource->get('class_key') == 'modDocument') {
    if (!isset($_SESSION['viewed'])) {
    	$_SESSION['viewed'] = array($id);
	} else {
		if (in_array($id, $_SESSION['viewed'])) {
			$key = array_search($id, $_SESSION['viewed']);
			unset($_SESSION['viewed'][$key]);
		}

		if (count($_SESSION['viewed']) > $limit) {
			array_shift($_SESSION['viewed']);
		}
		
		$_SESSION['viewed'][] = $id;
	}
}

// Выводим просмотренные страницы
if ($returnViewed == '1') {
	if (!isset($_SESSION['viewed'])) {return;}
	$ids = array_reverse($_SESSION['viewed']);
    if (empty($ids)) {return;}
    
	$config = array(
		 'resources' => '-'.$modx->resource->id.','.implode(',', $ids)
		,'parents' => 0
		,'limit' => $limit
		,'tpl' => 'tpl.pdoResources'
	);

	echo '<!-- Массив: '.implode(',', $ids).' -->';
	$rows = $modx->runSnippet('pdoResources', $config);
    echo '<!-- '.$rows.' -->';
    
    if (!empty($rows)) {
    	return $modx->getChunk('tpl.pdoResources', array('rows' => $rows));
	}
}
Павел Левин
02 октября 2013, 21:34
0
Спасибо =), странно, что я не додумался.
Павел Левин
01 октября 2013, 18:59
0
Когда я делал мультиязычность на своём проекте с помощью babel я использовал следующие мануалы:
Документация Babel на русском
MODx REVO multilanguage Мультиязычность + Babel (способ настройки без изменения .htacces)

Пример плагина: Switchlang
<?php
$lankey = substr($_SERVER['REQUEST_URI'],1,2);
if($modx->context->get('key')!="mgr"){
    //grab the current domain from the http_host option
    switch ($lankey) {
        case 'en':
            //switch the context
            $modx->switchContext('en');
            //set the cultureKey
            $modx->setOption('cultureKey','en');
            break;
        case 'es':
            $modx->switchContext('es');
            $modx->setOption('cultureKey', 'es');
            break;
        default:
            // Set the default language/context here
            $modx->switchContext('web');
            $modx->setOption('cultureKey', 'ru');
            break;
    }
}
системное событие: OnHandleRequest

Статья немного битая, но в целом всё понятно, понятно что
</span><span class="pun">
не должно быть в config.core.php и вообще его не нужно открывать)

В зависимости от кол-ва требуемых языков, создаются папки, в моём случае это "en" и "es" т.е. английский и испанский (хочу заметить, что web — это русский язык).

Всё отлично работает, также и с пакетом Article (дополнение для новостных сайтов, добавляет новую возможность "Создать->Создать Статьи здесь" и уже внутри создавать дочерние документы и с интерфейсом управления).