Июл 31

Убираем отображение WAP2 в форуме SMF

Страницы, формирующиеся в формате wap2 (а также еще в двух мобильных форматах) в форуме Simple Machines Forum по умолчанию захламляют поисковики. Также по существу они не нужны на практике, поскольку любое современное мобильное устройство может отобразить полноценный сайт.

Как их отключить, чтобы они не вылезали нигде?

1. Создать файл robots.txt в корне сайта и прописать:

User-agent: *
Disallow: *wap*
Disallow: *wap2*
Disallow: *imode*

Возможно, если форум у вас не в корне сайта, то строки будут иметь вид:

Disallow: /<путь к форуму>/*wap*

2. В основном файле форума index.php

Добавить строки:

if(isset($_REQUEST['wap2']))
unset($_REQUEST['wap2']);

if(isset($_REQUEST['wap']))
unset($_REQUEST['wap']);

if(isset($_REQUEST['imode']))
unset($_REQUEST['imode']);

перед:

// Determine if this is using WAP, WAP2, or imode. Technically, we should check that wap comes before application/xhtml or text/html, but this doesn't work in practice as much as it should.
if (isset($_REQUEST['wap']) || isset($_REQUEST['wap2']) || isset($_REQUEST['imode']))
unset($_SESSION['nowap']);
...

3. В файле темы оформления

В файле темы оформления index.template.php в функции template_body_below() найти и убрать код ссылки на wap2.

Ноя 28

Устали от стандартных шрифтов на сайте?

Устали от стандартных шрифтов Arial, Tahoma, Verdana на сайтах?

Есть много способов привнести в них разнообразие, самый простой заключается в использовании Google Fonts.

  1. Переходим по ссылке, выбираем понравившийся шрифт, обращаем внимание на то, чтобы он поддерживал кириллицу.
  2. Под понравившимся шрифтом нажимаем кнопку со стрелочкой ("Quick use").
  3. Выбираем плотность шрифта (чем больше цифра, тем буквы жирнее).
  4. Выделяем пункт, чтобы шрифт он содержал кириллицу (Cyrillic).
  5. Прописываем в раздел <head> в HTML-файле строку вида (в данном случае мы взяли шрифт PT Mono):
    <link href='http://fonts.googleapis.com/css?family=PT+Mono&subset=latin,cyrillic' rel='stylesheet' type='text/css'>
  6. Прописываем в CSS файле вызов шрифта:
    font-family: 'PT Mono', sans-serif;

Всё!

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

Сен 10

Как раскрутить форум с нуля?

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

Итак, чтобы создать качественный форум с нуля, необходимо:

  • желательно иметь сайт-портал, который передает трафик на форум;
  • определиться с тематикой форума;
  • создать 1-2 раздела по тематике (а не 10-20);
  • создать первоначальную заполненность темами и сообщениями (желательно, чтобы контент был уникальным);
  • для заполнения форума лучше всего создать 10-20 различных аккаунтов, это создаст ощущение, что форум живой, либо нанять людей, которые занимаются наполнением форумов;
  • пригласить на форум людей, желательно персонально, либо из социальных сетей;
  • как можно быстрее отвечать на вопросы реальных пользователей;
  • предложить пользователям различные статусы и ранги, особенно заслуженным - доверить модерацию разделов;
  • предложить различные конкурсы с подарками за общую активность на форуме, за создание самой посещаемой или самой комментируемой темы;
  • формировать рост форума естественным путем, создавая новые разделы и подразделы в зависимости от "спроса" пользователей на них;
  • по мере роста форума оставлять естественные ссылки на него на других ресурсах и форумах;
  • если возможно, разместить ссылку на форум в Wikipedia и на других ресурсах с высокой посещаемостью;
  • ухаживать за форумом, не превращать его в помойку, во флуд и в место для неконструктивной ругани.

Желаю успехов в создании и раскрутке форумов!

p.s. Кстати, у проекта "Уголок веб-разработчика" когда-то был форум, но из-за низкой посещаемости и спамеров он так и не "встал на ноги". Более подробно о причинах его закрытия написано в этой теме.

p.p.s. Движок SMF с тех пор сильно улучшился. Мы вновь рассматриваем его в качестве основного кандидата в движки форума.

Фев 14

Простой способ избавиться от повторной отправки данных формы

Допустим у вас есть скрипт вида:

<?
if ($_REQUEST['action']=='add')
{
  // записываем что-то в БД
}
>?
<html>
<body>
<form method='post'>
  <input type='hidden' name='action' value='add'/>
  <input name='var1'/><br/>
  <input name='var2'/><br/>
  <input type='submit' value='Отправить'/>
</form>
</body>
</html>

Если вы нажмете "отправить" и вернетесь на одну страницу назад после этого, то в браузере произойдет повторная отправка формы (часто это сопровождается предупреждением, но пользователи не обращают на них никакого внимания). Повторная отправка чаще всего приводит к дублированию введенных в форму данных в базе сайта (либо к другим, менее значимым событиям).

Как легко избежать этого? Очень просто, нужно доработать скрипт, дополнив его одной строкой:

header("Location: <путь к скрипту>");

Это строку следует записывать сразу после действия, например:

<?
if ($_REQUEST['action']=='add')
{
  // записываем что-то в БД
  header("Location: script.php");
}
?>
<html>
<body>
<form method='post'>
  <input type='hidden' name='action' value='add'/>
  <input name='var1'/><br/>
  <input name='var2'/><br/>
  <input type='submit' value='Отправить'/>
</form>
</body>
</html>

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

Такой вот простой способ.

p.s. Важно помнить, что функция header() будет работать только в тех местах скрипта, где еще не начался вывод данных в поток браузера, т.е. до HTML-вставок, функций echo(), print() и т.п.

Ноя 11

О малых проектах

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

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

Рекомендую задумываться об этом каждый раз, когда беретесь выполнять очередной проект.