Корпоративный блог должен привлекать целевую аудиторию, создавать привлекательный в её глазах образ бренда и обеспечивать продажи. Добиться этого можно, соблюдая семь правил его ведения.
1. Создание релевантного контента, то есть такого, который поможет посетителю решить конкретную проблему. К примеру, подходящим наполнением для блога KISSmetrics будут посты о веб-аналитике и о том, как более эффективно её проводить. Блог, на который нужно привлечь веб-дизайнеров, должен быть посвящён веб-дизайну. 2. Применение гостевого постинга, то есть размещение ссылок на корпоративный блог на других популярных ресурсах сходной тематики. 3. Грамотная работа с аудиторией. Посетители должны не быть потребителями. Они должны обеспечивать конверсию блога, то есть совершать действия, нужные его создателю:
- давать email-адрес в обмен на предоставление ценного отчёта или руководства,
- делиться контентом в соцсетях или отправить его друзьям;
- скачивать электронные книги по предоставляемым ссылкам и т.д.
- и из читателей превращаться в потенциальных покупателей. 4. Регулярная публикация материалов. Только это удержит от падения трафика. 5. Установка связей с читателями, прежде всего, путём общения с ними и исчерпывающих ответов на их комментарии 6. Упор на продвижение контента. Увеличение поискового трафика и спроса на контент является закономерным следствием развития блога. Но начинается всё, как правило, с малого – с распространения материалов блога в соцсетях. На первой стадии этим можно заняться самостоятельно, подключив друзей, коллег и партнёров – так будут привлечены первые постоянные читатели. Затем можно воспользоваться таргетированной рекламой, то есть рекламой, рассчитанной только на целевую аудиторию. 7. Ранняя монетизация блога и переход его к лидогенерации – поиску потенциальных клиентов с определёнными контактными данными. Лучше это сделать, когда блог будет посещать 10к в месяц. Чем раньше состоится переход. Тем раньше можно будет усовершенствовать стратегию контент-маркетинга.
Онлайн-магазин стал инструментом успешных продаж во многих сферах бизнеса. Однако если интернет-версия есть, не факт, что успех фирме обеспечен. Многие компании вкладывают в создание виртуальных витрин немалые суммы, обращаясь к опытным специалистам, а после этого удивляются отсутствию желаемой отдачи.
Важно помнить, что создание сайта - это только начало длительной работы. Онлайн-магазин — это просто инструмент продаж. Чтобы он приносил деньги, надо его продвигать. Иначе он потеряется в поисковиках на слабых позициях, и клиенты перейдут к другим. Конкуренты продвигают свои сайты, и либо вы участвуете и выигрываете в этой гонке, либо ваш ресурс неэффективен.
Продвижение интернет-магазина — работа, требующая профессиональных умений. Обратитесь к специалистам. Да, это платно, но затраты на хорошего оптимизатора всегда окупаются.
Здраствуйте товарщи! Cтартую цикл постов по настройке сервера в virtualbox на CentOS 7.
Стек основного софта: nginx, php7, mongodb, redis, beanstalkd, supervisord.
Зачем устанавливать все это на виртуалке? - Что бы, например, протестировать на идентичных настройках при переносе на vps.
Почему именно CentOS? - Чаще всего при аренде vps вам доступно к выбору либо centos либо freebsd.
А сегодня начнем с установки.
В принципе вопросов здесь и сложностей возникнуть не должно.
Ранее писал черновик по основным запросам Mongodb в PHP, но стоило обновить пхп, и каково было мое разочарование, новый драйвер php для mongo полностью поменял синтаксис.
Это хорошо, что не стоит на месте, и плохо, что придется переписывать. На данный момент (написания статьи, а не ее публикации) нет ни одной odm и orm поддерживающей новый драйвер. Только библиотека которая является оберткой для драйвера, и какой-то не полной (http://mongodb.github.io/mongo-php-library/api/index.html)
Вот наш герой: https://github.com/mongodb/mongo-php-driver pecl/mongodb это новый MongoDB driver для PHP, а раньше это был его наследник pecl/mongo driver.
Что же делать и как дальше быть, попытаемся разобраться.
Документация http://php.net/manual/ru/set.mongodb.php
Поехали:
"world"];
$bulk = new MongoDB\Driver\BulkWrite;
$id = $bulk->insert($document);
try {
$result = $mongo->executeBulkWrite('mydb.collection', $bulk);
echo (string)$id;
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// SELECT
$filter = [
'hello' => 'world'
];
$options = [
'projection' => [
'hello' => 1,
],
'sort' => [
"hello" => -1,
],
'skip' => 2,
'limit' => 5
];
$query = new MongoDB\Driver\Query($filter, $options);
try {
$cursor = $mongo->executeQuery('mydb.collection', $query);
// здесь тоже можно посчитать количество с помощью iterator_count($cursor)
// если хотите работать как с массивом а не обьектом, то приходится преобразовывать =(
$cursor = MongoDB\BSON\fromPHP($cursor->toArray());
$cursor = json_decode(MongoDB\BSON\toJSON($cursor), true);
//
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
foreach($cursor as $document) {
echo "
";
print_r($document);
echo "
";
}
// count считаем так или смотрите ниже выполнение count c помощью Command
$count = count($cursor); */
// SELECT_ONE
// аналогично // SELECT только limit указуем в 1
// UPDATE
$filter = ["hello" => "world"];
$update = ['$set' => ["hello" => "wonderful world"]];
$options = ["limit" => 1, "upsert" => false];
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->update($filter, $update, $options);
try {
$result = $mongo->executeBulkWrite('mydb.collection', $bulk);
var_dump($result);
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// DELETE
$filter = ['hello' => 'world'];
$options = ["limit" => 1];
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->delete($filter, $options);
try {
$result = $mongo->executeBulkWrite('mydb.collection', $bulk);
var_dump($result);
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// ВЫПОЛНЕНИЕ ЗАПРОСОВ С ПОМОЩЬЮ КОМАНД - COUNT и COMPLEX SELECT
// COUNT пример считаем количество записей world
$query = ["hello" => "world"];
$command = new MongoDB\Driver\Command(["count" => "collection", "query" => $query]);
try {
$result = $mongo->executeCommand("mydb", $command);
$res = current($result->toArray());
$count = $res->n;
echo $count;
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// COMPLEX SELECT (это пример, результат этого запроса будет пустой)
$command = new MongoDB\Driver\Command([
'aggregate' => 'collection',
'pipeline' => [
['$match' => [
"hello" => "world"
]],
['$project' => [
"hello" => 1
]],
['$group' => [
'_id' => '$hello', 'sum' => ['$sum' => '$world']
]],
['$skip' => 1],
['$limit' => 1],
['$sort' => [
'hello' => 1
]],
],
'cursor' => new stdClass,
]);
$cursor = $mongo->executeCommand('mydb', $command);
foreach ($cursor as $document) {
echo "
";
var_dump($document);
echo "
";
}
//еще хотелось бы показать нюансы вставки и преобразования дат
// ВСТАВИТЬ ТЕКУЩУЮ ДАТУ
$milliseconds = round(microtime(true) * 1000); // теперь это миллисекунды
$document = ["date" => new MongoDB\BSON\UTCDateTime($milliseconds)];
$bulk = new MongoDB\Driver\BulkWrite;
$id = $bulk->insert($document);
try {
$result = $mongo->executeBulkWrite('mydb.collection', $bulk);
echo (string)$id;
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// ИЗВЛЕКАЕМ ДАТУ И ДЕЛАЕМ ЧИТАБЕЛЬНОЙ
// раньше был new Mongoid($_id)
// теперь это new MongoDB\BSON\ObjectId($_id)
$filter = ['_id' => new MongoDB\BSON\ObjectId('568991464c20200df6792a39')];
$options = ['limit' => 1];
$query = new MongoDB\Driver\Query($filter, $options);
try {
$cursor = $mongo->executeQuery('mydb.collection', $query);
// если хотите работать как с массивом а не обьектом, то приходится преобразовывать =(
$cursor = MongoDB\BSON\fromPHP($cursor->toArray());
$cursor = json_decode(MongoDB\BSON\toJSON($cursor), true);
//
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
$res = current($cursor);
// можно так
$date = date('Y-m-d H:m:s', $res['date']['$date'] / 1000 );
echo $date.' ';
// можно так
$d = new MongoDB\BSON\UTCDateTime($res['date']['$date']);
$datetime = $d->toDateTime();
$date = $datetime->format('Y-m-d H:m:s');
echo $date.' ';
// Автоинкремент поля Mongodb через findAndModify
// http://veselov.sumy.ua/1960-avtoinkrement-polya-mongodb-na-php.html
$command = new MongoDB\Driver\Command([
'findAndModify' => 'collection_counters',
'query' => ['field' => 'user_id'],
'update' => ['$inc' => ['nextId' => 1]],
"new" => true
]);
try {
$result = $mongo->executeCommand("mydb", $command);
$num = $result->toArray();
$num = $num['nextId'];
// дальше добавляем сам документ
// ..
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// Множественный INSERT batchInsert как и UPDATE и DELETE
// выполняется аналогично insert
$bulk = new MongoDB\Driver\BulkWrite;
$bulk->insert(["hello" => "world"]);
$bulk->insert(["hello1" => "world1"]);
$bulk->insert(["hello2" => "world3"]);
try {
$result = $mongo->executeBulkWrite('mydb.collection', $bulk);
} catch (MongoDB\Driver\Exception\Exception $e) {
echo $e->getMessage(), "\n";
}
// преобразование даты для выборки по дате
// ранее было new MongoDate( time() )
// теперь new MongoDB\BSON\UTCDateTime( time() * 1000 )
$dateTime = new MongoDB\BSON\UTCDateTime(strtotime(date('Y-m-d H:m:s', time())).'000');
$filter = [
'date' => [
'$gte' => new MongoDB\BSON\UTCDateTime(strtotime("{$year}-{$month}-01").'000'),
'$lt' => new MongoDB\BSON\UTCDateTime(strtotime(date('Y-m-d H:m:s')).'000')
]
];
// Было
// new MongoRegex("/$text/i"))
// стало
// new MongoDB\BSON\Regex($text, 'i'))
// И еще пример для размышления =)
$filter = [];
$options = [];
$query = new MongoDB\Driver\Query($filter, $options);
$cursor = $mongo->executeQuery( 'mydb.collection', $query);
$cursor->setTypeMap(['root' => 'array']); // выводим как массив
// формируем массив в нужном для нас порядке
foreach ( $cursor as $doc ) {
$id = (string)$doc['_id'];
$res[$id] = $doc;
unset($res[$id]['_id']);
}
echo "
";
print_r($res);
echo "
";
echo ' ok';
Ну вот вроде как и разобрались с основным представлением о том как выглядит новый php mongodb driver.
Насколько бы грамотным в плане юзабилити ни был сайт, каким бы дизайном ни наделили его разработчики, главное в нем — контент. Чтобы цениться поисковиками и аудиторией, сайту необходимы хорошие тексты. Но откуда их брать?
Первый вариант — писать самостоятельно. Вебмастер не расходует деньги, зато теряет много времени. Да и у каждого ли имеются навыки создания качественных текстов?
Второй способ — размещать пользовательский контент. Непростой вариант, ведь посетители будут активными только на раскрученном сайте. Ресурсу нужны будут большие интерактивные возможности и постоянная модерация, ведь без нее сайт наполнится далеко не тем контентом, который нужен вам.
Третий путь — заказать контент у копирайтера. Это платно, однако позволяет сэкономить время. А еще у копирайтера больше опыта создания текстов, ему легче качественно выполнить задание. Тексты на заказ - наиболее разумный вариант.
Заказать контент для сайта просто - это делается на биржах копирайтинга. Есть и ряд других сервисов, позволяющих заказывать тексты на конкретную тему и покупать готовые.