Wmsn Doorway Generator. v 14 (2 сентября 2017)

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

Демо версия: doorway.tdsse.com (changelog.txt). Демо дорвея под товарную партнерку Где слон?: shop.tdsse.com

Купить генератор дорвеев: купить (стоимость первой покупки 50$, стоимость покупки обновления 5$).

Перед покупкой и работой с доргеном - внимательно прочитайте эту инструкцию.

  • Дорген поддерживает мультисайтовость (много доменов на одном скрипте).
  • Дорген поддерживает мультикеи (дополнительные столбцы данных в базе).
  • Отложенные страницы (кол-во страниц отложенных на Х дней).
  • Скрипт не поддерживает установку в директорию, ставится только в корень.
  • На каждый ключевик кроме обычной страницы с текстами создаются доп. страницы - 2 фотогалереи, 1 видеогалерея, страница копипаста из вконтакта.
  • 1000 прокешированных страниц дорвея имеют базу SQLite размером 12 мб при настройках по умолчанию (уже возможно больше, надо перепроверить).

Источник контента.

Тексты - абзацы с тематических сайтов, найденные через bing.com + опционально синонимизация (ru и en синонимайзеры в комплекте), контент (копипаст) из вконтакта, видео с youtube.com, скриншоты с youtube.com, картинки найденные через bing.com, тематические заглавия из title снипетов bing.com, поисковые подсказки (ключевики) с yahoo.com. Парсинг идет многопоточно (multi curl), потому выполняется достаточно быстро, первая генерация страницы занимает около 2-5 секунд.

Технические требования к хостингу.

  • Вебсервер (Apache, Nginx или Lighttpd)
  • PHP 5.5 и выше (рекомендуется 7.0 или 7.1). на 7.2 не тестировалось
  • SQlite3 (не путать с pdo_sqlite)
  • Curl (php-curl) и разрешена функция curl_multi_exec
  • mbstring
  • iconv

Частые критические ошибки.

Ошибки, не позволяющие работать дорвею (PHP Warning, PHP Fatal error, Fatal error). Они отображаются в браузере и записываются в лог ошибок в файл error_log.txt, также их можно найти в стандартных логах ошибок вебсервера:

curl_multi_exec() has been disabled for security reasons... - запрещена функция curl_multi_exec, надо заставить сисадмина ее включить или сменить хостинг.

Class 'SQLite3' not found... - не установлен класс SQLite3, его надо установить. В debiab/ubuntu установить можно коммандой: apt-get install sqlite3 libsqlite3-dev php7.0-sqlite3 (или php5-sqlite3).

Call to undefined function mb_strtolower()... - (или аналогичная ошибка с другой mb_* функцией) - не установлен mbstring.

Fatal error: Out of memory... - не хватило оперативной памяти для выполнения процесса. Причины (в порядке убывания вероятности): слишком низкий лимит выставленный в php.ini (проверить memory_limit в phpinfo, 64М должно хватать), сервер перегружен и вся оперативка занята (проверить занятость оперативки в htop), хостер оверселлит (особенно если vps и виртуализация openvz), вы накосячили в скриптах (проверить на дефолтном скрипте и настройках), сайт с которого идет парсинг отдал слишком много данных (случаи единичны).

Unable to open database: unable to open database file in... - и при этом в папке /contents/ файл базы не появляется - нужно проверить права на запись на эту директорию (и заливать файлы доргена не от root, а тем пользователем, от которого работает вебсервер). Если файлы создаются, но нулевого или околонулевого размера - возможно кончилось место на диске.

CURLOPT_FOLLOWLOCATION cannot be activated when an open_basedir is set in... - нужно в конфиге сменить 1 на 0 в $enablelocation = 0;

Use of undefined constant JSON_UNESCAPED_UNICODE - у вас слишком древняя версия php, для этой функции нужно минимум php 5.4. Но лучше конечно php 7.0.

Знаки вопроса вместо заглавий страниц - исходный файл ключевиков был загружен в не верной кодировке. Нужно сохранять их в UTF-8 без BOM кодировке и пересоздать дорвей (удалить файл базы в папке /contents/).

Главная работает, а на внутренних 404 ошибка - если на всех внутренних страницах выдается 404 ошибка - проблемы с mod_rewrite. Проверьте, залит ли .htaccess, есть ли у вас apache, разрешен ли в апаче mod_rewrite. Если используется LigHTTPd, то ниже описаны правила url.rewrite-once для него. Если у вас nginx - обратитесь к своему системному администратору для настройки правил в конфиге Nginx аналогичных тем, которые есть в .htaccess.

У отдельных страниц не указана категория и ссылка ведет на 404 - скорее всего в исходном txt файле ключевиков проскочил символ вертикальной черты | в ненужном месте. Он предназначен только для разделения в строке ключевика от урла категории. Если в исходном txt файле ключевиков вы не указываете привязку ключевика к конкретным категориям - чистите базы ключевиков от наличия в них вертикальной черты.

Установка.

  • Настроить /data/conf.php (некоторые пункты важно настроить до заливки ключевиков доргена). Можно также для отдельных доменов создавать свой персональный конфиг, сохраняя его в папке /conf/host.com.php, где host.com - имя домена. В персональный конфиг для домена можно писать не все значения общего конфига, а только те, которые отличаются от общих.
  • Залить дорген на хостинг. Папку «additional scripts» заливать на сервер не надо! Файлы заливать под тем юзером, для которого на сервере создан аккаунт, а не под admin или root, чтобы не возникли проблемы с правами доступа к файлам и директориям.
  • Поставить права на запись на папку с доргеном (корневую директорию, часто она называется /public_html/) и на директорию /contents/.
  • Текстовый файл ключевиков для инсталяции дорвея сохранять в /keywords/host.com.txt (он проверяется первым) или в /keywords.txt. Файл поддерживает мультикеи (дополнительные столбцы в базе). Формат файла ключевиков: построчно ключевики в кодировке utf-8 без BOM (по категориям они будут раскиданы рандомно). Также можно строки создавать вида: «ключевик|caturl» где caturl - урл категории из конфига. Контролируйте, чтобы в строках не встречался без надобности знак вертикальной черты | т.к. он используется как разделитель между ключевиком и урлом категории. Если нужны мультикеи (дополнительные столбцы с данными) - они есть в количестве 15. Для создания дорвея с мультикеями - формат файла с ключевиками должеен быть вида: ключевик|category|мультикей1|мультикей2|мультикей3 и так до 15 мультикеев. Категорию можно не указывать (оставить пустой), а сделать вот так: ключевик||мультикей1|мультикей2|мультикей3 , тогда категория будет взята рандомно. Как выводить мультикеи на страницах читайте дальше.
  • Установка возможна только в корень сайта (в директории скрипт не работает).
  • Скрипт поддерживает мультисайтовость (когда на одном скрипте работает много доменов). Дополнительные домены и субдомены парковать как зеркала к основному домену (гуглить: доменный синоним, доменный алиас, domain alias, domain aliasing). В панели ISPmanager доп домены добавлять в поле «псевдонимы», в VestaCP в поле «алиасы».

Внимание! При использовании (при наличии) файла keywords.txt будьте внимательны и осторожны, чтобы не нагенерить безграничное количество баз данных, если например на сервере включены автосубдомены. Т.к. любой домен открывшийся с вашего сервера автоматически возьмет в файле keywords.txt ключевики и создаст базу.

Обновление со старых версий.

Обновление с версии 2.8 и более ранних не поддерживается (базы данных и шаблоны также не совместимы). С версии 6 и выше в основном обновление сводится к замене всех .php файлов и .htaccess в корне дорвея (кроме conf.php, который до версии 8 находился в корне), а также папки /php/ со всем ее содержимым. Это действие можно проводить и при обновлении с пропуском промежуточных версий. Но перед обновлением рекомендуется всетаки читать changelog.txt.

Дополнительные скрипты.

Папку «additional scripts» заливать на сервер не надо!

yml-to-db.php - скрипт импорта в базу дорвея xml (yml) выгрузок товаров из партнерки Где слон?. На выходе будут получаться вот такие товарные дорвеи: shop.tdsse.com (демо дор на шаблоне tpl4shop.txt). Для работы скрипт надо перенести в корень дорвея. Внутри скрипта имеются несколько настроек (менять их скорее всего не надо). YML выгрузку товаров сделать тут, полученный файл переименовать из абракатабры в имя домена дорвея (пример youdoor.ru.xml) и залить в папку /yml/ которую создать в корне дорвея. Потом в браузере зайти на адрес вида: http://youdoor.ru/yml-to-db.php и дождаться окончания работы скрипта. Скрипт может работать долго, если база большая, потому на сервере должно быть разрешено долгое выполнение скрипта (set_time_limit = 0). Размер исходного .xml файла в плане потребления оперативки не имеет значения, должен успешно обработаться файл любых размеров (идет построчное чтение файла), большие файлы могут импортироваться по долгу. Собираетесь делать свои шаблоны под товарные выгрузки? - Загляните в yml-to-db.php, и изучите: соответствие поля мультикея данным из xml выгрузки.

blackurl.php - форма блокирования урлов дорвеев на случай абуз на страницы. Вместо указанных страниц будет 404 ошибка без контента. Для работы скрипт надо перенести в корень дорвея. Скрипт можно переименовывать, если требуется скрыть его адрес от посторонних.

linkmap.php - (пример) список страниц домена (дата которых уже подошла для появления на сайте) в разных форматах (html, bbcode, txt, wmsn, wget и т.п.). Для работы скрипт надо перенести в корень дорвея. Скрипт можно переименовывать, если требуется скрыть его адрес от посторонних.

alldoors.php - (пример) отображает список доменов текущей пачки дорвеев в разных форматах (html, bbcode, txt, wmsn, wget и т.п.), для которых созданы базы в папке /contents/. Для работы скрипт надо перенести в корень дорвея. Скрипт можно переименовывать, если требуется скрыть его адрес от посторонних.

alldoors-internal.php - (пример) примерно тоже самое, что alldoors.php, только выводит внутряк всех дорвеев пачки.

rssparser.php - скрипт наполнения дорвея заглавиями из посторонних rss лент. Заглавия страниц из чужих RSS лент будут ключевиками для страниц вашего дорвея. Внутри скрипта есть настройки. Для работы скрипт нужно перенести в корень дорвея. Скрипт надо поставить на крон или еще как-то его периодически дергать, чтобы происходил процесс парсинга, можно поставить на него ссылку с сайта, но ссылку ставить не на /rssparser.php (все .php запрещены к индексации в robots.txt), а на его алиас - урл /news.html в виде: <a href="/news.html">Новости</a>. Тогда заходы поисковых ботов на эту страницу будут выполнять роль cron. Для быстрого поиска тематических рсс лент - идем в bing.com и вбиваем поисковый запрос вида: «feed:новости language:ru», где «новости» это ключевик нужной нам тематики. Если вы работаете на своих ключевиках, и вам не нужно наполнение ключевиками из посторонних RSS лент - удалите этот скрипт с сервера!

randrss.php - лента RSS рандомного дорвея из папки /contents/. Доп настроек не имеет, если нужна - просто перенести в корень дорвея. Скрипт можно переименовывать, если требуется скрыть его адрес от посторонних.

gen-key.php - генератор txt файлов с ключевиками для доменов из списка (для инсталляции дорвеев). Внутри скрипта есть настройки и доп инструкции. Для работы скрипт нужно перенести в корень дорвея. Скрипт можно переименовывать, если требуется скрыть его адрес от посторонних.

black-key.php - скрипт для чистки базы ключевиков. Удаляет строки по списку стоп слов. К доргену скрипт не относится и не является его частью. Может использоваться как самостоятельный скрипт. Построчный список стоп слов в кодировке utf-8 без bom прописать в blackkeys.txt. Ключевики построчно должны находиться в файле keys.txt также в utf-8 кодировке. Чистые ключевики будут записаны в goodkeys.txt. Скрипт работает медленно.

Базы синонимов.

  • База русских синонимов - 84426 шт. Идет в комплекте, находится в папке /syn/. Для применения в конфиге указать: $syndb = 'ru_1,ru_2,ru_3,ru_4';
  • База английских синонимов - 34659 шт. Идет в комплекте, находится в папке /syn/. Для применения в конфиге указать: $syndb = 'en_1,en_2';
  • База русских фейковых «синонимов» (синтаксически схожих слов) - 581798 шт. Скачать тут и распаковать в папку /syn/. Для применения в конфиге указать: $syndb = 'rufake_1,rufake_2,rufake_3,rufake_4,rufake_5,rufake_6,rufake_7,rufake_8,rufake_9,rufake_10, rufake_11,rufake_12,rufake_13,rufake_14,rufake_15,rufake_16,rufake_17,rufake_18,rufake_19,rufake_20';

Типы страниц на сайте.

  • / - главная страница с отображением последних страниц.
  • /news.html - алиас скрипта rssparser.php, если этот скрипт загружен.
  • /robots.txt - динамически генерирующийся из robots.php.
  • /contact.html - страница с контактной формой.
  • /rss.xml - рсс лента последних записей.
  • /sitemap.xml - карта сайта в xml формате.
  • /BingSiteAuth.xml - для подтверждения сайта в панеле вебмастера Бинг.
  • /news/ - страница категории (список категорий настраивается в конфиге).
  • /news/2.html - постраничная разбивка ссылок в категории.
  • /news/page-keyword-in-translate/ страница с контентом.
  • /news/page-keyword-in-translate/video/ видео галлерея по ключевику.
  • /news/page-keyword-in-translate/gallery/ фото галлерея по ключевику из скриншотов youtube.
  • /news/page-keyword-in-translate/images/ фото галлерея по ключевику из картинок из bing (можно отключить в конфиге).
  • /news/page-keyword-in-translate/vk/ текстовая страница по ключевику из записей найденных в контакте.

Реврайты и настройки для LigHTTPd.

$HTTP["url"] =~ "^/keywords.txt" {url.access-deny = (""),}
$HTTP["url"] =~ "^/contents/" {url.access-deny = (""),}
$HTTP["url"] =~ "^/keywords/" {url.access-deny = (""),}
$HTTP["url"] =~ "^/php/" {url.access-deny = (""),}
$HTTP["url"] =~ "^/syn/" {url.access-deny = (""),}
$HTTP["url"] =~ "^/conf/" {url.access-deny = (""),}
$HTTP["url"] =~ "^/data/" {url.access-deny = (""),}
server.error-handler-404 = "/404.php" 
url.rewrite-once = (
 "^/([^\.]+)/([0-9a-z-]+)/video/$" => "/video.php?category=$1&url=$2",
 "^/([^\.]+)/([0-9a-z-]+)/gallery/$" => "/gallery.php?category=$1&url=$2",
 "^/([^\.]+)/([0-9a-z-]+)/images/$" => "/images.php?category=$1&url=$2",
 "^/([^\.]+)/([0-9a-z-]+)/vk/$" => "/vk.php?category=$1&url=$2",
 "^/([^\.]+)/([0-9a-z-]+)/$" => "/page.php?category=$1&url=$2",
 "^/([^\.]+)/$" => "/index.php?category=$1",
 "^/([^\.]+)/([0-9]+)\.html$" => "/index.php?category=$1&url=$2",
 "^/([^\.]+)/index\.html$" => "/index.php?category=$1",
 "^/BingSiteAuth\.xml$" => "/BingSiteAuth.php",
 "^/sitemap\.xml$" => "/sitemap.php",
 "^/rss\.xml$" => "/rss.php",
 "^/contact\.html$" => "/contact.php",
 "^/robots\.txt$" => "/robots.php",
 "^/google([^\.]+)\.html$" => "/google.php?id=$1",
 "^/yandex_([^\.]+)\.html$" => "/yandex.php?id=$1",
 "^/wmail_([^\.]+)\.html$" => "/wmail.php?id=$1",
 "^/news\.html$" => "/rssparser.php",
)

Макросы для шаблона.

<?php echo $keyword; ?>
Ключевик страницы (один) с заглавной буквы, который был загружен при инсталяции дорвея или спаршенный из поисковых подсказок. Можно использовать его в мета title страницы вместо или вместе с <?php echo $title; ?>. Пример использования: <title><?php echo $title; ?> <?php echo $keyword; ?></title>.

 

<?php echo $title; ?>
Заглавие страницы (тематическое, иногда не очень тематическое). Парсится из Bing.com по ключевику. Можно использовать его в мета title страницы вместо или вместе с <?php echo $keyword; ?>. Пример использования: <h1><?php echo $title; ?></h1>.

 

<?php echo $keywords; ?>
Список тематических ключевиков. Парсится из поисковых подсказок Yahoo.com. Можно использовать в мета тегах keywords. Пример использования: <meta name="keywords" content="<?php echo $keywords; ?>" />

 

<?php echo $description; ?>
Краткое описание страницы. Парсится из снипетов Bing.com по ключевику. Можно использовать в мета теге description. Эти данные не синонимизируются. Пример использования: <meta name="description" content="<?php echo $description; ?>" />

 

<?php echo $canonical; ?>
Канонический урл текущей страницы. Для мета тегов например. Пример использования: <link rel="canonical" href="<?php echo $canonical; ?>" />

 

<?php echo $msvalidate; ?>
Мета тег (или несколько) для подтверждения сайта в Bing Webmaster Tools. На сайте будет в итоге выглядеть в виде: <meta name="msvalidate.01" content="F170FD8415FF8E35BB263FF57E96F793" />. Коды подтверждения прописывать в конфиге в $bingwmt = array(); В один аккаунт панели вебмастера можно добавлять до 1000 сайтов. Т.е. регаете аккаунт в бинге, добавляете один дорвей из пачки, смотрите его код подтверждения (он один на все сайты аккаунта), прописываете его в конфиге и добавляете все доры в панель, с подтверждением по мета тегу. Тег не обязательный, также можно подтверждать через BingSiteAuth.xml, который динамический, нужно только прописать в конфиг код подтверждения.

 

<ul>
<?php foreach ($category as $caturl => $catname) { ?>
<li><a href="/<?php echo $caturl; ?>/"><?php echo $catname; ?></a></li>
<?php } ?>
</ul>

Список ссылок на категории. Можно использовать как меню сайта.

 

<?php echo $sitename; ?>
Название сайта из конфига. Если имя сайта в конфиге пустое - будет взят рандомный (первый по счету из базы) ключевик.

 

<?php if ($type != 'index') { ?>
<ol class="breadcrumb">
<?php foreach ($breadcrumbs as $breadcrumb_url => $breadcrumb_title) { ?>
<li itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><a href="<?php echo $breadcrumb_url; ?>" itemprop="url"><span itemprop="title"><?php echo $breadcrumb_title; ?></span></a></li>
<?php } ?>
<li class="active" itemscope itemtype="http://data-vocabulary.org/Breadcrumb"><span itemprop="title"><?php echo $keyword; ?></span></li>
</ol>
<?php } ?>

Хлебные крошки (готовый пример микроразметки).

 

<?php if (isset($page['date'])) echo 'Дата публикации: '.date('Y-m-d H:i', $page['date']); ?>
Вывод даты публикации текущей страницы. Отображается только на страницах с основным контентом (на главной и в категориях не отображается).

 

<?php echo $content; ?>
Основной контент страницы. Абзацы разделены тегом <p></p> с добавлением подзаглавий в тегах <h2></h2> <h3></h3> ... Выводится только на страницах с основным контентом, на остальных переменная пустая.

 

<?php if ($type == 'page' AND isset($youtube[0])) { ?>
<iframe width="100%" height="400" src="https://www.youtube.com/embed/<?php echo $youtube[0][0]; ?>" frameborder="0" allowfullscreen></iframe>
<p><a href="/<?php echo $get_category_url; ?>/<?php echo $get_page_url; ?>/video/">Еще видео на тему «<?php echo $keyword; ?>»</a></p>
<?php } ?>

Тематическое видео (1 видео с youtube) со ссылкой на страницу с большим количеством видео. Отображается только на страницах с основным контентом, на остальных переменная пустая.

 

<ul>
<?php foreach ($catlist as $cat) { ?>
<li><?php echo date('Y-m-d H:i',$cat['date']); ?> <a href="/<?php echo $cat['category']; ?>/<?php echo $cat['url']; ?>/"><?php echo $cat['title']; ?></a> (<a href="/<?php echo $cat['category']; ?>/"><?php echo $category[$cat['category']]; ?></a>)</li>
<?php } ?>
</ul>
<center><?php echo $link; ?></center>

Готовый код отображения списков ссылок на страницы. Отображается только на главной и в категориях. Также в данном цикле можно использовать (содержимое будет только когда контент страницы уже спаршен):
<?php echo $cat['description']; ?> - краткое описание,
<?php $cat['youtube'] = @json_decode($cat['youtube'], true); ?> <img src="https://i.ytimg.com/vi/<?php echo @$cat['youtube'][0][0]; ?>/hqdefault.jpg" /> - скриншот из видео,
<?php $cat['images'] = @json_decode($cat['images'], true); if (!isset($cat['images'][0])) {$cat['images'][0] = 'https://wmsn.biz/files/avatar.png';} ?> <img src="<?php echo @$cat['images'][0]; ?>" alt="" width="100" height="70" onerror="this.src='https://wmsn.biz/files/avatar.png'" /> - картинка.

 

<?php if ($type == 'page' AND isset($images[0])) { ?>
<img src="<?php echo $images[0]; ?>" class="img-responsive" />
<p><a href="/<?php echo $get_category_url; ?>/<?php echo $get_page_url; ?>/images/">«<?php echo $keyword; ?>» в картинках</a>. <a href="/<?php echo $get_category_url; ?>/<?php echo $get_page_url; ?>/gallery/">Еще картинки на тему «<?php echo $keyword; ?>»</a>.</p>
<?php } ?>

Отображение одной тематической картинки. Отображается только на страницах с основным контентом. Если в конфиге отключена ($disableimages = 'yes') вторая галлерея (она пока не совсем доделана и не оптимизирована), то из этого кода нужно убрать ссылку: <a href="/<?php echo $get_category_url; ?>/<?php echo $get_page_url; ?>/images/">«<?php echo $keyword; ?>» в картинках</a>. 

 

<?php if ($type == 'video') {foreach ($youtube as $youtube1) { ?>
<h4><?php echo $youtube1[1]; ?></h4>
<iframe width="100%" height="400" src="https://www.youtube.com/embed/<?php echo $youtube1[0]; ?>" frameborder="0" allowfullscreen></iframe>
<?php }} ?>

Список видео с youtube c их названиями. Отображается только на странице списка видео.

 

<?php if ($type == 'gallery') {foreach ($youtube as $youtube1) { ?>
<span itemscope itemtype="http://schema.org/ImageObject">
<h4 itemprop="name"><?php echo $youtube1[1]; ?></h4>
<img src="https://i.ytimg.com/vi/<?php echo $youtube1[0]; ?>/hqdefault.jpg" itemprop="contentUrl" class="img-responsive" title="<?php echo $youtube1[1]; ?>" alt="<?php echo $youtube1[1]; ?>" />
</span>
<?php }} ?>

Картинки из скриншотов роликов с youtube. Отображается только на странице списка картинок.

 

<?php if ($type == 'images') {foreach ($images as $images1) { ?>
<span itemscope itemtype="http://schema.org/ImageObject">
<img src="<?php echo $images1; ?>" itemprop="contentUrl" class="img-responsive" title="<?php echo $images1; ?>" alt="" />
</span>
<?php }} ?>

Тематические картинки, спаршенные из Bing.com. Отображается только на странице списка картинок.

 

<?php bojan_start(); ?>
{В настоящее время|Сегодня|Сейчас} с {очень|весьма|крайне} {cкорым|быстрым|борзым|живым} {развитием|онтгенезом|онтогонией} {науки|доктрины|учения} и {техники|техучебы|техноинститута}, {базовую|базисную|основную} {миссию|задачу|делегацию|роль|функцию|цель|организацию} {совершают|выполняют|исполняют} {знания|багаж знаний|запас знаний} и информация. Именно {образование|обучение|учение} закладывает в {человека|людей|толпу} {знания|багаж знаний|запас знаний} и информацию.
<?php bojan_end(); ?>

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

 

<?php if ($type == 'page') { ?>
<h1><?php echo $page['m1']; ?></h1>
<?php echo $page['m2']; ?>
<?php } ?>

Использование мультикеев. В $type == 'page' вместо page может быть: images, gallery, video, vk. Это определяет на каком типе страниц отображать этот блок с мультикеями. Вместо m1 один из 15 мультикеев, т.е. m1 ... m15.

 

Прочие не обязательные хаки и макросы в шаблонах.

Гео оптимизация дорвея (гео мета данные, гео микроразметка, гео субдомены). Использовать при создании дорвеев по схеме: имя субдомена = город из скрипта /php/geo-ru.php (адрес дора делать вида: arhangelsk.domen.ru). В примере предоставлены основные города России (/php/geo-ru.php) и США (/php/geo-en.php). Для использования: в самом начале шаблона дорвея вставить:

<?php require_once('php/geo-ru.php'); ?>

Дальше в шаблоне можно использовать 3 дополнительных макроса:

<?php echo $geo_title; ?> - выводит текст типа "в Городе" (в Москве), можно использовать в заглавии: <title><?php echo $title; ?> <?php echo $geo_title; ?></title> или так: <h1><?php echo $title; ?><?php echo $geo_title; ?></h1>

<?php echo $geo_meta; ?> - выводит гео мета теги. Вставлять этот код соответственно в район мета тегов.

<?php echo $geo_address; ?> - выводит адрес с микроразметкой. Вставлять в контент (например в footer).

Если при этом зайти на дорвей, домен/субдомен которого не гео (не в списке субдоменов, указанных в массиве в geo-ru.php), то эти 3 гео макроса будут пустыми и не заметными.

 

<?php if ($referer != '') { ?>
счетчик или рекламный код
<?php } ?>

Не выводить содержимое тем, кто пришел без реферрера (ботам). Примитивная защита чтоб что-то скрыть.

 

<?php
$extlink = array();
$linklocal = file('data/linklocal.txt');
shuffle($linklocal);
$linklocal = trim($linklocal[0]);
if (file_exists('contents/'.$linklocal.'.db')) {
$db_link = new SQLite3('contents/'.$linklocal.'.db');
$db_link->busyTimeout(1000);
$db_link->exec("PRAGMA journal_mode=WAL;");
if ($db_link) {
$linklist = $db_link->query("SELECT url, category, title FROM pages WHERE date < ".$time." ORDER BY date DESC LIMIT 50;"); // получаем последние 50 ссылок из базы
while ($echo = $linklist->fetchArray()) {
$extlink[] = '<a href="'.$httpscheme.'://'.$linklocal.'/'.$echo['category'].'/'.$echo['url'].'/">'.$echo['title'].'</a>';
}
shuffle($extlink); // перемешиваем ссылки
array_splice($extlink, 3); // урезаем количество ссылок до 3
echo implode(' | ', $extlink);
}
}
?>

Перелинковка локальных доров (но перелинковка дорвеев это не всегда хорошо). Список доменов у которых есть базы в папке contents прописать в linklocal.txt в построчном виде в формате dor2.ru. И вставить этот код в шаблон в то место, где будут выводиться ссылки.

 

<?php echo $geoinfo['country']['iso']; ?> - Двухбуквенный (ISO 3166) код страны посетителя (пример: RU). При $SxGeodat = 'SxGeo.dat' в конфиге - определяется только он. Остальные данные есть только при $SxGeodat = 'SxGeoCity.dat'.
<?php echo $geoinfo['country']['lat']; ?> - гео широта страны посетителя (пример: 42.75).
<?php echo $geoinfo['country']['lon']; ?> - гео долгота страны посетителя (пример: 19.25).
<?php echo $geoinfo['country']['name_ru']; ?> - название страны посетителя на русском языке (пример: Черногория).
<?php echo $geoinfo['country']['name_en']; ?> - название страны посетителя на английском языке (пример: Montenegro).
<?php echo $geoinfo['region']['name_ru']; ?> - название региона посетителя на русском языке (пример: Подгорица).
<?php echo $geoinfo['region']['name_en']; ?> - название региона посетителя на английском языке (пример: Podgorica).
<?php echo $geoinfo['region']['iso']; ?> - ISO код региона посетителя (пример: ME-16).
<?php echo $geoinfo['city']['lat']; ?> - гео широта города посетителя (пример: 42.44111).
<?php echo $geoinfo['city']['lon']; ?> - гео долгота города посетителя (пример: 19.26361).
<?php echo $geoinfo['city']['name_ru']; ?> - название города посетителя на русском языке (пример: Подгорица).
<?php echo $geoinfo['city']['name_en']; ?> - название города посетителя на английском языке (пример: Podgorica).

Еще примеры для использования в шаблонах.

Подтверждение дорвея в панелях вебмастера Bing, Google, Yandex, Mail.

https://webmaster.mail.ru/ - добавляете дорвей, выбираете пункт «Разместить HTML-файл» и жмете «Подтвердить». Никаких файлов при этом заливать на дорвей не нужно, они сами сгенерятся динамически. Подтвердить дорвей можно только в одной панели webmaster.mail.ru, повторное добавление в другую панель webmaster.mail.ru уже не получится.

https://webmaster.yandex.ru/sites/ - добавляете дорвей, выбираете пункт «HTML-файл» и жмете «Проверить». Никаких файлов при этом заливать на дорвей не нужно, они сами сгенерятся динамически.

https://www.google.com/webmasters/ - добавляете дорвей, оставляете выбор по умолчанию «Размещение HTML-файла на сервере» и в строке «Подтвердите успешное завершение загрузки, перейдя по ссылке» обязательно кликаете на предложенную ссылку и только потом жмете «Подтвердить». Никаких файлов при этом заливать на дорвей не нужно, они сами сгенерятся динамически. Подтвердить дорвей можно только в одной панели google.com/webmasters, повторное добавление в другую панель google.com/webmasters уже не получится.

http://www.bing.com/toolbox/webmaster/ - тут все сложнее: добавляете дорвей, копируете код типа F170FD8415FF8E35BB263FF57E96F793 из строки <meta name="msvalidate.01" content="F170FD8415FF8E35BB263FF57E96F793" /> и записываете его в конфиг дора в массив $bingwmt и потом уже подтверждаете владение дорвеем. Код одинаковый для всех сайтов аккаунта, потому в этот аккаунт можно будет добавить до 1000 дорвеев. Подтверждать владение сайта через выбор BingSiteAuth.xml (он динамический, коды подтверждения возьмутся из конфига).

Состав файлов доргена и их предназначение.

  • additional scripts - директория с дополнительными скриптами, заливать на сервер ее не надо, скрипты которые в ней для работы надо переносить в корень дорвея.
  • conf - директория для персональных конфигов отдельных доменов, конфиги туда складывать в виде dor2.ru.php
  • contents - директория в которой будут создаваться sqlite базы с расширением .db для дорвеев. Если нужно переустановить дорвей - просто удалите соответствующий файл базы данных.
  • data - пользовательская директория, там хранится общий конфиг, также можно сохранять там прочие служебные файлы.
  • keywords - директория с .txt файлами ключевиков, которые используются при инсталяции дорвея.
  • php - директория с скриптами и файлами доргена, при выходе новых версий доргена смело можно перезаписывать содержимое.
  • syn - директория с базами синонимов.
  • .htaccess
  • 404.php - отвечает за содержимое 404 ошибки.
  • BingSiteAuth.php - для подтверждения сайта в панеле вебмастера Bing.
  • changelog.txt - информация об ихменениях и новостях новых версий доргена.
  • contact.php - страница контактов и форма обратной связи.
  • gallery.php - фотогалерея на базе скриншотов видео ютуба.
  • google.php - для подтверждения сайта в панеле вебмастера Google.
  • images.php - фотогалерея на базу картинок из Bing.
  • index.php - скрипт категорий и главной страницы дорвея.
  • info.html - текущий файл инструкции.
  • keywords.txt - общий файл ключевиков.
  • page.php - скрипт отдельных страниц.
  • post.php - скрипт редиректа из шаблона /data/tpl-modal.txt.
  • robots.php - генерирует robots.txt
  • rss.php - лента последних записей rss.xml
  • sitemap.php - карта сайта sitemap.xml
  • video.php - видео галерея из youtube роликов.
  • vk.php - страница на контенте из вконтакта.
  • away.php - страница редиректа на вконтакт.
  • wmail.php - для подтверждения сайта в панеле вебмастера mail.ru
  • yandex.php - для подтверждения сайта в панеле вебмастера yandex.
  • data/conf.php - общий конфиг для пачки дорвеев.
  • data/tpl.txt - дефолтный шаблон дорвея.
  • data/linklocal.txt - список доменов, на которые ссылаться в локальной перелинковке.
  • data/list.txt - список урлов, на которые редиректить если не создан дорвей.
  • data/proxy.txt - список SOCKS5 прокси для парсинга.
  • data/robots.txt - шаблон файла robots.txt.
  • data/tpl-modal.txt - шаблон с модальным окном.
  • data/tpl4.txt - шаблон на bootstrap 4.
  • data/tpl4shop.txt - шаблон на bootstrap 4 под товарные дорвеи.
  • admin.php - api интерфейс, инструкция в /php/api/info.txt.

Прочие нюансы.

1) При заходе людей или ботов на rss ленту или карту сайта происходит их пинг в поисковые системы. RSS лента пингуется в адреса указанные в конфиге с периодичностью не чаще чем указано в конфиге. XML карта сайта пингуется не чаще 1 раза в сутки в google и bing. Чтобы увеличить частоту посещений поисковых ботов xml карты сайта и rss ленты - желательно поставить из шаблона на них ссылки вида: <a href="/rss.xml">RSS feed</a> <a href="/sitemap.xml">sitemap.xml</a>. А также в мета теги добавить указание на rss ленту: <link rel="alternate" type="application/rss+xml" title="<?php echo $sitename; ?>" href="<?php echo $httpscheme; ?>://<?php echo $host; ?>/rss.xml" />

2) В файле .htaccess есть большой список заблокированных ботов, возможно вам некоторые боты будут нужны, не забудьте удалить USER AGENTы нужным вам роботов.

3) Размещайте сервер с дорвеями географически ближе к тем сайтам, с которых будет идти парсинг контента. Т.е. если сайт под США, то и его доноры скорее всего будут хоститься в США. Это может сэкономить 1-2 секунды на парсинг страницы. Если же делать сайт на китайском, а разместить его в европе, то парсинг контента будет заметно медленнее, т.к. большинство сайтов с китайскими текстами будут размещаться в Китае и Тайване, откуда идут в европу плохие и медленные каналы.

4) При появлении в папке с базами /contents/ файлов вида *.db-shm и *.db-wal не удаляйте их! Это временные файлы sqlite. Они должны сами исчезать. Если такие файлы появляются и растут по 5 мб и выше и по долгу не исчезают, скорее всего диск сервера тормозит и не справляется с нагрузкой. Чтоб временно решить проблему - перезагрузите сервер, файлы должны исчезнуть. Если эти файлы удалить, то придется и всю базу .db удалить, т.к. она будет битая и нагрузка на диск от битой базы станет еще больше.

5) В скрипт away.php добавьте код кликандера, если пойдет траф на страницы с вконтактовским копипастом, то кликандер в этом места принесет хороший профит.

6) Парсинг вконтакта бывает глючит и отдает пустой ответ, будем считать это не багом, а фичей, не всем же страницам быть гипернаполненными, пустые страницы - это доп разнообразие.

7) Если зайти на /sitemap.xml и /rss.xml - это ускорит информирование гугла и бинг о вашем доре.

Официальная страница доргена: https://wmsn.biz/dorgen.php (последние новости и актуальное описание).

Подпишитесь на информирование о выходе новых версий доргена Wmsn Doorway Generator.