Борис И

Борис И

Был в сети 15 января 2023, 17:28
Заказы не принимаю
Николай
Николай
Делал очень давно, сейчас бы сделал по другому, но что есть, то есть )

Сниппет 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]]`]]
Илья Уткин
Илья Уткин
Василий Наумкин
Василий Наумкин
Сергей
Сергей
В общем заработало у меня вот как:

<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, как вывести сообщение аля: «По Вашему запросу ничего не найдено»?

Спасибо!
Илья
Илья
Чуть подредактировал, код остался кривым.
Сейчас корректно проверяется на 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;
}
Виктор
Виктор
Хотел писать 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=`выводим в выходные в указанное время`
]]
Вроде бы все потестил, но возможны ошибки)