Форма комментария по умолчанию, содержит поля: имя, электронная почта, домашная страница, тему и комментарии.
Электронную почту и домашнюю страницу можно отключить в настройках типа контента. Кроме того, можно добавить новые поля к форме и изменить некоторые свои параметры отображения. Но для более продвинутого оформления нужно копать глубже.
В Drupal 7 есть функция hook_form_alter для внесения изменений в форму, прежде чем она отобразится, но эта функция будет вызываться для каждой формы генерируемой Drupal. Поэтому, я предложу использовать функцию hook_form_FORM_ID_alter, так как она вызывается только для конкретной формы с идентификатором form_id. Плюс эта функция вызывается после всех функций переопределения, так что вы будете знать, что ваши изменения не будут отменены в другом месте. Нам остается узнать только form_id формы комментария.
Показаны сообщения с ярлыком php. Показать все сообщения
Показаны сообщения с ярлыком php. Показать все сообщения
12 сентября, 2011
06 сентября, 2011
Откат php 5.3.8 до 5.2.7 с поддержкой cgi на CentOS
Добавляем репу Atomic
Устанавливаем плагин для yum, который нам позволит устанавливать более старые версии продуктов
Сначала необходимо удалить уже установленную php, проверяем
Если что-то вывелось, удалим
Устанавливаем php
Совет: c centos.alt.ru php лучше не ставить — он собран с fpm и fastggi не работает с isp, поэтому ставим из atomic php.
Без установки реп, можно скачать сами пакеты и установить их через rpm:
Открываем www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/
Скачиваем пакеты
wget -q -O - http://www.atomicorp.com/installers/atomic.sh | sh
Устанавливаем плагин для yum, который нам позволит устанавливать более старые версии продуктов
yum install yum-allowdowngrade
Сначала необходимо удалить уже установленную php, проверяем
rpm -qa | grep php-
Если что-то вывелось, удалим
yum erase php-*
Устанавливаем php
yum --allow-downgrade -enablerepo=atomic install php-5.2.17и все зависимые модули: cli, common, gd, mbstring, mysql, pdo, xml. Если какая-то репа нам мешает, отключаем ее через -disablerepo=[reponame]
Совет: c centos.alt.ru php лучше не ставить — он собран с fpm и fastggi не работает с isp, поэтому ставим из atomic php.
Без установки реп, можно скачать сами пакеты и установить их через rpm:
Открываем www6.atomicorp.com/channels/atomic/centos/5/x86_64/RPMS/
Скачиваем пакеты
- php-5.2.17-1.el5.art.x86_64.rpm
- php-cli-5.2.17-1.el5.art.x86_64.rpm
- php-common-5.2.17-1.el5.art.x86_64.rpm
- php-devel-5.2.17-1.el5.art.x86_64.rpm
- php-gd-5.2.17-1.el5.art.x86_64.rpm
- php-imap-5.2.17-1.el5.art.x86_64.rpm
- php-mbstring-5.2.17-1.el5.art.x86_64.rpm
- php-mysql-5.2.17-1.el5.art.x86_64.rpm
- php-pdo-5.2.17-1.el5.art.x86_64.rpm
- php-xml-5.2.17-1.el5.art.x86_64.rpm
Устанавливаем:
rpm --oldpackage -Uvh php*
с разрешением всех проблем в зависимостях.
Проверяем версию php
Не забудьте рестарнуть apache
Проверяем версию php
php -v PHP 5.2.17 (cli) (built: Jan 7 2011 10:39:29) Copyright (c) 1997-2010 The PHP Group
Не забудьте рестарнуть apache
service httpd restart
Восстановите php.ini, содержимое прошлого сохранено в файле /etc/php.ini.rpmsave
30 июня, 2011
Ошибки в логах с open_basedir - File() is not within the allowed path(s)
Вчера наткнулся на проблему, что в error лог записывались следующие ошибки:
Оказалось, что проблема в eAccelerator (версия – 0.9.6.1). Для решения проблемы качаем исходники eAccelerator (eaccelerator-0.9.6.1.tar.bz2), открываем файл eaccelerator.c строка 867:
Было:
Diff:
Заново компилируем eAccelerator и устанавливаем
PHP Warning: require(): open_basedir restriction in effect. File() is not within the allowed path(s);
PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s);
PHP Warning: Unknown: open_basedir restriction in effect. File() is not within the allowed path(s);
Оказалось, что проблема в eAccelerator (версия – 0.9.6.1). Для решения проблемы качаем исходники eAccelerator (eaccelerator-0.9.6.1.tar.bz2), открываем файл eaccelerator.c строка 867:
Было:
if (php_check_open_basedir(realname TSRMLS_CC)) {
Стало:if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {
Diff:
--- eaccelerator.c 2010-06-01 00:21:14.000000000 +0400
+++ eaccelerator.c 2011-06-30 15:24:37.277788184 +0400
@@ -864,7 +864,7 @@
EACCELERATOR_PROTECT();
if (p != NULL && p->op_array != NULL) {
/* only restore file when open_basedir allows it */
- if (php_check_open_basedir(realname TSRMLS_CC)) {
+ if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {
return NULL;
}
EAG(class_entry) = NULL;
+++ eaccelerator.c 2011-06-30 15:24:37.277788184 +0400
@@ -864,7 +864,7 @@
EACCELERATOR_PROTECT();
if (p != NULL && p->op_array != NULL) {
/* only restore file when open_basedir allows it */
- if (php_check_open_basedir(realname TSRMLS_CC)) {
+ if (php_check_open_basedir(p->realfilename TSRMLS_CC)) {
return NULL;
}
EAG(class_entry) = NULL;
Заново компилируем eAccelerator и устанавливаем
phpize && ./configure && make && make install
service httpd restart
service httpd restart
01 ноября, 2009
3 аспекта документирования
Всем известна стандартная мантра программирования «Документируй свой код!» (хотя некоторые разработчики, как оказывается, все еще не следуют ей). Первое, что приходит на ум PHP-программисту, как только речь заходит о документировании кода — это PHP DocBlocks.
DocBlocks — это система для обеспечения последовательности в ваших комментариях и благодатная почва для автоматического создания документации. К тому же, DocBlock, по своей природе, основан на принципах документирования API конкретных функций, классов и т.д., и в этом плане — это превосходная, очень удобная система.
Проблема же заключается в том, что документирование API-функций и их параметров, а также классов, и других аналогичных вещей — это только один из трех важных типов документации, которые необходимы.
В реальности же, слишком много PHP программистов ограничиваются лишь написанием DocBlock'ов, и считают, что их требования по документированию кода полностью выполнены. Используете ли вы PHP DocBlocks или нет, попробуйте сделать так, чтобы убедиться, что вы смогли охватить все три аспекта документирования вашего проекта:
DocBlocks — это система для обеспечения последовательности в ваших комментариях и благодатная почва для автоматического создания документации. К тому же, DocBlock, по своей природе, основан на принципах документирования API конкретных функций, классов и т.д., и в этом плане — это превосходная, очень удобная система.
Проблема же заключается в том, что документирование API-функций и их параметров, а также классов, и других аналогичных вещей — это только один из трех важных типов документации, которые необходимы.
В реальности же, слишком много PHP программистов ограничиваются лишь написанием DocBlock'ов, и считают, что их требования по документированию кода полностью выполнены. Используете ли вы PHP DocBlocks или нет, попробуйте сделать так, чтобы убедиться, что вы смогли охватить все три аспекта документирования вашего проекта:
- «Описание реализации» — рассказывает о том, с чего программисту следует начать для выполнения задачи, и как все устроено на высоком уровне.
- Документация API, которая описывает каждый класс и функции в деталях.
- Встроенные комментарии, которые описывают сам код.
Делаем простой Аудит сайта
Такой аудит можно встретить на любом сайте конторы строгающей сайты, в процессе поиска работы, одна из таких контор дала тестовое задание на создание такой программы.
Столкнулся впервые, но ничего, и не такое кушали, гуглим.
Столкнулся впервые, но ничего, и не такое кушали, гуглим.
20 мая, 2009
В поисках бесплатного flash flv плеера
При работе с одним проектом мне нужно было вставить видео на страницы. Для конвертирования видео файлов, я воспользовался простой утилитой ffmpeg.
Для задания скриншота
Далее проведя обзор нашел 2 самых удобных плеера:
Flowplayer
Плеер под лицензией GPL3. Есть код для вставки, отправка на e-mail, а так же fullscreen.
JW FLV Player
Самый популярный flash плеер. Поддерживает все форматы, которые знает Adobe Flash Player(FLV, MP4, MP3, AAC, JPG, PNG и GIF). Так же поддерживает стриминг.
ffmpeg -i @files/$srcVideo -ar 22050 -ab 32 -f flv -s 320x240 @files/$destVideo
Для задания скриншота
ffmpeg -i @files/$srcVideo -an -ss 00:00:03 -t 00:00:01 -r 1 -y -s 320x240 @files/$destImage
Далее проведя обзор нашел 2 самых удобных плеера:
Flowplayer
Плеер под лицензией GPL3. Есть код для вставки, отправка на e-mail, а так же fullscreen.
JW FLV Player
Самый популярный flash плеер. Поддерживает все форматы, которые знает Adobe Flash Player(FLV, MP4, MP3, AAC, JPG, PNG и GIF). Так же поддерживает стриминг.
13 марта, 2009
Совершенно случайные числа без повторения (php)
Сегодня столкнулся с задачей сделать 4 случайных числа в заданном диапазоне, которые бы не повторялись, казалось бы нетривиальная задача, но!
Обычное rand($min, $max) не давало нужного результата, особенно при малом числе $max ~ 15;
То есть:
Могло в итоге выдать 2, 2, 3, 9 - эти повторения мне нужны не были, спросив совета, fd дал ссылку на перловый вариант cookbook, но реализация мне не понравилась своей громозкостью и нелапидарностью.
в итоге проявив смекалку появилось вот такое решение
Вуаля! Просто лапидарно, и даже странно :)
Обычное rand($min, $max) не давало нужного результата, особенно при малом числе $max ~ 15;
То есть:
$number[0] = rand(1, $max);
$number[1] = rand(1, $max);
$number[2] = rand(1, $max);
$number[3] = rand(1, $max);
Могло в итоге выдать 2, 2, 3, 9 - эти повторения мне нужны не были, спросив совета, fd дал ссылку на перловый вариант cookbook, но реализация мне не понравилась своей громозкостью и нелапидарностью.
в итоге проявив смекалку появилось вот такое решение
function getFourRandomNumber ($maxCount){
$numbers = range(1, $maxCount);
shuffle($numbers);
return array($numbers[0], $numbers[1], $numbers[2], $numbers[3]);
}
Вуаля! Просто лапидарно, и даже странно :)
Подписаться на:
Комментарии (Atom)