Web-разработка и SEO

Подписаться на эту рубрику по RSS

Drupal 7, после создания очередной ноды или комментария, выводит сообщение, что-то вроде «Forum topic %title has been created.» (пример для форумного топика). Вы, конечно же, хотите написать здесь что-то своё. А что, если текст зависит от того опубликована нода или отправлена на подтверждение администратору? Это как-раз мой случай, потому что я использую модуль Simple Regex Filter, чтобы отсеивать подозрительные сообщения на форумах.

Самое простое решение, позволяющее изменить все сообщения вида «@type %title has been created.», — установить модуль Strings Override, и вперёд. Для сложных случаев, когда нужна какая-то логика: устанавливается модуль Disable Messages, а затем используется экшн Rules «Set a message».

Однако в моем теме Disable Message ломает стили, да и не слишком гибкое это решение.

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

/**
 * We customize 'Forum topic ... has been created.' message when
 * it goes to the approval queue. This is done in two steps:
 *
 * 1. Add new status messages implementing hook_node_insert().
 *    This is done for both Published and Unpublished nodes.
 *    For Published nodes we just duplicate the old message.
 *    For Unpublished nodes we inform that the message is waiting for approval.
 *
 * 2. Remove old status message implementing hook_form_FORM_ID_alter().
 *    We override 'submit' action where we remove old messages in case it
 *    matches the pattern '@type %title has been created.'.
 *    We only remove a single match, so even if we duplicate a message
 *    on the first step, one of them will still be displayed.
 *
 * We customize also the Drupal behavior when a Forum Topic was updated and
 * the new revision goes to the Approval Queue. Now it redirects a user to
 * the Forum Category and shows the similar status message to inform the user.
 * We use hook_node_update() for that.
 */
 
/**
 * Implements hook_node_insert()
 */
function MY_MODULE_node_insert($node) {
  /**
   * Add custom status messages when a node is inserted
   */
  if ($node->type == 'forum') {
    if ($node->status == NODE_NOT_PUBLISHED) {
      drupal_set_message(t('Your forum topic has been queued for review by site administrators and will be published after approval.'));
    }
    elseif ($node->status == NODE_PUBLISHED) {
      $message = t('@type %title has been created.', array('@type' => node_type_get_name($node), '%title' => $node->title));
      drupal_set_message($message, 'status', TRUE);
    }
  }
}
 
/**
 * Implements hook_node_update()
 */
function MY_MODULE_node_update($node) {
  /**
   * If a Forum Topic was updated and the new revision goes to the Approval Queue
   * we redirect a user to the Forum Category and show a message to keep him informed.
   */
  if ($node->type == 'forum') {
    if ($node->status == NODE_NOT_PUBLISHED) {
      drupal_set_message(t('Your forum topic has been queued for review by site administrators and will be published after approval.'));
      drupal_goto('forum/' . $node->forum_tid);
    }
  }
}
 
/**
 * Implements hook_form_FORM_ID_alter().
 * @see MY_MODULE_node_insert()
 */
function MY_MODULE_form_forum_node_form_alter(&$form, &$form_state, $form_id) {
  /**
   * Override 'submit' action for 'forum_node_form' form
   */
  $form['actions']['submit']['#submit'][] = '_MY_MODULE_form_forum_node_form_submit';
}
 
/**
 * @see MY_MODULE_form_forum_node_form_alter()
 */
function _MY_MODULE_form_forum_node_form_submit($form, &$form_state) {
  /**
   * Remove the old status message 'Forum topic ... has been created.'
   */
  if (!empty($_SESSION['messages']['status'])) {
    $node = $form_state['node'];
    $old_message = t('@type %title has been created.', array('@type' => node_type_get_name($node), '%title' => $node->title));
    $old_message_key = array_search($old_message, $_SESSION['messages']['status']);
    
    if ($old_message_key !== FALSE) {
      unset($_SESSION['messages']['status'][$old_message_key]);
      
      // Reset array indexes. Otherwise it doesn’t work with some theme templates.
      $_SESSION['messages']['status'] = array_values($_SESSION['messages']['status']);
      
      // Remove the empty status message wrapper if no other messages have been set.
      if (empty($_SESSION['messages']['status'])) {
        unset($_SESSION['messages']['status']);
      }
    }
  }
}

Попался под руку сайт с приличной мультинациональной базой пользователей (? 10 000 более менее активных пользователей). И промежду прочим мне надо было узнать некоторую статистическую информацию. Вот, делюсь распределением длины имени пользователя для входа в систему (login name).

Важно, что база на сайте чистится от спамеров и неактивных пользователей (тех, кто не заходил больше года) в автоматическом режиме, т.е. эта картинка отражает весьма объективные данные.

Пожалуй тех кто в теме я уже не удивлю своим открытием, но другим может быть интересно.

Наткнулся на прелюбопытнейшую вещь — Epic Citadel, что является наименованием демонстрационной локации на движке Unreal Engine, но не простого, а портированного в JavaScript.

Иными словами — есть инструмент, который называется Emscripten, являющий собой преобразователь C/C++ кода в JavaScript код. Люди из Epic Games (это те кто когда-то создали Unreal Tournament) взяли да и перевели свой движок Unreal Engine 3 полностью на рельсы HTML5 (WebGL) и JavaScript за 4 дня. Всё что вы видите, если видите, это голый JavaScript, что само по себе кажется фантастикой.

 

читать дальше »

Webmoney BL — 20!

Метки: |
Дата: 13/08/2012 23:50:54

Сегодня фарфоровый юбилей — BL 20 у моего Webmoney аккаунта. Для тех кто в теме, по-моему это уже реально круто :)

 

 

Возможно повторюсь, но аккумулировав знания и опыт о процессе нарастания Webmoney BL, вот какие факторы влияют на его рост (в порядке убывания важности):

  1. чем БОЛЬШЕ РАЗНЫХ корреспондентов, с которыми вы производите взаиморассчеты, тем быстрее растет BL,
  2. чем ЧАЩЕ вы совершаете сделки, тем скорее увеличивается Webmoney BL,
  3. чем БОЛЬШЕ СУММЫ транзакций, тем скорее нарастает этот показатель.

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

А в планах уже вот давно купить аттестат выше формального и подзарабатывать на Webmoney-кредитах.

Upd. 2015-11-14.

Как-то раз я подключил сайт к рекламной сети AdLabs. Сеть понравилась прежде всего удобством, гибкостью настроек (фильтрация объявлений по темам, хороший набор размеров баннеров), а также качеством рекламного материала: в базе тизеров этой сети нет откровенного шлака, от которого вас обычно тошнит, попробуй зайди вы на какой древний и неухоженный, обросший старческими рекламными фурункулами сайт (ничего личного, но amdm.ru,  как пример).

Мои ~220 посетителей в сутки конечно не способствуют ощущению тяжести в кармане от заработанных на рекламном поприще денег, зато стабильно и без эксцессов деньги накопились до минимально выплачеваемой суммы в 260 руб. и автоматически перевелись на webmoney-кошелек, так что я уже доволен самим фактом (напомню, что не очень давно Google AdSense бесстрастно порвали со мной отношения).

Помимо прочего, я приглашаю начинающих вебмастеров начать работу с тизерными сетями именно через AdLabs, поверьте это действительно мягкий старт. Порог вхождения — 100 посетителей в сутки — оптимален: меньше нет смысла, а больше не всегда бывает на первых порах. Вы не сделаете из сайта помойку, по крайней мере, выбрав другую сеть, вероятность фатального развития событий выше. Реклама в массе своей на порядок качественнее тизерных сетей конкурентов. Ну и последнее, я просто был бы рад, если вы зарегистрируетесь по моей реферальной ссылке — помогу и с настройками, и с дизайном объявлений. Как показали мои небольшие исследования, от собственно цветов и местоположения баннеров доход может подниматься/опускаться в разы.

Сейчас я опишу довольно редкую проблему, которая выглядит вот так:

 

 

Вы по привычке набираете в браузере http://localhost/ и озадачено смотрите на ошибку:

Not Found
HTTP Error 404. The requested resource is not found.

читать дальше »

Skype приобретает всё большую популярность в качестве средства сетевого общения перекрывая в некоторых случаях текстовые мессенджеры (ICQ, Jabber), а большей частью предоставляющий расширенные возможностей для живого общения. В этой связи чаще назревает необходимость размещать на сайтах прямые ссылки типа «позвонить по Skype», или «написать в Skype» с отображением статуса вызываемого абонента (онлайн/занят/не в сети).

 

 

Для этих целей на официальном сайте Skype находится мастер создания кнопок/иконок, позволяющих взаимодействовать с программой.

http://www.skype.com/intl/en/tell-a-friend/wizard/ (EN)

http://www.skype.com/intl/ru/tell-a-friend/wizard/ (RU)

Замечу, что если вы разбираетесь в HTML, то не составит никакого труда воплотить все возможности, заложенные в предоставляемый механизм. Работать с кодом напрямую разработчики посчитали дурным тоном, читать дальше »