Machines should work, people should think

Захотелось мне к ссылкам добавить иконки. В пределах своего сайта – такие [internal link icon], а ко внешним ссылкам – такие [external link icon].
Ну всё понятно, делаем картинки и добавляем классы в стиль

.linkext {
    background:transparent url(/files/images/linkext.png) no-repeat scroll right center;
    padding:2px 15px 2px 0px;
}

.linkint {
    background:transparent url(/files/images/linkint.png) no-repeat scroll right center;
    padding:2px 15px 2px 0px;
}

А дальше? Неужели сидеть и редактировать все странички, добавляя нужные классы к ссылкам? Вспомним “работать должны машины, а люди должны думать”. Особенно приятно, когда кто-то уже подумал 😉 и создал для WordPress модуль, заменяющий “на лету” текст страницы, используя регулярные выражения (regular expressions).
При наличии такого инcтрумента самому думать нужно мало, так как все внутренние ссылки я сразу делал относительными, без http://.
Остаётся установить модуль re.place и записать в него два простых правила. Одно добавляет class="linkext" во внешние ссылки, заменяя

<a *href=("http[^>]*)>

на

<a class="linkext" href=\1>

а второе – добавляет class="linkint" во внутренние ссылки заменой

<a *href=([^>]*)>

на

<a class="linkint" href=\1>

Чтобы обе замены работали правильно, нужно второму правилу дати больший номер порядка исполнения (order), тогда после выполнения первого правила внешние ссылки уже будут иметь класс и не будут распознаны образцом <a *href=([^>]*)>.
В образцах есть символы < и >, поэтому для правильного отображения списка правил не забудьте в настройках re.place в List view options выставить Escape HTML characters.

Leave a Reply

[flagcounter image]