Rose debug info
---------------

О веб-разработке

Поиск файлов по названию PHP

Неточный поиск (по наличию слова в названии):

<?php
	header("Content-Type: text/html; charset=utf-8");
	$path = $_SERVER["DOCUMENT_ROOT"];
	$directory = new \RecursiveDirectoryIterator($path);
	$iterator = new \RecursiveIteratorIterator($directory);

	foreach ($iterator as $info) {

		$name_file = substr($info->getfileName(), 0, strrpos($info->getfileName(), "."));
		$name_search = array("robots", "www_pandoge_com"); // Список файлов
		foreach($name_search as $key_name) {
			if(preg_match("/".$key_name."/", $name_file)) {		
				echo $info->getPathname()."<br>";
			}
		}
	}
?>
 Нет комментариев    4   1 мес   php

Битрикс. Создание профиля покупателя при регистрации пользователя

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

Задача решается написанием обработчика события OnAfterUserRegister:

<?
AddEventHandler("main", "OnAfterUserRegister", "OnBeforeUserRegisterHandler"); 

    function OnBeforeUserRegisterHandler(&$arFields)
    {
      //создаём профиль
      //PERSON_TYPE_ID - идентификатор типа плательщика, для которого создаётся профиль
      $arProfileFields = array(
         "NAME" => "Профиль покупателя (".$arFields['LOGIN'].')',
         "USER_ID" => $arFields['USER_ID'],
         "PERSON_TYPE_ID" => 1
      );
      $PROFILE_ID = CSaleOrderUserProps::Add($arProfileFields);
      
      //если профиль создан
      if ($PROFILE_ID)
      {
         //формируем массив свойств
         $PROPS=Array(
         array(
               "USER_PROPS_ID" => $PROFILE_ID,
               "ORDER_PROPS_ID" => 3,
               "NAME" => "Телефон",
               "VALUE" => $arFields['WORK_PHONE']
            ),
         array(
               "USER_PROPS_ID" => $PROFILE_ID,
               "ORDER_PROPS_ID" => 1,
               "NAME" => "Ф.И.О.",
               "VALUE" => $arFields['LAST_NAME'].' '.$arFields['NAME'].' '.$arFields['SECOND_NAME']
            )
         );
         //добавляем значения свойств к созданному ранее профилю
         foreach ($PROPS as $prop)
            CSaleOrderUserPropsValue::Add($prop);
      }
    }
?>

В данном примере:
Создаётся профиль покупателя со значениями 2-х свойств — ФИО и Телефон. Предварительно эти свойства заказа были созданы и их идентификаторы использовались в обработчике для присвоения им значений в профиле покупателя. Для регистрации нужно использовать компонент main.register, в настройках параметров данного компонента выбрать поля «Телефон», «Фамилия», «Имя» и «Отчество».
Свойств профиля покупателя, конечно, можно создавать больше, главное ассоциировать их с полями регистрационной формы и соответственно в обработчике присваивать значение этих полей свойствам свеженького профиля покупателя.

Свои выражения в количественном остатке товаров «мало», «достаточно», «много

Можно изменить в классе: /bitrix/modules/aspro.max/classes/general/CMax.php

Со строки 6733 меняем код на следующий:

if($totalCount < 10 AND $totalCount > 0) {
  $indicators = 1;
  $totalAmount = "Очень мало";
}
if($totalCount < 100 AND $totalCount >= 10) {
  $indicators = 1;
  $totalAmount = "Мало";
}
if($totalCount < 1000 AND $totalCount >= 100) {
  $indicators = 2;
  $totalAmount = "Достаточно";
}
if($totalCount >= 1000) {
  $indicators = 3;
  $totalAmount = "Много";
}

Sitemap.xml в EVO CMS через плагин

Чтобы не отображать ресурс для sitemap.xml в дереве, можно генерировать карту через плагин.
Создаем плагин, на событие OnPageNotFound и прописываем следующий код:

switch($_GET['q']) {
case 'sitemap.xml':
		header('Content-Type: application/xml; charset=utf-8');
		echo $modx->runSnippet('DLSitemap');
		die();
		break;
}

Битрикс. Как получить все данные из вкладки SEO для элемента

Получить все данные из вкладки SEO для элемента можно следующим образом.

$ipropValues = new \Bitrix\Iblock\InheritedProperty\ElementValues($IBLOCK_ID,$ELEMENT_ID); 
$IPROPERTY = $ipropValues->getValues();

В результате будет получен следующий массив например:

Array
(
    [ELEMENT_META_TITLE] => Балконная защёлка купить оптом с доставкой 
    [ELEMENT_META_DESCRIPTION] => Балконная защёлка купить оптом в любом объёме по низкой цене (с любой формой оплаты) и с быстрой доставкой по всей РФ.
    [ELEMENT_PAGE_TITLE] => Балконная защёлка
    [ELEMENT_PREVIEW_PICTURE_FILE_ALT] => Балконная защёлка купить оптом с доставкой 
    [ELEMENT_PREVIEW_PICTURE_FILE_TITLE] => Балконная защёлка купить оптом в любом объёме по низкой цене (с любой формой оплаты) и с быстрой доставкой по всей РФ.
    [ELEMENT_DETAIL_PICTURE_FILE_ALT] => Балконная защёлка купить оптом с доставкой 
    [ELEMENT_DETAIL_PICTURE_FILE_TITLE] => Балконная защёлка купить оптом в любом объёме по низкой цене (с любой формой оплаты) и с быстрой доставкой по всей РФ.
    [SECTION_PAGE_TITLE] => Балконная защёлка
)

В input разрешить ввод только чисел через jQuery

Скрипт, позволяющий ввести только цифры в input:

$(document).ready(function() {
$('[name=quantity]').bind("change keyup input click", function() {
if (this.value.match(/[^0-9]/g)) {
this.value = this.value.replace(/[^0-9]/g, '');
}
});
});

Данный код позволяет вводить только цифры от 0 до 9 на элементе input с name равным quantity.
Примеры:
0-9\. — разрешает цифры с точкой
а-яА-Я\s — разрешает ввод только русских букв с пробелом
а-яА-Яa-zA-Z\s — разрешает ввод только русских и английских букв с пробелом

 Нет комментариев    7   2 мес   jquery   js

Как сделать favicon в png

Берем иконку png с прозрачностью, размером 128х128px и подключаем ее в

<head></head>

вот так:

<link rel="icon" type="image/png" href="favicon.png" />

SimpleGallery разные названия вкладок

Есть сайт, где реализовано две галереи с помощью SimpleGallery — в одной картинки с образцами продукции, а во второй хранятся сертификаты на продукцию. Требуется вкладки с галереями подписать по-разному, но в SimpleGallery название вкладки (в данном случае — «Галерея») задается в параметрах плагина, который может быть только один. Выход из положения — плагин на событие OnParseProperties:

$e = &$modx->event;
if ($e->name == "OnParseProperties") {
    if ($element == "SimpleGallery") {
        if (isset($args['template']) && $args['template']==2) {
            $out = array ();
            //задаем новое значение параметра tabName
            $out["tabName"] = "Сертификаты";
            $e->_output = $out;
        }
    }
}

Теперь для страницы «Список сертификатов» с шаблоном 2 вкладка будет называться «Сертификаты», а во всех остальных случаях — «Галерея». Можно проверять и $args[’id’] — id страницы, на которой вызывается плагин.

Простая стилизация checkbox, radio через псевдокласс :checked

Простым способом стилизовать checkbox, radio можно через псевдокласс :checked

input[type="checkbox"] {
   width: 25px;
    height: 25px;
    background: #030514;
    border: #1e2132 1px solid;
    border-radius: 2px;
    -webkit-appearance: none;
    -moz-appearance: none;
}
input[type="checkbox"]:checked {
    background: #030514 url(../img/check.webp) no-repeat center;
}
 Нет комментариев    18   3 мес   css   html
Ранее Ctrl + ↓