Борис И

Борис И

С нами с 20 апреля 2014; Место в рейтинге пользователей: #71
Николай
29 августа 2015, 16:54
5
+1
Делал очень давно, сейчас бы сделал по другому, но что есть, то есть )

Сниппет adsense
<?php
//спустя сколько символов искать перенос строки и вставлять рекламу?
$nu = 3800;
//Код рекламы
$adsense = <<<HTML
<div class="sense">
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<ins class="adsbygoogle"
     style="display:inline-block;width:728px;height:90px"
     data-ad-client="ca-pub-1233335915169539"
     data-ad-slot="2233378009"></ins>
<script>
(adsbygoogle = window.adsbygoogle || []).push({});
</script></div>
HTML;
$a = preg_replace('@([^^]{'.$nu.'}.*?)(\r?\n\r?\n|</p>)@', "\\1$adsense\\2", trim($content), 1);
return $a;
Вызов (в шаблоне вместо [[*content]])
[[adsense? &content=`[[*content]]`]]
Илья Уткин
25 августа 2015, 13:52
3
+1
Нашел я, в чем проблемка. На Shared-хостингах распространена практика использования связки NGINX и Apache. В этом случае вся статика (картинки и текстовые файлы) обрабатывается NGINX'ом, а php-файлы обрабатывает Apache.

Таким образом, файл /core/docs/changelog.txt будет доступен независимо от того, что указано в .htaccess, а MODX проверяет доступность именно этого файла.

Выход один. Сначала проверить, что у вас не открывается в браузере файл /core/cache/logs/error.log, а потом просто удалить файл changelog.txt

Тогда ошибка исчезнет.
Василий Наумкин
07 августа 2015, 05:24
4
+3
В pdoResources задача решается несколько иначе:
[[!pdoResources?
	&includeTVs=`manuf,diag,color`
	&where=`{
		"manuf":"Sony",
		"diag:IN":[65,85],
		"color:IN":["black","gray"]
	}`
]]
В принципе, там есть и &tvFilters, но только как временная замена при миграции c getResources. Пользоваться этим параметром я никому не советую — &where гораздо гибче, лучше и удобнее.

Вот здесь кратко написано, а вот здесь значительно подробнее.
Сергей
30 июля 2015, 02:58
1
0
В общем заработало у меня вот как:

<script>
	$(function() {
		var availableTags = [
			[[pdoResources? &tpl=`tplTags` &limit=`0` &depth=`0` &parents=`1` &includeTVs=`tag`]]
		];
		$( "#tags" ).autocomplete({
		source: availableTags,
		minLength: 2,
		select:function(e,ui) {
			location.href = ui.item.the_link;              
			}
		});
	});
</script>
Чанк tplTags содержит:

{label:"[[+tv.tag]]", the_link:"/[[~[[+id]]]]"},

И все бы хорошо, но теперь встали следующие два вопроса:

1. Как вынести этот скрипт в файл .js? (pdoResources из файла .js не запускается)
2. Если пользователь вбивает значение, отсутствующее в tv.tag, как вывести сообщение аля: «По Вашему запросу ничего не найдено»?

Спасибо!
Илья
17 июля 2015, 21:40
1
0
Чуть подредактировал, код остался кривым.
Сейчас корректно проверяется на fullname и username. Убирает введенные пробелы в начале и конце имени.
<?php
switch ($modx->event->name) {

    case 'OnBeforeCommentSave':
        $name = filter_input(INPUT_POST, 'name' );

        $count = $modx->getCount('modUser', array('username' => trim($name)));
        if ($id != 0) return "";
        if ($count > 0) {
            $modx->event->output('<b>Нельзя комментировать под чужим именем.</b>');
        }
        $count = $modx->getCount('modUserProfile', array('fullname' => trim($name)));
        if ($id != 0) return "";
        if ($count > 0) {
            $modx->event->output('<b>Нельзя комментировать под чужим именем.</b>');
        }
        break;
}
MatrixID
27 июня 2015, 06:26
1
0
проблема решена, всем спасибо — рабочий вариант: [[!#GET.page:lt=`2`:then=`[[!$INTRO]]`]]
Fi1osof
18 июня 2015, 10:13
2
+1
&where=`{"parent:not in":[41,35,47............]}`
Виктор
09 апреля 2015, 23:05
3
+2
Хотел писать js галерею, но что-то вдохновения нет;(
Так что держите немного моего гавнокода(т.к. я не искушен PHP), вдруг пригодится:
<?php
/* 
N - Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0)
от 1 (понедельник) до 7 (воскресенье)
***
G -	Часы в 24-часовом формате от 0 до 23
*/

        
$weekDay = date("N"); /* Текущий день недели на сервере */
$day = date("j"); /* Текущий день на сервере */
$hour = date("G"); /* Текущий час на сервере */




if (in_array($hour, explode(",", $ghours)) || !isset($ghours) ){ /* Проверка на соответсвие часа*/
    switch($gtype) {
        case "evenDays": // Четные дни
            if( $day%2 == 0 ) {
                return $info;
            }
            break;
            
        case "oddDays": // Нечетные дни
            if( $day%2 > 0 ) {
                return $info;
            }
            break;
            
        case "onDays": // Рабочие дни
            if( $weekDay != 7 || $weekDay != 6 ) {
                return $info;
            }
            break;
            
        case "offDays": // Выходные дни
            if( $weekDay == 7 || $weekDay == 6 ) {
                return $info;
            }
            break;
            
        case "weekDays": // Дни недели
            if (in_array($weekDay, explode(",", $gweekDays))){ /* Проверка на соответсвие дня */
                return $info;
            }
            break;
            
        case "always": // Выходные дни
            return $info;
            break;
        
        default:
            if (in_array($day, explode(",", $gdays))){ /* Проверка на соответсвие дня */
                return $info;
            }
        break;
    }
}
Вызовы:
[[!OutputTime? 
&gdays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в указанные дни`
]]
[[!OutputTime? 
&gtype=`weekDays`
&gweekDays=`1,2,3,4,5`
&info=`выводим в указанные дни недели (пн-пт)`
]]
[[!OutputTime? 
&gtype=`weekDays`
&gweekDays=`1,2,3,4,5`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в указанные дни недели (пн-пт) с 8 до 16`
]]
[[!OutputTime? 
&gtype=`always`
&info=`выводим каждый день`
]]
[[!OutputTime? 
&gtype=`always`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим каждый день в указанное время`
]]
[[!OutputTime? 
&gtype=`evenDays`
&info=`выводим по четным дням`
]]
[[!OutputTime? 
&gtype=`evenDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим по четным дням в указанное время`
]]
[[!OutputTime? 
&gtype=`oddDays`
&info=`выводим по нечетным дням`
]]
[[!OutputTime? 
&gtype=`oddDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим по нечетным дням в указанное время`
]]
[[!OutputTime? 
&gtype=`onDays`
&info=`выводим в рабочие дни`
]]
[[!OutputTime? 
&gtype=`onDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в рабочие дни в указанное время`
]]
[[!OutputTime? 
&gtype=`offDays`
&info=`выводим в выходные`
]]
[[!OutputTime? 
&gtype=`offDays`
&ghours=`8,9,10,11,12,14,15,16`
&info=`выводим в выходные в указанное время`
]]
Вроде бы все потестил, но возможны ошибки)
Alexander V
01 апреля 2015, 03:06
1
0
Уже есть 2 группы. Соответственно надо отдавать результат через условие.
Примерно так
[[!+modx.user.id:memberof=`Administrator`]]
docs.modx.pro/system/the-basics/filters-input-and-output
Василий Наумкин
29 января 2015, 17:14
2
+1
Оказывается, нужно сравнивать с 1:
[[!+modx.user.id:isloggedin:is=`1`:then=`Yes`:else=`No`]]
[[!+modx.user.id:isnotloggedin:is=`1`:then=`No`:else=`Yes`]]