• Как быть с картинкой при записи в базу?

    $params = [
        "id" => $array['category_id'],
        "cat_name" => $array['category_name'],
        "cat_url" => $array['category_url'],
        "image_url" => $array['image_url'],
        "parent_cat" => $array['parent_cat'],
    ];
    
    $a = [];
    foreach ($params as $k => $v) {
        $a[] = "`$k` = :$k";
    }
    
    if (count($a)) {
        $s = implode(", ", $a);
        $sql = "UPDATE {$this->table} SET $s WHERE `id` = :id";
    }


    И нет никаких костылей. Правда в этом случае стоит еще проверить, что каждая $k и правда есть в таблице.
    Ответ написан
    Комментировать
  • Доступ к домашнему серверу из вне?

    Выше советуют покупать новое железо - я в корне не согласен. Когда поднимал свой первый сервер (лет в 12) - использовал железо за 800р и был счастлив, потому что в какой-то момент убил окончательно. Поэтому по-началу лучше по экспериментировать как раз на старом.

    Насчет оси - выбирайте то, что востребовано и чему хотите научиться. Я бы посоветовал вам попробовать debian 7/8 или ubuntu server, но это мой личный фетиш, тут, как говорится - все фломастеры разные. Наоборот, если вы делаете это в рамках экспериментов - нужно идти в чащу и делать то, что вы раньше не делали для того, чтобы набраться опыта.

    Доступ к файлам можно организовать с помощью обычного ssh сервера, на самом сервере нужно будет установить openssh или sshd. Это даст вам контроль над сервером через консоль (в которую можно попасть откуда угодно) и с помощью scp (для windows например - winSCP, которая как total commander, позволяет гулять по удаленному серверу).

    А по части самого доступа - белый ip Не обязателен. Если вы сидите за NAT (есть роутер, который раздает интернет, а уже к нему цепляется сервер) - то стоит пробросить порты на самом роутере во вне. А если у вас динамический ip - придется еще подключить что-то вроде dyndns, благо у современных роутеров почти у всех есть такая функция. В крайнем случае можно сделать раздающим интернет - сам сервер (как сделано у меня).
    Ответ написан
  • Как запостить в группу вконтакте пост через сайт?

    Часто раньше постил на vk из скриптов (и сейчас тоже, кстати), и написал себе класс, которым пользуюсь + статью, чтобы ничего в будущем не забыть, как раз по теме. Надеюсь вам будет полезно: endfor.ru/api/posting-zapisey-na-stenyi-vkcom/21.html
    Ответ написан
    Комментировать
  • Как присвоить переменным все элементы массива?

    Насколько я понял - необходима функция, по типу extract ( php.net/manual/en/function.extract.php ). Но я бы не советовал, не очень правильный путь. Лучше идти в сторону $arr = json_decode ($json_text, true);, как советовали выше.
    Ответ написан
    Комментировать
  • Нужны советы по SEO, правильно ли я оптимизировал сайт?

    Да, прокрутка ужасна. Как я понял, за неё отвечает блок в файле global.js:
    if(!isMobile) {
    		 if(jQuery("#tmhtmlcontent-tc-item-1").length){ 
    			 var welcome = new TimelineMax();
    			 
    			 welcome.from("#tmhtmlcontent-tc-item-1 h2",0.5,{top:-300, autoAlpha:0})
    			 .from("#tmhtmlcontent-tc-item-1 h3",0.5,{autoAlpha:0})
    			 .from("#tmhtmlcontent-tc-item-1 p",0.5,{autoAlpha:0})
    			 .from("#tmhtmlcontent-tc-item-1 .button-container",0.5,{bottom:-200,autoAlpha:0});
    			 
    			var scene_welcome = new ScrollScene({
    			triggerElement: "#tmhtmlcontent-tc-item-1",
    			offset: -100
    			}).setTween(welcome)
    			  .addTo(controller)
    			  .reverse(false); 
    		 }
    	 }


    Убрать блок - перестанет скролиться со скоростью черепахи. Насчет оптимизации - товарищ выше прав. Поисковикам важны 2 фактора - постоянный постинг контента (чем чаще, тем лучше), желательно уникального, и пользовательское поведение на сайте, а именно: удержание, процент отказов, итд. Если пользователь не сидит на сайте даже 30 секунд - поисковики считают, что он ему не интересен.

    Но, кроме этого, у вас есть и другие проблемы. У меня есть кейс, в котором я увеличил скорость загрузки страницы до 98 по гуглу, и сразу встал в топ-3 по региону по главному запросу.
    11-Скорость загрузки сайта в Pg speed google: Мобилка- 63 Компютер- 73

    Этого крайне мало. Нормально - 80-90.

    13-Есть отдельный блог на сайте чтобы писать статьи для поисковых систем.

    Вот и пишите туда раз в 2-3 дня :)

    А вообще неплохо постарались, список действий большой, но начать надо было именно с контента.
    Ответ написан
    6 комментариев
  • Какой мощный компрессор для уменьшения размера изображений Вы используете?

    jpegoptim и optipng для linux. Использую их при отдаче через nginx, чтобы автоматически изображения сжимались и speedtest от google доволен.
    Ответ написан
    Комментировать
  • Хранение "одиночных данных" PHP - где?

    Самый первый вариант, который пришел в голову - экспортить данные в php файлик с использованием функции var_export. Другие варианты - csv (например fputcsv),json (json_encode) файлы. Или можно сериализовать с помощью serialize. Это в случае, если данных не много и нет смысла заводить бд.
    Ответ написан
    Комментировать
  • Fotorama: как решить проблему с получением API объекта?

    Вопрос был задан давно, но я, всё же, отвечу. Только что возникла такая же проблема, нагуглил этот топик, и его копию на stackoverflow :) и там и там нет ответов, может быть кому-то поможет. Решил проблему так:
    var images = [];
    var fr = $('.fotorama').fotorama();
    var fotorama = fr.data('fotorama');
    for (var i in resp.product.images) {
    	if (resp.product.images[i])
    		images.push({img: resp.product.images[i]});
    }
    
    if (fotorama) {
    	fotorama.load(images);
    } else {
    	$('.fotorama').fotorama({data: images});
    }


    Возможно дело в том, что объект не инициализирован, а вызвав fotorama с data - мы его инициализируем корректно.
    Ответ написан
    Комментировать