Блог Александра Башкирова

ИТ и бизнес, компьютеры и ПО, фото, программирование и просто мысли…

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

Плагин для WordPress: случайная фраза

Рубрика: WordpressПросмотров: 608

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

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

I) Оригинальная версия

  1. Скачайте этот архив (без виджета) или этот (с виджетом) с плагином
  2. Распакуйте архив во временную папку. Архив содержит 2 файла: phrase.php (сам плагин) и phrase.txt (файл с фразами).
  3. В папке, где установлен Wordpress, в подпапке /wp-content/plugins создаете папку с произвольным названием, например 'wp-alib-phrase'
  4. В только что созданную папку переписываете файл phrase.php из временной папки
  5. В корень сайта переписываете файл phrase.txt из архив
  6. Наполняте файл phrase.txt нужными фразами, ненужные удаляете
  7. Активируете плагин Alib.Spb Random Phrase через панель управлени
  8. В то место на конкретной страничке, куда надо вывести фразу, пишете {alib_random_phrase} - эта переменная будет заменена на случайную фразу из файла.

Настройка и замечания.

  1. Если требуется, чтобы этот файл phrase.txt лежал в другом месте, то открываете файл phrase.php любым текстовым редактором и изменяете переменную $alib_random_phrase_fname. Имете в виду, что путь пишется абсолютный, то есть запись $_SERVER['DOCUMENT_ROOT'].'/phrase.txt' говорит о том, что файл надо искать в корне, а $_SERVER['DOCUMENT_ROOT'].'/wp-content/plugins/phrase/phrase.txt' - в папке /wp-content/plugins/phrase
  2. Файл phrase.txt должен быть закодирован в UTF-8 без BOM. Если этого не сделать, то на выводе будут одни "квадраты".
  3. Пустые строки в файле phrase.txt при обработке игнорируются.
  4. Плагин намеренно сделан простым - для того, чтобы вывод можно было "обернуть" в html теги, вписать в любое место и т.д. Никаких админок, виджетов и проч. не планируется - времени нет и смысла не вижу :)

UPD (5.11.2010):  Можно использовать альтернативный способ вызова плагина: прямой вызов функции. В этом случае там, где надо вывести случайную фразу, пишем:

<?php print alib_random_phrase_back('{alib_random_phrase}'); ?>Основной способ рекомендуется использовать в постах, и вообще в зоне видимости the_content - см. Wordpress Codex. Второй способ позволяет вывести случайную фразу вообще где угодно, хоть в хидере. Но! Он представляет собой достаточно устойчивый "костыль", так как основывается на том факте, что WP сначала загружает все плагины, а потом манипулирует шаблоном. Стоит разработчикам WP поменять этот механизм - и альтернативный способ работать перестанет.

UPD (29.04.2011): Сделал виджет. Если будете использовать версию с виджетом, то старую версию (без виджета) надо предварительно удалить.

Удачного использования!

II) Версия плагина от Владимира Кокарева.

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

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

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru livejournal.ru yandex.ru

Подписаться на новые записи по RSS

Комментариев: 38

  1. Привет. А у вас нет случайно плагина - чтобы нажал на кнопку и получил случайную фразу? Вроде "фраза дня для вас".

  2. 2010-09-29 в 09:04:55 | Alexander Bashkirov

    Элементарно :)

    Делаете страничку, на нее вешаете вывод случайной фразы, на все остальные странички вешаете ссылку "Фраза для вас" - и вуаля:) "усе готово"...

  3. так. попробую сейчас

  4. Файл phrase.txt должен быть закодирован в UTF-8 без BOM - а это что значит? просто в блокноте сохранить не покатит?

  5. 2010-09-29 в 09:33:30 | Alexander Bashkirov

    Скачайте Notepad++ - http://notepad-plus-plus.org/ он умеет делать нужную перекодировку ("Кодировки" - "Кодировать в UTF-8 без BOM").

    Виндовый блокнот умеет читать такие файлы, но вот сохраняет по умолчанию в Ansi :(

  6. 2010-09-29 в 09:34:36 | Alexander Bashkirov

    Кстати, можете просто виндовым блокнотом отредактировать phrase.txt который идет в комплекте с плагином.

  7. спасибо, все получилось! но неужели нельзя сделать так, чтобы ответ оказывался на той же странице где и кнопка для вопроса?

  8. 2010-09-29 в 14:20:38 | Alexander Bashkirov

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

  9. Отличный плагин! Пользуюсь с момента его написания :) Только надо не лениться наполнять фразами Файл phrase.txt (это про себя). Спасибо автору!

  10. 2010-10-06 в 09:27:32 | Alexander Bashkirov

    Пожалуйста :)

  11. Блин, не работает. В одиночную запись вставляю, при просмотре вижу только код {alib_random_phrase}

    Где копать подскажите?

  12. Путь прописал /wp-content/plugins/phrase/phrase.txt в файле phrase.php, файл phrase.txt соответственно лежит в /wp-content/plugins/phrase/

    Файлы правил Notepad++

  13. Вобщем копаю дальше. Фраза выводится при создании поста на блоге, когда вставляешь {alib_random_phrase} код в запись. А как вывести фразу например в single.php, чтобы она автоматом во всех опубликованных постах была? Не ковырять ведь теперь все записи. Подскажите пожалуйста.

  14. 2010-11-05 в 20:38:38 | Alexander Bashkirov

    Dimko,

    Вызовите функцию плагина alib_random_phrase_back($content) в нужном вам месте single.php следующим образом:

    Должно помочь.

  15. Alexander спасибо Вам за то что Вы сделали! Помогло, все работает как нужно! Пробел только убрал между < и ? и заработало. Спасибо еще раз!

  16. 2010-11-05 в 22:49:17 | Alexander Bashkirov

    Пробел - это, видимо, Wordpress-защита от взлома )))

    Удачного использования :)

    PS обновил пост - описал прямой вызов.

  17. Александр, родился еще один вопрос: в постах цитата выводится

    цитата
    таким образом. Как вывести цитату в моем случае и возможно ли это? Чтобы фраза была оформлена также как в блоге оформлены все цитаты в постах. Спасибо!

  18. 2010-11-06 в 13:37:04 | Alexander Bashkirov

    Все цитаты на WP-блоге штатно оформляются при помощи тега <blockquote&rt;

    Фразы плагин "отдает" без какой-либо правки и "оборачивания" в теги.

    Соответственно, отсюда есть как минимум 3 способа оформления цитаты так, как Вам надо:

    1. заключить цитату в тег <blockquote>, например так:

    <blockquote>цитата</blockquote> (самый правильный в Вашем случае способ) - это можно сделать в любом месте, так как CSS распространяется на всю область body в html

    2. В файле стилей (обычно, но не обязательно style.css в папке темы) приписать к blockquote через запятую класс тега, который "оборачивает" Вашу цитату. Например, цитата выглядит так:

    <span class='bbb'>Цитата</span>

    В файле стилей (взял из темы classiс определено:

    blockquote {

    border-left: 5px solid #ccc;

    margin-left: 1.5em;

    padding-left: 5px;

    }

    Дописываете класс, получается:

    blockquote, bbb {

    border-left: 5px solid #ccc;

    margin-left: 1.5em;

    padding-left: 5px;

    }

    3. "Обернуть" в <blockquote> все фразы в файле (самый неправильный способ)

    PS дайте, пожалуйста, ссылку на Ваш блог - интересно посмотреть, как "оно" работает )))

  19. Alexander, именно через

    не получается это сделать. На выходе ничего не меняется. Что с
    , что без
    , одно и тоже ((

    Сам блог тут

  20. И хотелось бы вывести эти фразы либо обрамленные рамкой, либо в виде цитат с другим фоном

  21. 2010-11-06 в 16:51:05 | Alexander Bashkirov

    Тогда самое простое (и самое неоптимальное с точки зрения удобства), что можно придумать - пишете там, где нужна цитата:

    <span style='border:1px solid #ccc; font-color:#0000b0; background-color: #ddd;'>

    <?php print alib_random_phrase_back('{alib_random_phrase}'); ?>

    </span>

    Соответственно, в style пишете CSS атрибуты - их гарантированно никто не перекроет (так как написанные таким образом атрибуты имеют для данного элемента максимальный приоритет при интерпретации браузером)

  22. Не вышел каменный цветок учитель )) Ошибка возникает такая, что страница вообще не открывается.

  23. Parse error: syntax error, unexpected '{' in бла бла бла/single.php on line 24

    На 24 линии как раз код этот

  24. Действовал согласно Ваших рекомендаций в письме, и все выглядит теперь в лучшем виде!

    Александр, большое Вам человеческое Спасибо за оказанную помощь!

  25. 2010-11-10 в 10:40:49 | Alexander Bashkirov

    Рад был помочь :)

  26. 2011-01-25 в 21:51:39 | Владимир

    Дружище, а можно сделать, чтоб была "фраза дня", т.е. в течении дня показывалась одна и та же?

  27. 2011-01-25 в 23:21:06 | Владимир

    Спасибо за плагин, доработал до "фразы дня" через date("z")

  28. 2011-01-25 в 23:42:05 | Alexander Bashkirov

    Не успел я ответить :)

    Пожалуйста!

    Владимир, пришлите плагин, если не сложно - выложу и Вашу версию (с указанием ссылки на автора) - может, кому потребуется?

  29. Спасибо за плагин.

    Вопрос: Работает только в постах, а в Подвале не выполняется PHP. Для того чтобы работал PHP, стоит плагин "Exec-PHP". Подскажите, плиз, что нужно сделать, чтобы и в футере ваш плагин работал.

  30. 2011-03-30 в 14:30:09 | Alexander Bashkirov

    Странно. Подвал - обычный php файл, где работают все функции php.

    Попробуйте написать в подвале что-то типа этого: - должно заработать.

  31. 2011-04-03 в 16:12:12 | Любаша ? Персиковое счастье ?

    Здравствуйте! Скажите, пожалуйста, а можно ли сделать вывод случайных фраз в виджете? Пробовала прописывать и (в этом случае просто пустое место в виджете отображает) и {alib_random_phrase} (в этом случае просто отображает эту фразу обычным текстом).

    Если можно через виджет - подскажите, пожалуйста, как! А то все перепробовала, не получается =(

  32. 2011-04-03 в 16:43:59 | Любаша ? Персиковое счастье ?

    решила проблему с помощью плагина PHP Code Widget

    Теперь код спокойно вставился в виджет и отображается, как надо. Осталось покопаться с настройками - чтобы выводилось не только правильно, но и красиво!

    Спасибо Вам за плагин =)

  33. 2011-04-03 в 19:37:05 | Alexander Bashkirov

    Пожалуйста :)

    ...сделать, что ли виджет? :)

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

  35. 2011-04-08 в 09:46:31 | Alexander Bashkirov

    Поставил в планы :)

  36. Мой wordpress установлен в поддиректории, не в корневой папке сервера, в результате $_SERVER['DOCUMENT_ROOT'] - не срабатывает как корневая директория блога. Пришлось дописывать папки после $_SERVER['DOCUMENT_ROOT'], чтобы указать скрипту поддиректорию, в которой установлен wordpress, ибо я новичок и не знаю как домашнюю директорию wordpress указать. Разработчики, есть идеи?

  37. Разобрался, надо $_SERVER['DOCUMENT_ROOT'] заменить на ABSPATH, итого строка получается:

    $alib_random_phrase_fname = ABSPATH.'phrase.txt';

    Так все работает и для поддиректории...

  38. 2011-04-29 в 10:58:46 | Alexander Bashkirov

    Сделал виджет. Ссылка - в п.1 пп "Оригинальная версия". Если будете использовать версию с виджетом, то старую версию (без виджета) надо предварительно удалить.

Оставьте комментарий!

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

(войти без комментирования)

Имя и сайт используются только при регистрации

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email. При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д., а также подписку на новые комментарии.

(обязательно)

Дизайн от: Templates Next | Адаптация d51x