Плагин похожих ссылок в новой версии
08.02.2010В сегодняшнем обновлении я переписал один из сложных плагинов -плагин похожих записей. Плагин был основательно переписан. Для версии с бд создается таблица плагина, в которой хранятся результаты поиска похожих постов. Для файловой версии результат поиска хранится в папке поста, файл sameposts.php. В старой версии все похожие посты хранились в данных самого плагина, что при большом количестве постов пропорционально увеличивало бы потребление памяти. Скачать эту версию можно отсюда: http://litepublisher.googlecode.com/files/litepublisher.3.08.tar.gz
Также в этой версии исправлен xmlrpc -теперь Live wRiter понимает меню блоголёта, а также внесены исправления для безошибочной работы блогклиентов. Также сделана кое какая оптимизация - для бд версии на 2 запроса стало меньше на странице поста. В админке на странице плагинов плагины, имеющие свои админки, перемещены в виджет - получается типа подменю, поскольку на странице плагинов нет подменю, то такое решение получилось интересным.
Из тяжеловесов остается трекер поисковых фраз, который я еще не переписывал и импортер рсс.
Комментарии (45) на запись “Плагин похожих ссылок в новой версии”
Оставить комментарий
Для постов уже встроена поддержка отдельных тем и шаблонов внутри темы. Работоспособность еще не проверял, но функционал реализовал. Для объекта достаточно иметь свойство theme отличное от пустого. То есть каждый пост может иметь свою собственную тему. В редакторе постов я это поле пока не добавил - и новая тема пока всего одна, да и фича это скорее теоритическая, но это скорее моя личная религия - мне достаточно одной темы и на всех сайтах одна :). Так что это находится на стадии реализовано, но об этом никто не знает. Это касается любых страниц на сайте.
Сейчас вспомнил -мултишаблонность реализована в базовых классах.
Если речь идет про новую версию, то файл темы находится в
themes/default/index.tml
В старой версии это было в отдельных файлах темы post.tml postexcerpt.tml
Тестирую ЛайвВрайтер - что-то совсем интересное. Работа с пунктами меню - полунормальная. Т.е. задается название, позиция и прочее - но не текст. И получить список страниц от блога не удается (The requested property Items not found in class tmenus). Во-вторых, почему-то при постинге поста он выдает ошибку - "Ответ методу metaWeblog.newPost, полученный с сервера блога, недействителен.Invalid response document returned from XmlRpc server". Тем не менее постинг происходит! Записи, отправленный в блог тоже нормально открываются и редактируются, работа с категориями и тегами отличная.
По-прежнему пол-админки у меня не работает. Голову сломал уже три раза. Особенности Апача 1 (так уж у хостера на котором тестирую), что ли? Может, phpinfo выложить или прислать - приемлимо?
Что в админке вроде должно работать, но не работает:
Полное редактирование категорий - сохраняются изменения только в названии, остальные поля - нет. Не выводится список виджетов для главной страницы. В шаблонах ссылок не получается отредактировать шаблон для архива.
Philipp добавил все плагины разом, выдал keywordsplugin.install.php on line 8
убрал keyword выдал
public_html/blogolet/plugins/rss-prev-next/rssprevnext.install.php on line 10
убрал Ссылки на предыдущую и следующую запись в RSS выдал
выдал еще что то
и так несколько раз, но потом появилась надпись что все плагины установлены и обновлены
Мне вот тут подумалось...
Наверное у Вас и так голова идет кругом и много времени уходит на CMS, но по какому-то закону в любом случае найдется кто-то типа "dima1981", который будет усердно трахать мозг в двойне.
Ну все правильно -в файлеlib/xmlrpc.metaweblog.class.ph была строка
var_dump($struct);
ставил для отладки, да и забыл удалить, вот все блогклиенты рругаются
Наконец появился лог ошибок.
Mon, 08 Feb 2010 18:32:52 +0300
Caught exception:
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
0 lib/db.class.php(80): PDO->exec('delete from xxx.')
1 lib/db.class.php(59): tdatabase->doquery('delete from xxx', false)
2 lib/db.class.php(209): tdatabase->exec('delete from xxx')
3 lib/cron.class.db.php(52): tdatabase->iddelete('3')
4 lib/cron.abstract.class.php(47): tcron->execute()
5 lib/kernel.php(1103): tabstractcron->request('')
6 lib/kernel.php(1092): turlmap->GenerateHTML(Array)
7 lib/kernel.php(1003): turlmap->printcontent(Array)
8 lib/kernel.php(993): turlmap->dorequest('/croncron.htm?c...')
9 index.php(36): turlmap->request('xxx', '/croncron.htm?c...')
10 {main}
Mon, 08 Feb 2010 18:32:52 +0300
Caught exception:
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
0 lib/db.class.php(78): PDO->query('SELECT * FROM d...')
1 lib/db.class.php(55): tdatabase->doquery('SELECT * FROM d...', true)
2 lib/db.class.php(113): tdatabase->query('SELECT * FROM d...')
3 lib/db.class.php(131): tdatabase->select('date <= now() o...')
4 lib/cron.class.db.php(24): tdatabase->getassoc('date <= now() o...')
5 lib/cron.abstract.class.php(47): tcron->execute()
6 lib/kernel.php(1103): tabstractcron->request('')
7 lib/kernel.php(1092): turlmap->GenerateHTML(Array)
8 lib/kernel.php(1003): turlmap->printcontent(Array)
9 lib/kernel.php(993): turlmap->dorequest('/croncron.htm?c...')
10 index.php(36): turlmap->request('xxx', '/croncron.htm?c...')
11 {main}
'./configure' '--prefix=/opt/php/5-006/php-5.2.9' '--with-apxs=/opt/apache/1-dweb-php5-so-006/apache-1.3.41/bin/apxs' '--with-config-file-path=/etc/opt/php-5' '--with-openssl' '--with-kerberos' '--with-zlib' '--enable-bcmath' '--with-bz2' '--enable-calendar' '--with-curl' '--enable-dba' '--with-gdbm' '--with-db4' '--with-cdb' '--with-inifile' '--with-flatfile' '--enable-dbase' '--enable-dom' '--enable-exif' '--enable-ftp' '--with-gd' '--with-jpeg-dir' '--with-png-dir' '--with-xpm-dir' '--with-freetype-dir' '--with-t1lib' '--enable-gd-native-ttf' '--with-gettext' '--with-gmp' '--with-iconv' '--with-imap' '--with-kerberos' '--with-imap-ssl' '--enable-mbstring' '--with-mcrypt' '--with-mhash' '--with-mysql=/usr' '--with-mysqli=/usr/bin/mysql_config' '--enable-pcntl' '--enable-pdo' '--with-pdo-mysql=/usr' '--with-pspell' '--enable-shmop' '--enable-soap' '--enable-sockets' '--enable-sqlite-utf8' '--enable-sysvmsg' '--enable-sysvsem' '--enable-sysvshm' '--with-tidy' '--enable-wddx' '--with-xmlrpc' '--with-xml' '--with-xsl' '--enable-zip' '--enable-memory-limit'
Ок, потестирую sql крона что то спотыкается на конструкции<> now(), но была бы ошибка то не писаллось бы MySQL server has gone away, - по моему это падение сервера mysql, но не знаю - тогда бы не было коннекта к базе. В кроне время жизни скрипта около 20 минут
Я блоголёт делал без использования дополнительных расширений: все есть в ядре php если судить по мануалу к php. Тестировал в firefox - работает, но правда я закомментировал буфер (это в корневом index.php ob_start(); ob_end();)
Для тестирования рекомендую заменить корневой файл index.php на файл для отладки:
http://litepublisher.googlecode.com/svn/trunk/debug/index.php
он кстати в конце каждой странице выводит статистику всех sql запросов и временем выполнения, а также самый долгий sql запрос. Все, конечно, моя самоделка
Тестирую. Работа через лайв - отлично. Выставил все права в 777 - админка по-прежнему глючит. (И посты, и полное редактирование категорий)
Отдельно - ранее не замеченное - глючит общий список комментариев. Они там почему-то по 2 раза, и смешиваются. Редактирование их в постах - отлично.
И вот вывод дебага для пустых страниц:
0: 0.00023699
SET NAMES utf8
maximum 0.00023699
SET NAMES utf8
0.00023699 total time
1 querries
Уже сейчас кажется неудобным модерирование в админке - второй список делал для, как казалось, для удобства в файловой версии - в ней доступ возможен только через пост, либо через самые свежие комменты. Скомконо получилось.
Кодировки особо не имеют значение - в блоголёте кодировка выставляется независимо от значений по умолчанию.
Идей по неработоспособности админки мало - еще ничего не придумал.
http://doamin.com/admin/?mode=test и любое другое значение mode, других вариантов кроме ?mode= не нашел
Адрес/доступ в форму контактов сбросить?
Проблему решил. Выяснилось, что у тебя параметры в запросе разворачиваются в php переменные - для этого есть какая то настройка в php запрещающая/разрешающая это делать. А у меня в корневом файле index.php стоит проверка
if (isset($mode)) {
Я ее включил для того, что бы можно было подключать блоголёт из внешних скриптов (например на другом сайте, или в случае интеграции), ну вот и получилась наклладка.
В следующем выпуске блоголёта все исправлю. Думаю исправлять отказом отпроверки переменной - перейти тогда уж на define, чтобы избежать в будущем похожих проблем. Вариант с редактированием php.ini кажется наименее предпочтительным: мможет нет прав, може еще чего.
php_flag register_globals off
Кто то пробовал реальзовать поиск google на сайте с открытием страницы результата на сайте?
Создал страницуn меню poisk для примера, в редакторе к этой странице прописал код который дал google для вставки в страницу на которой появляется результат, форму запроса естесствено на сайт, в поле страницы на которой открытие происходит написал http://site.domen/poisk но когда делается запрос то переход на страницу poisk показывает не найдено поисковая строка практически одинакова когда открытие в google то http://www.google.ru/cse?cx=partner-pub
на сайте /poisk?cx=partner-pub
как тут можно настроить?
спс Philipp, ток в этом я не понимаю где и что переопределять.
у тебя то получилось?