• Как убрать элемент с яндекс.карт?

    Rema1ns
    @Rema1ns
    и так сойдет
    Если вы имеете ввиду что удалить placemark, То вам необходимо элементы заносить в свою коллекцию
    создать свою коллекцию - myCollection = new ymaps.GeoObjectCollection();
    создать плейсмарк - placemark[id] = new ymaps.Placemark
    добавить плейсмарк в коллекцию - myCollection.add(placemark[id]);
    удалить все myCollection.removeAll(); или удалить какой то конкретный
    Ответ написан
    6 комментариев
  • Как убрать элемент с яндекс.карт?

    @trefferr
    В инициализации конструктора карт, присваиваешь свойству пустой массив.
    controls: []
    ymaps.ready(function(){
            moscow_map = new ymaps.Map("banner_map", {
                center: [56.34820425, 41.30735193],
                controls: [],
                zoom: 17
            });
    Ответ написан
    Комментировать
  • Как заблокировать доступ к моему сайту с определенного сайта через htaccess?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Попробуйте
    RewriteCond "%{HTTP_REFERER}" "badsite.ru" [NC]
    RewriteRule ".*" "–" [F]
    Ответ написан
    Комментировать
  • Как ассинхронно сменить картинку у маркера на яндекс картах?

    Petroveg
    @Petroveg
    Миром правят маленькие с#@&ки
    Ответ — пресеты. Создаёте, сохраняете (как видно, объекты практически аналогичны и их нужно просто клонировать, меняя один параметр). А дальше — что захотите. Пресетов может быть сколько угодно с любыми именами.

    Update: По молчаливой просьбе собеседника добавил сторонние элементы

    var points = [
    		[55.831903,37.411961],
    		[55.763338,37.565466],
    		[55.763338,37.565466],
    		[55.744522,37.616378],
    		[55.780898,37.642889]
    	],
    	markers = {};
    
    ymaps.ready(function () {
    	ymaps.option.presetStorage.add('custom#default', {
    		iconLayout: 'default#image',
    		iconImageHref: 'marker.png',
    		iconImageSize: [30, 40],
    		iconImageOffset: [-15, -40],
    		iconImageClipRect: [
    			[0, 30],
    			[30, 70]
    		],
    		hideIconOnBalloonOpen: false
    	});
    	ymaps.option.presetStorage.add('custom#active', {
    		iconLayout: 'default#image',
    		iconImageHref: 'marker.png',
    		iconImageSize: [30, 40],
    		iconImageOffset: [-15, -40],
    		iconImageClipRect: [
    			[0, 70],
    			[30, 110]
    		],
    		hideIconOnBalloonOpen: false
    	});
    
    	var myMap = new ymaps.Map('map', {
    			center: [55.751574, 37.573856],
    			zoom: 9
    		});
    
    	for (var i = 1; i <= points.length; i++) {
    		markers['id' + i] = new ymaps.Placemark(
    			points[i - 1],
    			{
    				hintContent: 'Какая красивая метка...'
    			},
    			{
    				preset: 'custom#default'
    			}
    		);
    		$('<a href="#" data-type="marker" data-id="id' + i + '">').html(i + '-я метка').appendTo($(document.body));
    	}
    
    	placemark.events.add('click', function (e) {
    		changeMarker(e.get('target'));
    	});
    
    	myMap.geoObjects.add(placemark);
    });
    
    function changeMarker (marker) {
    	marker.options.set('preset', {
    		preset: 'custom#active'
    	});
    }
    
    $(document).on('click', 'a[data-id][data-type="marker"]', function (e) {
    	e.stopPropagation();
    	e.preventDefault();
    	changeMarker(markers[$(this).data('id')]);
    });


    Метка тут такая 8542c38cbe6a410f901a3adffe1974b2.png
    Ответ написан
    4 комментария
  • Как получить максимальный и минимальный ключ массива в php?

    toxa82
    @toxa82
    Делаем сначала ksort(). Потом получаем первый элемент reset(), и получаем последний end()
    Ответ написан
  • Как исправить проблему - обновление данных корзины сбрасывает цену товара на минимальную?

    winer
    @winer
    занимаюсь разработкой сайтов на 1c-bitrix
    это нормальное поведение. При каждом заходе на страницу корзины, выполняется обновление цен на товар. При это цена на товар берется минимальная из доступных.

    Доступность типа цены для групп пользователей настраивается на странице цены в админке.

    Чтобы изменить это поведение, надо поменять PRODUCT_PROVIDER_CLASS на свой. Можно вот так
    Ответ написан
    1 комментарий
  • Почему Gulp не создает файлы и не видит изменений?

    slowdream
    @slowdream Автор вопроса
    Проблема решилась. Путь необходимо указывать без слеша в начале :)
    Ответ написан
    2 комментария
  • Перенос компиляции Pug в Gulp на уровень вверх, относительно конечной папки - возможно?

    BBoyJuss
    @BBoyJuss
    WordPress, интерфейсы и все вытекающие
    Вот такой рецепт получился (если я правильно понял вопрос)
    const path   = require('path');
    const gulp   = require('gulp');
    const pug    = require('gulp-pug');
    
    const cities = [
        {
            cityName : 'city1',
        },
        {
            cityName : 'city2',
        }
    ];
    
    gulp.task('views', function(done) {
    
        cities.forEach(function(city, index, cities) {
    
            gulp.src('template/city.pug')
                .pipe(pug({
                    data : city
                }))
                .pipe(gulp.dest(path.join('..', '..', 'domains', city.cityName)));
        });
    
        done();
    });
    Ответ написан
    2 комментария
  • Error: File not found with singular glob при запуске таска JS в Gulp?

    @quaden
    Изучаю js, верстку
    Столкнулся с такой проблемой и решил убрав слэш в начале пути к файлам
    Ответ написан
    Комментировать
  • Как настроить окружение в phpstorm, чтобы писать CSS с новыми возможностями ( & и @nested, CSS Сustom Properties), вложенностью селекторов?

    @orlovec Автор вопроса
    начинающий
    Нашел ответ:
    Просто вспомнил что следует заглянуть в коллекцию плагинов к phpstorm.
    Надо установить
    И настроить phpstorm: The IDE now recognises .pcss files. You can also enable PostCSS support for your .css files in Preferences | Languages & Frameworks | Stylesheets | Dialects.

    5eccbce3c592a759882418.png

    В итоге было/стало:
    5eccbd0dbff10735450507.png
    5eccbd561fef2427931247.png
    Ответ написан
    Комментировать
  • Что означает обратный слеш перед вызовом функции?

    SerafimArts
    @SerafimArts
    Senior Notepad Reader
    Это оптимизация опкода PHP. Без обратного слеша в функциях в локальном неймспейсе вызывается 3 опкода, с обратным слешом - один.

    P.S. https://veewee.github.io/blog/optimizing-php-perfo...
    Ответ написан
    Комментировать
  • Что означает обратный слеш перед вызовом функции?

    MvcBox
    @MvcBox
    Software Engineer [C/C++/JS(for Node.js)/etc]
    Комментировать
  • Что означает обратный слеш перед вызовом функции?

    syamskoy
    @syamskoy
    <?php
    
    namespace myNameSpace;
    
    function in_array($value, $arr)
    {
        return 'Local function';
    }
    $arr = [1, 2, 3];
    $value = 1;
    
    var_dump(in_array($value, $arr));
    var_dump(\in_array($value, $arr));

    Результат:
    string(14) "Local function"
    bool(true)


    Зачем это нужно? Только если в текущем пространстве имен объявленна одноименная функция как и в глобальном. И что бы обратиться к глобальной, используется слеш - глобальное пространство имен.
    Ответ написан
    Комментировать
  • Как сделать две цены на товар?

    @ZZiliST
    Изучаю JS, CSS, HTML, PHP
    Что бы сделать две цены на один товар, нужно использовать "Торговые предложения". Если же вы хотите использовать разные типы цен ( не путать с ценой ), то вы должны в настройках компонента выбрать эти типы цен для отображения и в административном разделе сайта, в настройках "Тип Цены" (где вы её создавали) выбрать для каких пользователей, какой тип будет отображаться.

    Тип цены

    Торговые предложения

    1) Копируете шаблон компонента
    2) Открываете template.php
    3) Если проект рабочий, и пользователи уже пользуются ресурсом, выводите под админом $arResult или $arItem ( в зависимости какой у вас компонент ). Делается это так

    <?global $USER;
    		if ($USER->IsAdmin()){?>
                          <pre><?print_r($arResult)?></pre>
                 <?}?>


    Ищите в этом массиве ваши типы цены.

    Далее выводите

    <?echo $arResult["PRICE"]["PRICE_1"]["VALUE"]?> 
         <?echo $arResult["PRICE"]["PRICE_2"]["VALUE"]?>  // у вас пути до значения и названия типа цен могут отличаться


    Важно! Если вы используете комплексный компонент каталог. То при создании копии шаблона компонента путь до нужных teamplate.php будет примерно такой:

    /public_html/bitrix/templates/Название шаблона сайта/components/bitrix/catalog/название шаблона компонента/bitrix/catalog.element/.default - для карточки товара

    /public_html/bitrix/templates/Название шаблона сайта/components/bitrix/catalog/название шаблона компонента/bitrix/catalog.section/.default - для списка товаров
    Ответ написан
    8 комментариев
  • PHP CLI. Как запустить скрипт из терминала по SSH, закрыть терминал, а потом снова открыть и увидеть ход выполнения?

    Как вариант, запускать скрипт через nohup, тогда он не будет привязан к терминалу.
    nohup php script.php > file.log &
    Мониторить в реальном времени добавление строк в файл можно черезtail -f file.log
    Ответ написан
    Комментировать
  • PHP CLI. Как запустить скрипт из терминала по SSH, закрыть терминал, а потом снова открыть и увидеть ход выполнения?

    @malerix
    screen и tmux. Вот вам уже готовый рецепт.
    Как работает (примерно):
    $ ssh localhost
    $ screen
    запускается процесс screen, в нём bash или что-нибудь ещё.
    Запускаете вашу команду:
    $(screen) php script.php
    нажимаете Ctrl+A, Ctrl+D. Попадаете обратно в первый шелл.
    отключаемся
    $ exit
    пьём кофе.
    подключаемся вновь:
    $ ssh localhost
    $ screen -r
    Видим результат работы нашей команды и приглашение ввести новую.
    $(screen)

    Остальное описано в man screen.
    Ответ написан
    1 комментарий
  • Как грамотно сделать обработку ислючений в php?

    ipatiev
    @ipatiev Куратор тега PHP
    Потомок старинного рода Ипатьевых-Колотитьевых
    Структура проекта какая-то странная, в нем, судя по всему, контроллером называется роутер, но на этом я останавливаться не буду, обработка исключений от этого не зависит.

    Основных правил при обработке исключений три:
    1. Не использовать исключения там, где они не нужны. Например, при проверке пользовательских данных.
    Собственно, эмпирическое правило звучит так: функция должна бросать исключение, если она не может выполнить ту работу, для которой она предназначена.

    Отсюда сразу становится понятно, что для функции, которая должна проверять введенные данные, наличие ошибок в них не является исключительной ситуацией. А совершенно штатной. И обеспечивается штатными же средствами. По результатам проверки пользователю просто отправляется ответ, что данные неверны, безо всяких исключений. В нормальной структуре проекта этим занимается контроллер.

    Ситуации, когда введено меньше букв, или пользователь не найден, или пароль не подходит - не являются исключительными.

    2. Системные ошибки обрабатывает глобальный обработчик исключений, логируя саму ошибку, а на клиент отправляя статус 500 и какое-нибудь абстрактное сообщение о проблеме на сервере. Это самое важное в системных исключениях - текст ошибки никогда, не при каких обстоятельствах не уходит наружу.

    Пример такого исключения - когда запрос в БД порождает ошибку.

    3. Пользовательские исключения, там где они нужны, обычно обрабатываются по месту, но есть нюансы.
    Собственно, под обработкой исключений часто понимают два разных действия:
    - собственно обработку, когда программа совершает какие-то действия, чтобы нивелировать негативный эффект. Например, если не удалось подключение к какому-то сервису, то либо попробовать подключиться к другому, либо просто подождать и попробовать снова.
    - простое информирование пользователя

    Для информирования можно действительно ловить исключение через try..catch и писать какое-то свое сообщение.
    Но можно и автоматизировать этот процесс, вот две статьи, которые показывают примеры, как это можно сделать:
    https://angelovdejan.me/2022/11/24/centralized-exc...
    https://habr.com/ru/articles/688202/
    Ответ написан
    Комментировать
  • Как обезопасить данные на Макбуке в Apple сервисе?

    sergey-kuznetsov
    @sergey-kuznetsov
    Автоматизатор
    Если вы эти пароли не записали в заметках или каком нибудь другом незашифрованном месте, то никто их и не украдёт. А мастер в сервисе сможет залогиниться под гостем если понадобится. Только не забудьте разблокировать Гостя если он выключен.
    645ad39e0aa98516993992.png
    Хотя чтобы увидеть что батарея работает, не требуется заходить в систему. Просто не давайте паролей и всё.
    И любой сервис заставит вас подписать бумажку о том, что они не отвечают за сохранность ваших данных. Поэтому резервная копия в Time Machine у вас должна быть по определению.
    Ответ написан
    3 комментария
  • Почему не работают агенты на cron?

    @Kalibr
    Мне помогло
    добавил пользовател bitrix, помогло.
    */1 * * * * bitrix /usr/bin/php -f /home/bitrix/www/bitrix/php_interface/cron_events.php
    Ответ написан
    2 комментария
  • Ошибка 'bitrix:system.auth.authorize' is not a component?

    У вас нет компонента bitrix:system.auth.authorize
    Или части файлов (а конкретно component.php) в его каталоге. Возможно случайно удалили, возможно развернули из не полного архива, возможно не хватило место для записи файлов на диск при разархивировании, возможно по какой-то другой причине не дозаписалось.
    Если это штатный компонент и вы его не кастомизировали (почти наверняка это так), то он должен лежать по пути /bitrix/components/bitrix/system.auth.authorize.
    Проверяйте этот каталог.
    Но вообще плохой признак - нет его, вероятно нет и чего-то другого. Вы уверены что полностью перенесли ядро битрикс? Сверьте содержимое каталогов /bitrix

    UPD:
    Есть еще вариант - вы, или кто-то до вас кастомизировали его, и каталог компонента существует (что-то вроде /local/components/ЧтоТоТам/system.auth.authorize), но пуст - не содержит файла component.php или он недоступен.
    Ответ написан
    2 комментария