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

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

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

Просмотров: 12300Комментарии: 49
Wordpress

UPD от 25-07-2017: я не поддерживаю данный плагин. Рекомндую: http://ifish2.ru/quotes-collection-dlya-vyvoda-sluchai-nyh-tsitat-zapisei/

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

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

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. В остальном - все то же самое (установка). Ссылка для загрузки.

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

Комментариев: 49 RSS

1 Marine 29-09-2010 08:33

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

2 Alexander Bashkirov 29-09-2010 09:04

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

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

4 Marine 29-09-2010 09:10

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

5 Alexander Bashkirov 29-09-2010 09:33

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

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

6 Alexander Bashkirov 29-09-2010 09:34

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

7 Marine 29-09-2010 11:56

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

8 Alexander Bashkirov 29-09-2010 14:20

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

9 Alex 05-10-2010 16:43

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

11 Dimko 05-11-2010 14:57

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

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

12 Dimko 05-11-2010 15:16

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

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

13 Dimko 05-11-2010 15:33

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

14 Alexander Bashkirov 05-11-2010 20:38

Dimko,

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

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

15 Dimko 05-11-2010 21:02

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

16 Alexander Bashkirov 05-11-2010 22:49

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

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

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

17 Dimko 06-11-2010 07:23

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

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

18 Alexander Bashkirov 06-11-2010 13:37

Все цитаты на 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 Dimko 06-11-2010 15:02

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

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

Сам блог тут

20 Dimko 06-11-2010 16:21

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

21 Alexander Bashkirov 06-11-2010 16:51

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

<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 Dimko 07-11-2010 11:17

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

23 Dimko 07-11-2010 11:20

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

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

24 Dimko 09-11-2010 20:24

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

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

26 Владимир 25-01-2011 21:51

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

27 Владимир 25-01-2011 23:21

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

28 Alexander Bashkirov 25-01-2011 23:42

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

Пожалуйста!

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

29 mad 30-03-2011 00:11

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

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

30 Alexander Bashkirov 30-03-2011 14:30

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

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

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

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

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

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

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

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

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

33 Alexander Bashkirov 03-04-2011 19:37

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

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

34 Саша 07-04-2011 16:06

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

36 Piero 20-04-2011 23:29

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

37 Piero 22-04-2011 01:21

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

$alib_random_phrase_fname = ABSPATH.'phrase.txt';

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

38 Alexander Bashkirov 29-04-2011 10:58

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

39 aprl 23-08-2012 22:49

Спасибо. Мучался долго. но может теперь кому-то пригодиться.

Если Вам нужно запихнуть цитаты вместо родного блока с цитатой в теме (например у меня тема Evolution, там на главной предусмотрен родной блок с цитатой), то необходимо выполнить следующее:

1) ищем и открываем файл home.php в теме (или файл в вашей теме, отвечающий за главную страницу)

2) находим кусок кода в котором находится путь к ващей цитате.

у меня это выглядит так:

Где, собственно сам текст цитаты, а точнее некая ссылка на него в ядро темы (Александр, отредактируйте, если ошибаюсь, всё таки я дизайнер, а не кодер)

3) Строку

меняем на

и вуаля)

40 вова 26-12-2012 11:23

Спасибо, целый вечер искал что-то похожее и наконей нашел, работает на ура.

42 Надежда 29-03-2014 04:08

Здравствуйте!Не подскажете, как можно добавить цитату в шапку сайта?

43 Alexander Bashkirov 29-03-2014 13:01

Подправить в теме файл header.php - вставить в нужное место строку

44 Дмитрий 15-09-2014 16:19

Добрый день. Большое спасибо за полезный плагин.

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

45 Alexander Bashkirov 16-09-2014 07:26

Добрый день.

Честно говоря, я написал плагин достаточно давно - 4 года назад, и уже не помню, что там к чему.

Из "общих соображений" я бы кстати пошел другим путем - передавал бы фразу в плагин шаринга в соцсетях.

Но, тк я Wordpress более не занимаюсь, то что-то более конкретное сказать не могу, извините.

46 Тимофей 16-04-2015 16:04

Александр, добрый день.

Скажите, а как использовать Ваш плагин при наличии двух и более текстовых файлов?

Задача: брать фразы из 2-х текстовых файлов и вставлять их на страницу с материалом чуть выше комментариев.

47 Стас 25-07-2017 14:22

http://ifish2.ru/quotes-collection-dlya-vyvoda-sluchai-nyh-tsitat-zapisei/

48 Андрей 05-08-2022 16:34

Доброго дня! Не знаете способ загрузить сразу большой список цитат в плагин? У него есть встроенный импорт в формате json, но похоже он подходит только для тех типов файлов, которые были экспортированы из самого плагина.

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


Комментарий будет опубликован после проверки

     

  

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