Наверх

Автоматизиуем расстановку ссылок в анкорах для SAPE

Недавно знакомый SEO-шник попросил помочь облегчить работу с биржей ссылок SAPE. Для тех, кто не знает, объясню проблему:
В SAPE прежде чем начать закупку ссылок, нужно добавить список текстов ссылок. В текстах нужно выделить, какая часть текста является ссылкой, например, вот так:

Предлагаем #a#автобусные экскурсии#/a# по Москве

тогда ссылкой будет текст «автобусные экскурсии».

Вот он и попросил меня написать скриптик, который будет выделять нужное словосочетание в нескольких текстах сразу, чтобы можно было их пакетно добавить в SAPE.

Скрипт я разместил по адресу http://blog.ilyaut.ru/sape/, уже можно пользоваться. Для тех, кто хочет разместить такой скрипт у себя на сайте, привожу код формы и сниппета.

Форма

[[!anchorGenerator]]
<form class="form-horizontal" action="[[~[[*id]]]]" method="post">
<fieldset>

<!-- Form Name -->
<legend>Генератор анкоров для SAPE</legend>

<!-- Text input-->
<div class="control-group [[+error.anchor:notempty=`error`]]">
  <label class="control-label" for="anchor" style="width: 60px;">Запрос</label>
  <div class="controls" style="margin-left: 70px;">
    <input id="anchor" name="anchor" type="text" placeholder="автобусные экскурсии"
     autocomplete="off" value="[[+anchor]]" class="input-xxlarge" style="width: 98%;">
    
  </div>
</div>

<!-- Textarea -->
<div class="control-group [[+error.items:notempty=`error`]]">
  <label class="control-label" for="items" style="width: 60px;">Анкоры</label>
  <div class="controls" style="margin-left: 70px;">                     
    <textarea id="items" name="items" style="width: 98%;">[[+items]]</textarea>
  </div>
</div>

<!-- Button -->
<div class="control-group">
  <div class="controls" style="text-align: center; margin-left: 70px;">
    <button id="start" name="start" value="1" class="btn btn-primary">Старт</button>
  </div>
</div>

</fieldset>
</form>

[[+result]]

Сниппет anchorGenerator

<?php
if (!$_POST['start']) return;
foreach ($_POST as $key => $val) $modx->setPlaceholder($key,$val);
$error = false;
if (!$_POST['items']) {
    $modx->setPlaceholder('error.items','1');
    $error = true;
}
if (!$_POST['anchor']) {
    $modx->setPlaceholder('error.anchor','1');
    $error = true;
}
if ($error) return;

$anchor = $_POST['anchor'];
$items = $_POST['items'];
$anchorLen = strlen($anchor);

$items = explode("\n",$items);
foreach ($items as $key => $item) {
    $item = str_replace('  ', ' ', $item);
    $pos = strpos(mb_strtolower($item, 'UTF-8'), mb_strtolower($anchor, 'UTF-8'));
    if ($pos === false) {
        $item = '<span class="text-error">'.$item.'</span>';
        $items[$key] = $item;
        continue;
    }
    $item = substr($item, 0, $pos+$anchorLen).'#/a#'.substr($item, $pos+$anchorLen);
    $item = substr($item, 0, $pos).'#a#'.substr($item, $pos);
    $items[$key] = $item;
}
$output = implode("\n",$items);
foreach ($_POST as $key => $val) $modx->setPlaceholder($key,$val);
$modx->setPlaceholder('result','<hr>'.$output);


4 комментария

  1. liza 22 июня 2014, 22:45 # 0
    здрасти
    может вы знаете как через htaccess укоротить адрес или хотя бы как убрать чужой домен в адресе, приобрел движок парсит музыку с открытых источников и иногда генерируются адреса в конце домен, адреса с чужим доменом например вот такой генерируется адрес, видимо потому что в файле названия есть домен
    htt://site.com/music/load/Lorde-Royals_[www.music.com]
    заранее благодарю
    1. Илья Уткин 23 июня 2014, 06:27 # 0
      Не знаю… Скорее всего, через .htaccess это не исправишь — тут надо изменять ваш движок, добавив к его коду поиск и устранение доменов из названий.
      1. liza 23 июня 2014, 06:56 # 0
        есть хоть какойнеть пример кода на пхп сделать, как он хоть выглядит?
        1. Илья Уткин 23 июня 2014, 07:01 # 0
          Неа, нет такого примера… Все индивидуально.

    Авторизация

    через сервис Loginza:


    Шаблоны MODX

    1 2 Дальше »

    Объектная
    модель
    MODX