Раньше писал про веб-разработку и интернет-рекламу без воды, теперь я пишу про серверы и железо в целом.

Позднее Ctrl + ↑

SimplaCMS: Определение города пользователя по IP

Работает через Yandex API. Подключим jQuery, если до этого не подключён:

<script src="http://yastatic.net/jquery/2.1.1/jquery.min.js"></script>

Далее разместим в подвале скрипт:

<script type="text/javascript">
  window.onload = function () {
      jQuery("#user-city").text(ymaps.geolocation.city);
  }
</script>
<script src="http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script>

А чтобы вывести, в шаблоне в необходимом месте пишем:

<div id="user-city"></div> или <span id="user-city"></span>
 182   2018   simplacms

SimplaCMS: Автогенерация Title и Meta Description для товаров и категорий

Для генерации Title категорий

{$meta_title = "{$category->name|escape}{if $brand->name} Бренд {$brand->name|escape}{/if}{if $page->name}{$page->name}{/if} - купить в интернет-магазине {$settings->name}" scope=parent}

Для генерации Title товаров

{$meta_title = "{$product->name|escape} {if ($brand->name)}({$brand->name|escape}){/if}{if $product->variant->sku} артикул {$product->variant->sku|escape}{/if} - купить в интернет-магазине {$settings->name}" scope=parent}

Для генерации Meta Description товаров открыть ProductView.php и добавить после:

// Добавим текущий товар
$product->meta_description = 'Товар ' .$product->name $product->variant->sku. ' можно приобрести в интернет-магазине по цене '.$product->variant->price.' с доставкой по России.';
 278   2018   seo   simplacms

Simpla CMS: OpenGraph разметка для соцсетей

Открываем index.tpl вашего шаблона и пишем:

<meta property="og:title" content="{if $module == 'ProductsView' || $module == 'ProductView'}{$product->name|escape}{else}{$page->header|escape}{/if}" />
<meta property="og:type" content="website" />
<meta property="og:url" content="{$config->root_url}{url}" />
<meta property="og:image" content="{if $module == 'ProductsView' || $module == 'ProductView'}{$product->image->filename|resize:330:300}{else}https://olmatex.com/design/olmatex/images/logo.png{/if}" />
{if $module == 'ProductsView' || $module == 'ProductView'}<meta property="og:description" content="{$product->annotation|strip_tags}" />{/if}

В результате получим красивые ссылки на товары и другие страницы вашего интернет-магазина в соцсетях и мессенджерах.

 223   2018   simplacms

CSS сетка bootstrap

.container{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media(min-width:768px){.container{width:750px}}@media(min-width:992px){.container{width:970px}}@media(min-width:1200px){.container{width:1170px}}.container-fluid{padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{margin-right:-15px;margin-left:-15px}.col-xs-1,.col-sm-1,.col-md-1,.col-lg-1,.col-xs-2,.col-sm-2,.col-md-2,.col-lg-2,.col-xs-3,.col-sm-3,.col-md-3,.col-lg-3,.col-xs-4,.col-sm-4,.col-md-4,.col-lg-4,.col-xs-5,.col-sm-5,.col-md-5,.col-lg-5,.col-xs-6,.col-sm-6,.col-md-6,.col-lg-6,.col-xs-7,.col-sm-7,.col-md-7,.col-lg-7,.col-xs-8,.col-sm-8,.col-md-8,.col-lg-8,.col-xs-9,.col-sm-9,.col-md-9,.col-lg-9,.col-xs-10,.col-sm-10,.col-md-10,.col-lg-10,.col-xs-11,.col-sm-11,.col-md-11,.col-lg-11,.col-xs-12,.col-sm-12,.col-md-12,.col-lg-12{position:relative;min-height:1px;padding-right:15px;padding-left:15px}.col-xs-1,.col-xs-2,.col-xs-3,.col-xs-4,.col-xs-5,.col-xs-6,.col-xs-7,.col-xs-8,.col-xs-9,.col-xs-10,.col-xs-11,.col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:0}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:0}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media(min-width:768px){.col-sm-1,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-10,.col-sm-11,.col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:0}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:0}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media(min-width:992px){.col-md-1,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-10,.col-md-11,.col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:0}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:0}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media(min-width:1200px){.col-lg-1,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-10,.col-lg-11,.col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:0}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:0}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}.pull-right{float:right!important}.pull-left{float:left!important}.hide{display:none!important}.show{display:block!important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none!important;visibility:hidden!important}.affix{position:fixed}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none!important}@media(max-width:767px){.visible-xs{display:block!important}table.visible-xs{display:table}tr.visible-xs{display:table-row!important}th.visible-xs,td.visible-xs{display:table-cell!important}}@media(min-width:768px) and (max-width:991px){.visible-sm{display:block!important}table.visible-sm{display:table}tr.visible-sm{display:table-row!important}th.visible-sm,td.visible-sm{display:table-cell!important}}@media(min-width:992px) and (max-width:1199px){.visible-md{display:block!important}table.visible-md{display:table}tr.visible-md{display:table-row!important}th.visible-md,td.visible-md{display:table-cell!important}}@media(min-width:1200px){.visible-lg{display:block!important}table.visible-lg{display:table}tr.visible-lg{display:table-row!important}th.visible-lg,td.visible-lg{display:table-cell!important}}@media(max-width:767px){.hidden-xs{display:none!important}}@media(min-width:768px) and (max-width:991px){.hidden-sm{display:none!important}}@media(min-width:992px) and (max-width:1199px){.hidden-md{display:none!important}}@media(min-width:1200px){.hidden-lg{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:block!important}table.visible-print{display:table}tr.visible-print{display:table-row!important}th.visible-print,td.visible-print{display:table-cell!important}.hidden-print{display:none!important}}
 102   2018   css

Отзывы о megagroup.ru

Досадно мне, когда невинных бьют!
Я не люблю, когда мне лезут в душу
Тем более, когда в нее плюют
© В. Высоцкий

Никогда! Никогда не пользуйтесь услугами данной компании! Таких распиздяев я еще в жизни не видел!

Краткая предыстория:

3 года назад моему, на тот момент единственному клиенту, данная компания сделала сайт. Простой, обычный дизайн, блевотно-серый фон и уебская верстка. Ценник был не высок — видимо это и было оправданием блевотных тонов и уебской верстки.
Вскоре было принято решение о смене дизайна. Рисовали долго, но нарисовали. Получилось на этот раз лучше, чем было. По-крайней мере — я бы купил, будь я женщиной. В процессе того, как рисовали дизайн, нашлась случайно компания, которая абсолютно копировала предыдущий дизайн сайта.
На вопрос «Что это за хуйня?» — они разводили руками и говорили: «Ну мы же вам новый рисуем, старый отдать надо».
Вот с такими словами нам с горем пополам нарисовали новый дизайн. Но речь не о дизайне — речь о распиздяйстве в самой компании...

5 дней назад.

Заканчивая рабочий день в офисе, мой клиент уходил со счастливым лицом и улыбкой на лице — рабочая неделя закончена, впереди праздники — нас ждут великие дела! Не хотел я их огорчать, но когда я делал вечерний обход сайтов своих и рабочих клиентов, то увидел странную запись, которую я не писал:
«Интернет магазин временно не работает». Мало того, что все это было написано CAPSом, так еще и дефис не поставили между словами «интернет» и «магазин». Не мой стиль и не стиль моих клиентов, но на всякий случай позвонил и спросил.
Выяснилось, что какая то левая компания, с одноименным названием, написала письмо — «Прошу сменить пароль в систему управления сайтом». И что вы думаете — сменили!
В итоге Вася, который все выходные там устраивал упячку, сменил все печати и бланки. И все выходные письма от клиентов приходили ему, а компания несла финансовые потери, не говоря о моральных.

Сегодня.

Они проебали договор на создание сайта. У них нет вообще никаких документов, которые как-то регулировали оказанные услуги. Вот что за люди там работают? Кстати, менеджера, с которым я успел пообщаться зовут Антонов Юлиан — стрелочник. Вину не признает, да еще и между делом услуги пытается впарить.

Завтра.
А что будет завтра известно только Богу. Но анализируя последние пять дней — стрелочка графика стремится вниз.

Пост восстановлен из архива

 9 комментариев    584   2013   cms

Особенности натуральных тканей

Натуральные ткани всегда высоко ценились. Они позволяли даже самым привередливым дизайнерам воплощать свои замыслы на подиуме. Однако сегодня тенденция на одежду из натурального состава уже давно ушла в прошлое. Вместо нее активно используются искусственные материалы и полотна, которые обязательно содержат в себе синтетические нити. Многие считают это недостатком современной моды или маркетинга продажи современной одежды. Но на практике натуральные материалы имеют как массу преимуществ, так и массу недостатков. Когда вы посещаете интернет-магазин тканей, то не можете не обратить внимание на натуральный шелк. Шелк — это материал, родиной которого считается Китай. Действительно, именно там начали изготавливать ткань с невероятно нежной текстурой несколько веков назад. Как тогда, так и сегодня материал ценится за свой потрясающий внешний вид, а также за то, что он обладает высокой прочностью. Сложно найти недостатки в этом замечательном полотне, из которого сегодня шьют как одежду для особых случаев, так и мягкие комплекты для дома. Шелковое постельное белье тоже высоко ценится. Хлопок является наиболее простым натуральным материалом. Он обладает не такой высокой стоимостью, однако даже в дорогих магазинах одежды натуральную хлопковую рубашку без каких-либо добавок найти непросто. Итальянские марки шьют деловые рубашки для мужчин и женщин на основе 100%-ной хлопковой ткани. В нее не добавляется ни одного процента синтетики. Благодаря этому полученное изделие очень тонкое, прочное и легкое. Оно позволяет коже дышать, но для делового стиля его сложно использовать. Виной тому тот факт, что хлопок очень быстро мнется и сложно гладится. Лен — это прочная ткань, которую в равной степени можно использовать для летних рубашек и для костюмов брючного типа. Она очень легкая и позволяет коже дышать даже в самую жаркую погоду. Когда вы предпочитаете такую купить ткань в интернет магазине, то обязательно получаете отличное полотно для пошива. Тем не менее, и оно не без недостатков. Лен достаточно сложно гладится, легко мнется, а люди с чрезмерно нежной кожей могут посчитать его жесткой и грубой тканью. Шерсть натурального типа тоже встречается редко. Она обладает возможностью согревать даже в сильнейшие морозы. Тем не менее, ее текстура и риск аллергии не всегда делают данный материал доступным для изготовления детской и взрослой одежды.

 71   2013  

Как пьяному водителю не задавить человека?

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

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

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

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

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

Лишь однажды его не было на смене, и мне самому пришлось добираться с другим водителем. Этот оказался не менее профессиональным и произвел на меня должное впечатление. По дороге мы рассказывали друг друга анекдоты, а потом я узнал, что мой лучший друг прекрасно его знает и часто ходит с ним в спортивный бар. Вскоре я присоединился к их вылазкам на такой отдых.

Даже приятно представить, скольких людей спасают эти водители. Если бы они, многие были бы вынуждены бросать свои машины далеко от гаража или, еще хуже, сесть за руль и все равно ехать в нетрезвом состоянии домой, стараясь никого не сбить по дороге.

Птоломеев Вячеслав, актер театра и клиент http://www.akela-travel.ru

 54   2013