Плагин для WordPress: случайная фраза
Буквально за час набросал для знакомого плагин, выводящий случайную фразу. Получилось просто до безобразия... решил поделиться.
Итак, если вы у себя на сайте хотите сделать вывод случайной фразы, то:
I) Оригинальная версия
- Скачайте этот архив (без виджета) или этот (с виджетом) с плагином
- Распакуйте архив во временную папку. Архив содержит 2 файла: phrase.php (сам плагин) и phrase.txt (файл с фразами).
- В папке, где установлен Wordpress, в подпапке /wp-content/plugins создаете папку с произвольным названием, например 'wp-alib-phrase'
- В только что созданную папку переписываете файл phrase.php из временной папки
- В корень сайта переписываете файл phrase.txt из архив
- Наполняте файл phrase.txt нужными фразами, ненужные удаляете
- Активируете плагин Alib.Spb Random Phrase через панель управлени
- В то место на конкретной страничке, куда надо вывести фразу, пишете {alib_random_phrase} - эта переменная будет заменена на случайную фразу из файла.
Настройка и замечания.
- Если требуется, чтобы этот файл 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
- Файл phrase.txt должен быть закодирован в UTF-8 без BOM. Если этого не сделать, то на выводе будут одни "квадраты".
- Пустые строки в файле phrase.txt при обработке игнорируются.
- Плагин намеренно сделан простым - для того, чтобы вывод можно было "обернуть" в 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. В остальном - все то же самое (установка). Ссылка для загрузки.
Две версии плагина (моя и Владимира) будут конфликтовать - поэтому выбирайте ту, что вам больше подходит.







Комментариев: 38
Привет. А у вас нет случайно плагина - чтобы нажал на кнопку и получил случайную фразу? Вроде "фраза дня для вас".
Элементарно :)
Делаете страничку, на нее вешаете вывод случайной фразы, на все остальные странички вешаете ссылку "Фраза для вас" - и вуаля:) "усе готово"...
так. попробую сейчас
Файл phrase.txt должен быть закодирован в UTF-8 без BOM - а это что значит? просто в блокноте сохранить не покатит?
Скачайте Notepad++ - http://notepad-plus-plus.org/ он умеет делать нужную перекодировку ("Кодировки" - "Кодировать в UTF-8 без BOM").
Виндовый блокнот умеет читать такие файлы, но вот сохраняет по умолчанию в Ansi :(
Кстати, можете просто виндовым блокнотом отредактировать phrase.txt который идет в комплекте с плагином.
спасибо, все получилось! но неужели нельзя сделать так, чтобы ответ оказывался на той же странице где и кнопка для вопроса?
Дайте ссылку на сайт, где готовая работа - может быть, что-нибудь и придумаю.
Отличный плагин! Пользуюсь с момента его написания :) Только надо не лениться наполнять фразами Файл phrase.txt (это про себя). Спасибо автору!
Пожалуйста :)
Блин, не работает. В одиночную запись вставляю, при просмотре вижу только код {alib_random_phrase}
Где копать подскажите?
Путь прописал /wp-content/plugins/phrase/phrase.txt в файле phrase.php, файл phrase.txt соответственно лежит в /wp-content/plugins/phrase/
Файлы правил Notepad++
Вобщем копаю дальше. Фраза выводится при создании поста на блоге, когда вставляешь {alib_random_phrase} код в запись. А как вывести фразу например в single.php, чтобы она автоматом во всех опубликованных постах была? Не ковырять ведь теперь все записи. Подскажите пожалуйста.
Dimko,
Вызовите функцию плагина alib_random_phrase_back($content) в нужном вам месте single.php следующим образом:
Должно помочь.
Alexander спасибо Вам за то что Вы сделали! Помогло, все работает как нужно! Пробел только убрал между < и ? и заработало. Спасибо еще раз!
Пробел - это, видимо, Wordpress-защита от взлома )))
Удачного использования :)
PS обновил пост - описал прямой вызов.
Александр, родился еще один вопрос: в постах цитата выводится
таким образом. Как вывести цитату в моем случае и возможно ли это? Чтобы фраза была оформлена также как в блоге оформлены все цитаты в постах. Спасибо!Все цитаты на 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 дайте, пожалуйста, ссылку на Ваш блог - интересно посмотреть, как "оно" работает )))
Alexander, именно через
И хотелось бы вывести эти фразы либо обрамленные рамкой, либо в виде цитат с другим фоном
Тогда самое простое (и самое неоптимальное с точки зрения удобства), что можно придумать - пишете там, где нужна цитата:
<span style='border:1px solid #ccc; font-color:#0000b0; background-color: #ddd;'>
<?php print alib_random_phrase_back('{alib_random_phrase}'); ?>
</span>
Соответственно, в style пишете CSS атрибуты - их гарантированно никто не перекроет (так как написанные таким образом атрибуты имеют для данного элемента максимальный приоритет при интерпретации браузером)
Не вышел каменный цветок учитель )) Ошибка возникает такая, что страница вообще не открывается.
Parse error: syntax error, unexpected '{' in бла бла бла/single.php on line 24
На 24 линии как раз код этот
Действовал согласно Ваших рекомендаций в письме, и все выглядит теперь в лучшем виде!
Александр, большое Вам человеческое Спасибо за оказанную помощь!
Рад был помочь :)
Дружище, а можно сделать, чтоб была "фраза дня", т.е. в течении дня показывалась одна и та же?
Спасибо за плагин, доработал до "фразы дня" через date("z")
Не успел я ответить :)
Пожалуйста!
Владимир, пришлите плагин, если не сложно - выложу и Вашу версию (с указанием ссылки на автора) - может, кому потребуется?
Спасибо за плагин.
Вопрос: Работает только в постах, а в Подвале не выполняется PHP. Для того чтобы работал PHP, стоит плагин "Exec-PHP". Подскажите, плиз, что нужно сделать, чтобы и в футере ваш плагин работал.
Странно. Подвал - обычный php файл, где работают все функции php.
Попробуйте написать в подвале что-то типа этого: - должно заработать.
Здравствуйте! Скажите, пожалуйста, а можно ли сделать вывод случайных фраз в виджете? Пробовала прописывать и (в этом случае просто пустое место в виджете отображает) и {alib_random_phrase} (в этом случае просто отображает эту фразу обычным текстом).
Если можно через виджет - подскажите, пожалуйста, как! А то все перепробовала, не получается =(
решила проблему с помощью плагина PHP Code Widget
Теперь код спокойно вставился в виджет и отображается, как надо. Осталось покопаться с настройками - чтобы выводилось не только правильно, но и красиво!
Спасибо Вам за плагин =)
Пожалуйста :)
...сделать, что ли виджет? :)
Сделай виджет,ленивых много таких кто не хочет разбираться в коде,а будет виджет,прикрути к нему ссылочку на свой сайт )))
Поставил в планы :)
Мой wordpress установлен в поддиректории, не в корневой папке сервера, в результате $_SERVER['DOCUMENT_ROOT'] - не срабатывает как корневая директория блога. Пришлось дописывать папки после $_SERVER['DOCUMENT_ROOT'], чтобы указать скрипту поддиректорию, в которой установлен wordpress, ибо я новичок и не знаю как домашнюю директорию wordpress указать. Разработчики, есть идеи?
Разобрался, надо $_SERVER['DOCUMENT_ROOT'] заменить на ABSPATH, итого строка получается:
$alib_random_phrase_fname = ABSPATH.'phrase.txt';
Так все работает и для поддиректории...
Сделал виджет. Ссылка - в п.1 пп "Оригинальная версия". Если будете использовать версию с виджетом, то старую версию (без виджета) надо предварительно удалить.