Нашел не доделаный веб-сайт

Продлевал домены, обнаружил что у меня на DeepTown.com не доделаная поделка на WordPress. Я там когда-то тестировал всякие снипеты, кастомные типы постов, связи между ними…

В общем надо бы доделать, сейчас проверим как это все индексирутеся:

P.S. Какой только фигни у меня в загажниках не валяется…

Тот редкий случай когда Гавно-Код™ лучше универсального.

Опять занесло меня в PHP программирование, надо было сделать подержку настроек из глобального config.json для уже существующих сайтов на WordPress.

И вот столкнулся с тем редким случаем когда Гавно-Код™ aka Как-Индусы® лучшее решение:

$props = explode('.', $configPropertyName);
switch (count($props)) {
// TODO: Add more deep cases if the Config become too nested.
    case 3:
        $value = $config->{$props[0]}->{$props[1]}->{$props[2]};
        break;
    case 2:
        $value = $config->{$props[0]}->{$props[1]};
        break;
    default:
        $value = $config->{$props[0]};
}    

Можно было бы написать итератор на любую глубину вложености свойств, или загрузить JSON в виде именованого массива. Но все эти способы менее читаемы, да и не дают никакого выиграша ни в скорости, ни в отладке.

P.S. Не забывайте писать TODO: для таких вот «хаков», через год сами не поймете почему так написано и вместо добавить пару копи-пастов начнете рефакторить с криками: «Да кто так пишет?!»

Изобретаю лисапеды

В этот раз на PHP:

<?php $y = (date("Y") - 2004 - 1); $m = date("m"); if (($m > 8) || (($m == 8) && (date("j") >= 20))) $y += 1; echo $y; ?>

Это я возраст Кристины вывожу скриптом на сайте, чтобы не менять текст каждый год 🙂

Что делать в жизни дальше?

За последний год в Ынтернет я:

  • Создавал сайты и лендинг-пейджи (много, бессмысленно и беспощадно)
  • Заводил сотни социальных аккаунтов во всевозможных соц.сетях, половину названий вы даже не знаете 🙂
  • Знакомил людей между собой и приглашал на всякие мероприятия и конференции. В общем SMM как сейчас говорят.
  • Создавал виртуальных персонажей в соц.сетях. Ну это реально для некоторых бизнес-процессов необходимо!
  • Много копался с клауд сервисами и делал разные бизнес решения на основе Google Apps, Dropbox и прочего.
  • Монтировал много видео и делал много фотографий. Хотя с фотками теперь легче, их Саша делает.
  • Занимался SEO и барыжил ссылками. Ну еще немножко программы продавал 🙂

За последний год в офлайне я:

  • Работал со стартаперами, инвесторами, менторами и прочим «шоу-бизнесом».
  • Посещал тематические конференции, ивенты и собеседования. Активно знакомил людей между собой.
  • Много снимал видео. Разного и всякого. Стал «миллионником» на YouTube, или это уже онлайн? 🙂
  • Вернулся к авиамоделизму и электронике. Хотя серьезных достижение пока нет.
  • Чинил кучу техники для друзей и знакомых. Немного паял новых устройств.
  • Так и не доделал ни мебель, ни «умный дом» 😦

За последний год я программировал на:

  • PHP (чистый, под WordPress и немного Drupal)
  • Delphi — под Windows и потуги под MacOS.
  • C# — пробовал освоить WinRT и Win Mobile.
  • С — под микроконтроллеры, но там мелочь.
  • HTML+CSS+JavaScript — ну это так вообще почти каждый день что-то. Скоро на HTML разговаривать буду.

К чему это я все? Во всем перечисленном я профессионал, но меня это все задолбало и надоело! Хочу чего-то нового, полезного и интересного. Желательно еще чтобы и деньги приносило 🙂

Какие будут идеи и предложения?

В WordPress пропал блок Links

Поднимал новый сайт на WordPress, уже почти все сделал и вдруг заметил что нет пункта «Links» в меню панели управления.

Сначала не поверил своим глазам, потом полез отключать плагины, переустановил WordPress… Ничего не помогало. Полез гуглить… Оп-па! А с версии 3.5x «Links Manager» тупо исключен из WordPress. Фигасе!

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


// Enable old-style Links Manager
add_filter('pre_option_link_manager_enabled', '__return_true');

Так что если у вас такая же ситуация — не паникуйте. Это не глюки, это авторы WordPress прикололись 🙂

Как заставить Internet Explorer 8 (и более старые) нормально отображать HTML5 сайты

Если сайт/документ делаешь полностью сам, то можно конечно психануть и сделать верстку в формате XHTML 1.0 или даже HTML 3.2 🙂

Но чаще приходится иметь дело с чужими темами, плагинами, скриптами… А там уже 2й год мода пошла делать все на HTML5 c header, article, section и прочими новыми тагами.

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

Полностью функциональность HTML5 получить конечно не получится, но чтобы сайт хотя бы выглядел пристойно достаточно добавить вот такой код в head страницы:

...

<!--[if lt IE 9]>
	
		document.createElement('header'); document.createElement('footer'); document.createElement('nav'); 
		document.createElement('article'); document.createElement('section'); document.createElement('aside');	
	
	<style type="text/css">header, footer, nav, article, section, aside {display: block;}</style>
<![endif]-->
</head>

Если используете еще какие-то теги, просто добавьте их в скрипт и стиль. И главное не меняйте формат комментариев! Вся магия в [if] … [endif] 🙂

WordPress, PHP и ошибки в HTML коде

Я не встречал еще ни одной темы для WordPress в которой стандартная форма поиска генерит корректный HTML код при втором ее добавлении на страницу, например в body для 404 ошибки.

Такой же проблемой страдают многие виджеты, которые корректно работают только с одной копией себя. И даже популярные скрипты и библиотеки PHP часто идут без «защиты от дурака».

Вся проблема в том, что горе-программисты жестко записывают id формы и элементов ввода прямо в HTML темплит! В результате при добавлении 2 и последующих копий, в пределах одной страницы появляются кучи элементов с одинаковыми айди!

Для WordPress приходиться каждый раз топать в редактор темы, и для файла Search Form (обычно «searchform.php») добавлять подобный код в начале:

<?php
 
global $some_variable;
if (isset($some_variable)) $some_variable += 1; else $some_variable = 0;   

$form_id = '';
if ($some_variable > 0) $form_id = $some_variable;

?>

Ну а потом фиксить HTML код самой формы, добавляя цифру порядкового номера формы в параметры id и name. Вот реальный пример с одного сайта:

<form role="search" method="get" id="searchform<?php echo $form_id ?>" class="searchform" action="<?php echo home_url( '/' ); ?>">
    <input type="text" value="" name="s<?php echo $form_id ?>" id="s<?php echo $form_id ?>" />
    <input type="submit" id="searchsubmit<?php echo $form_id ?>" value="<?php _e('Search','priimo'); ?>" />
</form>

Надеюсь что такой «фокус» будет полезен для продвинутых владельцев сайтов на WordPress.

Ну и не плохо чтобы такой подход стал стандартом для веб-программистов. Нельзя же думать только прямолинейно, если публичный код может применяться в разных системах непрогнозируемой сложности!

Повбывавбы…