Архив рубрики: Блог

Мне нравится! в Octopress от vk.com

Из коробки Octopress умеет выдавать кнопки от google+, twitter и facebook. Для их размещения внизу каждой страницы достаточно прописать эти настройки в файле _config.yml:
123facebook_like: truegoogle_plus_one: truetwitter_tweet_button: true
А сейчас мы научим Octopress добавлять кнопку «Мне нравится!» от социальной сети «В контакте».

Вводим название своего сайта здесь, чтобы получить api Id — идентификатор контактовского виджета для Вашего сайта. Там и получаем код, который надо будет вставить. Код меняется в зависимости от того, какие параметры кнопки выбрать, так что мой код может Вам не подойти — тогда пользуйтесь тем кодом, который вам выдаст «В контакте».
Создаём файл source/_includes/vk_head.html с таким содержанием:
12345<script type=»text/javascript» src=»//vk.com/js/api/openapi.js?116″></script><script type=»text/javascript»>VK.init({apiId: Номер_Вашего_ID, onlyWidgets: true});</script>
Этот код пойдёт внутри <head>. Не забудьте вставить Ваше apiId. Затем добавьте в конец файла source/_includes/custom/head.html:
123{% if site.vk_like %}{% include head.html %}{% endif %}
Создавайте файл source/_includes/vk_sharing.html:
123<script type=»text/javascript»>VK.Widgets.Like(«vk_like», {type: «button»});</script>
Этот код пойдёт в том месте, где мы хотим нашу кнопку.
Добавляйте в конец файла source/_includes/post/sharing.html:
123{% if site.vk_like %}<div id=»vk_like»></div>{% endif %}
Добавьте в файл source/_includes/custom/after_footer.html:
123{% if site.vk_like %}{% include vk_sharing.html %}{% endif %}
Добавьте в файл _config.yml строку:
1vk_like: true
Почти готово. Осталось только расположить кнопку в нужном месте. Если у Вас есть кнопки от Twitter, Google+ и Facebook (с английским словом Like — по умолчанию Octopress и добавляет английскую кнопку), то подойдёт стиль со следующими цифрами, который можно записать в sass/custom/_styles.scss:
1234#vk_like {margin: 0 0 0 80px; padding: 25px 0 33px 0px;}@media screen and (min-width: 520px){ #vk_like {margin: -28px 0 0 320px; padding: 0 0 30px 0;}}
Так кнопка «Мне нравится» от «В контакте» стройно встанет в ряд с остальными кнопками. При ширине окна меньше 520 пикселей кнопка «Мне нравится» съедет во второй ряд и ровненько при этом займёт место посередине под этими тремя. Впрочем, если что-то Вас не устраивает, поменяйте цифры. Отключить кнопку можно, прописав в _config.yml параметр
1vk_like: false
Так что процесс автоматизирован. Будьте только внимательны при смене темы — файл source/_includes/post/sharing.html, скорее всего, будет переписан. Зато все файлы, которые мы создали, и все файлы из поддиректорий custom должны сохраниться. Впрочем, бэкапиться перед сменой темы всё равно необходимо.

Русификация Octopress

В интернете есть несколько записей о русификации дат в Octopress, например, на сегодня доступны Rinat’s Blog и maximmikheev.ru. Забавно, что оба они ссылаются на одного и того же немца. Просто повторяться я бы, конечно, не стал, однако упомянутые записи написаны более 3-х лет назад (24 мая и 13 июля 2012 соответственно), за это время время Jekyll обновился и перестал работать с некоторыми конструкциями из ruby. Мне удалось разобраться, как с этим бороться, о чём и расскажу.

Датами управляет плагин plugins/date.rb. Приведите его к такому виду:
date.rbСкачать# encoding: utf-8module Octopress module Date # Русская локализация: MONTHNAMES_RU = [nil, «Января», «Февраля», «Марта», «Апреля», «Мая», «Июня», «Июля», «Августа», «Сентября», «Октября», «Ноября», «Декабря» ] ABBR_MONTHNAMES_RU = [nil, «Янв», «Фев», «Мар», «Апр», «Май», «Июн», «Июл», «Авг», «Сен», «Окт», «Ноя», «Дек» ] DAYNAMES_RU = [ «Воскресенье», «Понедельник», «Вторник», «Среда», «Четверг», «Пятница», «Суббота» ] ABBR_DAYNAMES_RU = [ «Вс», «Пн», «Вт», «Ср», «Чт», «Пт», «Сб» ] # Returns a datetime if the input is a string def datetime(date) if date.class == String date = Time.parse(date) end date end # В _config.yml должно быть задано: date_format: ordinal def ordinalize(date) # Задаем наш формат выдачи даты format_date(date, «%d %b %Y») # 20 Авг 2019 end # Formats date either as ordinal or by given date format # Adds %o as ordinal representation of the day def format_date(date, format) date = datetime(date) if format.nil? || format.empty? || format == «ordinal» date_formatted = ordinalize(date) else format.gsub!(/%a/, ABBR_DAYNAMES_RU[date.wday]) format.gsub!(/%A/, DAYNAMES_RU[date.wday]) format.gsub!(/%b/, ABBR_MONTHNAMES_RU[date.mon]) format.gsub!(/%B/, MONTHNAMES_RU[date.mon]) date_formatted = date.strftime(format) end date_formatted end endendmodule Jekyll class Post include Octopress::Date def to_liquid(attrs = nil) date_format = self.site.config[‘date_format’] new_datas = { «title» => self.data[‘title’] || self.slug.split(‘-‘).select {|w| w.capitalize! || w }.join(‘ ‘), «url» => self.url, «date» => self.date, # Monkey patch «date_formatted» => format_date(self.date, date_format), «updated_formatted» => self.data.has_key?(‘updated’) ? format_date(self.data[‘updated’], date_format) : nil, «id» => self.id, «categories» => self.categories, «next» => self.next, «previous» => self.previous, «tags» => self.tags, «content» => self.content } Utils.deep_merge_hashes(self.data, new_datas) end end class Page include Octopress::Date # Initialize a new Page. # # site — The Site object. # base — The String path to the source. # dir — The String path between the source and the file. # name — The String filename of the file. def initialize(site, base, dir, name) @site = site @base = base @dir = dir @name = name self.process(name) self.read_yaml(File.join(base, dir), name) # Monkey patch date_format = self.site.config[‘date_format’] self.data[‘date_formatted’] = format_date(self.data[‘date’], date_format) if self.data.has_key?(‘date’) self.data[‘updated_formatted’] = format_date(self.data[‘updated’], date_format) if self.data.has_key?(‘updated’) end end module Filters include Octopress::Date def date_ru(date, format) format_date(date, format) end endend
Отличие от процитированных записей здесь в строках 48–65: там используется deep_merge, на который Jekyll старше 2.0 ругается. Оказалось, что его нужно заменить на Utils.deep_merge_hashes. Я так и не смог проделать это самостоятельно (обожаю ruby!), но мне ответили на stackoverflow.
В _config.yml укажите:
date_format: "ordinal"

Менять формат вывода даты надо в самом date.rb в строке №21. Подробнее о форматировании даты см. на ruby-doc.
Сразу же после изменения date.rb попробуйте собрать блог: rake generate. Даты пока не изменятся, просто проверьте, что всё собирается. Теперь нам осталось заменить в некоторых файлах date на date_ru. Переменная date может встречаться в разных файлах в зависимости от темы. Обычно она находится в source/_includes/archive_post.html. В теме Octostrap3, например, она встречается 7 раз в source/_includes/post/date.html. После замены файл выглядит так:
source/_includes/post/date.html{% capture date_ru %}{{ page.date }}{{ post.date }}{% endcapture %}{% capture date_formatted %}{% if page.date %}{{ page.date | date_ru: site.date_format }}{% endif %}{% if post.date %}{{ post.date | date_ru: site.date_format }}{% endif %}{% endcapture %}{% capture has_date %}{{ date_ru | size }}{% endcapture %}{% capture updated %}{{ page.updated }}{{ post.updated }}{% endcapture %}{% capture updated_formatted %}{% if page.updated %}{{ page.updated | date_ru: site.date_format }}{% endif %}{% if post.updated %}{{ post.updated | date_ru: site.date_format }}{% endif %}{% endcapture %}{% capture was_updated %}{{ updated | size }}{% endcapture %}{% if has_date != «0» %}{% capture time %}<span class=»glyphicon glyphicon-calendar»></span> <time datetime=»{{ date_ru | datetime | date_to_xmlschema }}» {% if updated %} data-updated=»true»{% endif %} itemprop=»datePublished dateCreated»>{{ date_formatted }}</time>{% endcapture %}{% endif %}{% if was_updated != «0» %} {% capture updated %}<span class=»glyphicon glyphicon-calendar»></span> <time datetime=»{{ updated | datetime | date_to_xmlschema }}» class=»updated» itemprop=»dateModified»>Updated {{ updated_formatted }}</time>{% endcapture %}{% else %}{% assign updated = false %}{% endif %}
В процитированных блогах указан такой вариант:
source/_includes/archive_post.html12345678{% capture category %}{{ post.categories | size }}{% endcapture %}<h1><a href=»{{ root_url }}{{ post.url }}»>{{post.title}}</a></h1><time datetime=»{{ post.date | datetime | date_to_xmlschema }}» pubdate>{{ post.date | date_ru: «<span class=’day’>%d</span> <span class=’month’>%b</span> <span class=’year’>%Y</span>»}}</time>{% if category != «0» %}<footer> <span class=»categories»>Опубликовано в {{ post.categories | category_links }}</span></footer>{% endif %}
Но ещё раз повторю, всё зависит от темы. Обратите внимание: менять на date_ru нужно только отдельно стоящее date, а post.date, например, трогать не надо.
А чтобы найти фразы типа «Posted by, Comments, Recent Posts, Categories, Previous post» и т.д., воспользуйтесь командой
grep -irl ‘posted by’ /path/to/octopress/source

Затем вручную редактируйте найденные файлы. Или можно делать замены с помощью потокового редактора sed, например (сделайте backup сначала):
find /path/to/octopress/source -type f -exec sed -i ‘s:recent posts:Последние записи:gI’ {} +

Флаг -i означает менять оригинальный файл, s — замена, далее через двоеточие что и на что менять, g — менять все вхождения в строке, I — нечувствительно к регистру.
Вот и всё, Октопресс локализован. Если что-то не сработало, обязательно дайте знать в комментариях.

Новые посты и временная смена приоритетов.


Рад снова приветствовать всех на страницах своего блога. Судя по комментариям, многих постоянных читателей начала волновать судьба ресурса, т.к. за последние полтора месяца в блоге действительно не появилось ни одного нового поста. Спешу вас заверить — ресурс будет продолжать жить, тем более что интересных тем, про которые я бы хотел написать — накопилось предостаточно (плюс еще остались незаконченные статьи). Наступившее временно затишье связано с небольшой сменой приоритетов. Как советуют некоторые, говорить о том что у тебя не хватает на что-то времени — не очень хорошо, поэтому, назовем это временной сменой приоритетов. Обстоятельства сложились так, что сейчас я занят работой в более крупных и интересных для меня проектах, поэтому та часть времени, которая раньше оставалась для моего небольшого хобби — ведения этого блога, теперь плотно занята другими вещами. Скорее всего подобная картина будет наблюдаться на протяжении всего оставшегося года, поэтому ожидать увидеть тут что-то новое раньше января 2018 г. скорее всего не стоит.

Тем не менее, я рад что судьба ресурса оказалась небезразличной для вас и, надеюсь, что в новом году у нас будет еще больше интересных и полезных статей, а также посетителей. Ну а пока, как говорится, stay tuned … и не забываем про поддержку проекта.



Источник: decker.su

Наполнение блога контентом

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

Что такое контент? – Контент – это, какая-либо информация, находящиеся на любом web-ресурсе. Контент включает в себя текст, видео, изображения, flesh. Надеюсь объяснил предельно ясно.


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

На его блоге прочитал один пост про ЖЖ. Во время чтения чуть не заснул. Текст весь смешан, присутствуют грамматические и орфографические ошибки, сам текст очень короткий. Так же заметил, что у такого блога очень мало посещений, но тем не менее, комментариев там предостаточно – всё дело в том, что он DoFollow.

Всё это вступление я написал для того, чтобы вы не повторяли таких же типичных ошибок. Давайте рассмотрим всё по-подробнее.

Поиск темы

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

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

Так же существует и второй способ – поиск темы для поста через блоги схожей тематики. Ну тут, думаю, всё предельно понятно: ищите блог с такой же тематикой как у вас, просматриваете более интересные статьи и так же добавляем их в заметку на будущий пост.


Вообще, я вам советую завести блокнотик, в который вы будите записывать все ваши идеи по будущим постам и заметкам – так вы точно ничего не забудете. Я сам завёл себе такой блокнотик  и теперь, там я записываю каждую свою мысль, после которую пишу сюда.

Определяемся с названием

Большинство блоггеров-новичков, совершают ошибку, когда просто, самовольно, пишут название для поста. Так делать нельзя. От правильности названия поста зависит его позиция в выдачи по определённому запросу.
Чтобы получить максимум пользы от поста, от которого, в дальнейшем,  зависит посещаемость вашего блога, следует сверится со статистикой поисковых запросов Яндекса. Для этого перейдём на сайт wordstat.yandex.ru и в появившейся строке введём название вашего будущего поста или ключевого слова. Название не должно быть слишком длинным. Например у вас статья про поисковые системы, стало быть, в строку вводим название или ключевое слово.
После ввода, вы увидите множество вариантов того, чего люди ищут по данной теме, а также число поисковых запросов в месяц.
Если блог у вас ещё совсем новенький и малоизвестный,то выбирайте поисковые запросы  от 100, до 700 в месяц – так будет проще вырваться на первые позиции. Блогам, которые более популярны, советую от 1000, да 4000 запросов в месяц. А после выбора более подходящего названия для поста, следует это новоиспечённое название вбить в строку поиска и проанализировать информацию, которую разместили сайты находящиеся на первых 2ух страницах в выдаче.

Популярный ЧПУ

Если название для поста вы выбрали средней популярности, то, по той же самой теме, вы можете найти более популярный запрос и сделать его URLом поста.
То есть, на примере моего поста, вы можете видеть, что название этого поста: «Наполнение блога контентом» а URL выглядит так: «napolnenie-kontentom» – то есть URL поста более популярней в выдаче чем название.
Всё это, естественно, влияет на позицию вашего будущего поста в поиске. Вот, собственно, и всё! Главное, каждый свой пост, подбирайте таким же способом и тогда посещаемость вам гарантированна.

Добавление картинок


Чуть не забыл про картинки. Добавляйте в каждый свой пост картинки. Во-первых, это заинтересует ваших читателей, а во-вторых,  это даст вам маленький плюсик в раскрутке – эти картинки будут индексировать и добавлять в свой список поисковые машины. Главное, картинка должна быть загружена на ваш сервер и добавлена в пост.

Автор: Alexei Shirokov
Дата публикации: 2017-02-11T00:16:00.002+03:00

Лучшие способы продвижения блога

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

Хочется, чтобы блог, наконец, появился на первых позициях выдачи поисковой системы? Тогда нужно обратить внимание на несколько простейших правил, которые помогут превратить его в настоящий идеал. Читать

Написание статей для блога: несколько фишек

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

Читать