Вебстрой
Форма комментирования в Drupal
12.07.2009 в 19:15Стандартная форма комментирования в CMS Drupal настолько далека от идеала, что без некоторых доработок ее использование крайне нецелесообразно. Ниже распишу по пунктам, как с помощью дополнительных модулей и небольших изменений в коде привести ее в человеческий вид. Актуально для Drupal 6.x /в 5.x свои грабли, а 7.x стабильной версии пока еще нет/.
1. Разрешаем комментировать анонимным пользователям.
Управление пользователями/Разрешения/модуль comment
Здесь настраиваем права доступа для анонимусов.
2. По дефолту в форме комментирования есть всего два поля – тема комментария и сам комментарий. Добавляем поля имя, e-mail, url и убираем поле «тема»
Содержание/Типы материалов
Нажимаем «изменить» у интересующего нас типа и переходим на «Установки комментариев», где выставляем нужные опции.
Я обычно ставлю:
- Режим показа по умолчанию:
Плоский список – развёрнутый
- Порядок сортировки по умолчанию:
По дате - сначала старые
-Управление комментариями:
Не показывать
-Анонимные комментарии:
Анонимные пользователи должны указывать контактную информацию
-Поле темы комментария:
Отключено
-Просмотр комментария перед отправкой:
Необязательно
-Расположение формы отправки комментария:
Показывать ниже сообщения или комментариев
3. Капча
Встроенной капчи нет, поэтому устанавливаем модуль. Я предпочитаю математическую капчу, за нее отвечает модуль captcha. Качаем, ставим, настраиваем, переводим интерфейс/все делается в админке/.
4. Кнопка «ответить» в комментариях
Какой бы вид отображения мы бы не выбрали, плоский или древовидный, под каждым комментарием будет оставаться кнопка ответить. Чтобы ее убрать, качаем модуль flatcomments. После установки идем в Содержание/Типы материалов, переходим по «изменить» напротив интересующего нас типа материала и ставим галку напротив Do not show a reply link on comments.
5. Возвращаемся к полю «тема комментария». Хоть мы и убрали это поле, при публикации коммента она будет отображаться в виде первых слов комментария. Чтобы это исправить, открываем файл comment.tpl.php в папке с нашей темой и удаляем или закомментируем следующие строки:
<?php if ($title) echo $title; ?>
6. Для анонимусов под формой комментария будет дан выбор, какой фильтр ввода использовать, и приведена ссылка «Подробнее о форматировании».
Если первое решается через ограничение прав доступа анонимусов к изменению форматов ввода, то чтобы убрать ссылку на ф.а.к. по форматированию, придется лезть в код.
Открываем файл template.php в корне нашей темы и добавляем внизу пару строк:
- function phptemplate_filter_tips() { return ''; }
- function phptemplate_filter_tips_more_info() { return ''; }
7. После публикации комментария сразу за именем анонимуса всегда пишется (не проверено), даже если премодерация отключена. Чтобы эту надпись убрать, снова открываем template.php и вниз кода вставляем следующее:
- function phptemplate_username($object) {
- if ($object->uid && $object->name) {
- // Shorten the name when it is too long or it will break many tables.
- if (drupal_strlen($object->name) > 20) {
- $name = drupal_substr($object->name, 0, 15) .'...';
- }
- else {
- $name = $object->name;
- }
- if (user_access('access user profiles')) {
- $output = l($name, 'user/'. $object->uid, array('title' => t('View user profile.')));
- }
- else {
- $output = check_plain($name);
- }
- }
- else if ($object->name) {
- // Sometimes modules display content composed by people who are
- // not registered members of the site (e.g. mailing list or news
- // aggregator modules). This clause enables modules to display
- // the true author of the content.
- if ($object->homepage) {
- $output = l($object->name, $object->homepage);
- }
- else {
- $output = check_plain($object->name);
- }
- //$output .= ' ('. t('not verified') .')';
- }
- else {
- $output = variable_get('anonymous', t('Anonymous'));
- }
- return $output;
- }
8. Теперь вид информации о комментирующем приобрел такой вид «Опубликовано Гость в Вс, 2009-07-12 21:48». Красиво конечно, но хочется «Гость - 12/07/2009 в 21:48».
Для этого сначала открываем файл comment.tpl.php и заменяем <?php echo $submitted; ?> на <?php echo "$author - $date"; ?>.
Потом идем в Настройка сайта/Дата и время, выбираем Средний формат даты: Пользовательский формат и прописываем шаблон даты d/m/Y в H:i.
Вот и все. Теперь у нас человеческая форма комментирования.
PS
1. У шестого друпала очень агрессивное кэширование, поэтому чаще всего сделанные изменения вы не увидите без чистки кэша - Настройка сайта/Производительность/Очистить кеш данных.
2. Иногда вместо имени функции «phptemplate» надо вставить название шаблона/имя папки с шаблоном/. Так что если после вставки кода сайт не открывается или код не работает – заменяем phptemplate на название нашего шаблона.
3. Описанная реализация наиболее правильная, т.к. не приходится редактировать ядро и все изменения проводятся только в файлах шаблона.
Подсветка php-кода в Drupal
03.05.2009 в 10:55При написании предыдущего поста мне понадобилась функция подсветки синтаксиса php кода, по дефолту этого нет, поэтому пришлось немного покопаться.
Ниже приведена инструкция по прикрутке подсветки синтаксиса кода в Drupal /в Друпале чаще всего все можно реализовать несколькими способами, так что описанный ниже вариант далеко не единственный для решения поставленной задачи/.
1. Качаем модуль GeSHi Filter, распаковываем, заливаем на сайт в директорию modules/, в админке сайта идем в Управление сайтом/Конструкция/Модули, ставим галку напротив GeSHi Filter, сохраняем. Активировать GeSHi node не обязательно – он создает дополнительный тип нодов исключительно для кода, что нам не требуется.
2. Теперь надо скачать библиотеки. Идем по ссылке, переходим в раздел Downloads, качаем geshi последней версии. Почему-то вчера был запрещен доступ по российский ip, в таком случае можно воспользоваться анонимайзером, что я и сделал. Далее разархивируем и заливаем папку geshi на сервер в корневую директорию установленного ранее модуля modules/geshifilter/.
3. Все установлено, можно переходить к настройке. Первым делом разрешим применение фильтров к вводимому тексту, для этого идем в раздел Управление сайтом/Настройка/Форматы ввода и жмем «настроить» напротив Full HTML где и разрешаем применение GeSHi filter.
Затем идем в настройки модуля GeSHi Filter Управление сайтом/Настройка/GeSHi Filter и, собственно, настраиваем. Поиграться здесь есть с чем, к примеру задать индивидуальные теги для применение разных стилей оформления в зависимости от того, на каком языке написаны исходники. Ниже приведу те настройки, которые сделал я.
- Снял все галки, установленный по дефолту.
- В качестве “Default highlighting mode” выбрал стиль C++, он используется для подсветки php кода на большинстве сайтов, поэтому будет попривычней, чем php-стиль.
- Значение “Default line numbering” установил в позицию “normal line numbers”, таким образом слева от кода идет нумерация строчек, можно еще выбрать, чтобы каждое 5, 10 или 20 число выделялось жирным, но это актуально лишь при цитировании больших исходников.
- Для “CSS mode for syntax highlighting” установил значение “Inline CSS style attributes”, для “Code container” значение “Use no container”. При выборе других пунктов отображение нумерации строк работать не будет.
Вот и все. Теперь при создании заметки с выбором формата ввода Full HTML весь код, заключенный в тег <code>, будет подсвечен.
PS
Также советую установить BUEditor - простой редактор текста, хорош тем, что можно самому программировать и добавлять нужные кнопки.
Рисуем фавикон
28.03.2009 в 02:14Пусть редко, но так или иначе все мы сталкиваемся с необходимостью создания уникального фавикона. Большинство, и я не исключение, сначала идет искать сервисы on-line создания иконок, потом, убедившись в их убогости, начинает выкачивать все подряд по запросу «редактор favicon.ico скачать». Половина скачанных программ, естественно, не работает, половина глючит. Убив на все про все часа полтора, все-таки получается нарисовать некое подобие иконки, но о том, чтобы создавать уникальные фавиконы не только для сдл, но и для всех сателлитов не может быть и речи – еще бы, столько времени тратить.
Однако практически у каждого стоит фотошоп, так почему бы не использовать его для решения этой весьма обыденной задачи? А использовать фотошоп вообще-то не только можно, но и нужно. До меня это, правда, дошло совсем недавно, но лучше поздно, чем никогда.
Ниже представлен мини F.A.Q. по созданию иконок favicon.ico средствами фотошопа.
Предположим, что мы имеем сателлит на тему яблок и хотим нарисовать к нему фавикон, потратив на это минимум времени.
1) Рисовать с нуля? Нет уж, увольте. Ищем исходник, к примеру в поиске гугла по картинкам. Имеет смысл поставить фильтр на поиск «искать в клип-артах», тогда картинки будут выдаваться достаточно хорошего качества и уже обработанные.
![]()
2) Копируем в фотошоп понравившуюся картинку. Точнее не понравившуюся, а наиболее подходящую для создание иконки. Не забываем, что разрешение фавикона – 16*16, поэтому чем проще и четче будет картинка, тем лучше. Скопировав в фотошоп, обрабатываем изображение, удаляем лишнее, делаем картинку более контрастной. В данном случае это не требуется, т.к. изображение изначально уже обработанное. Выделяем ту часть картинки, которая будет являться фавиконом, и копируем в буфер обмена (при работе со слоями, не забудьте их объединить перед копированием).
![]()
3) Создаем новый документ Файл-Новый. В параметрах создания ставим ширину и высоту по 16 пикселей. Инструментом «Лупа» увеличиваем созданный документ до максимальных размеров (1600%), чтобы было легче работать. Далее вставляем скопированную ранее часть картинки (Редактировать-Вставить). Скорее всего, после этого действия на новосозданном документе вы ничего не увидите. Оно и понятно – документ у нас 16*16 пикселей, а вставляемая картинка намного больше. Поэтому идем в Редактирование-Произвольная Трансформация. После этого действия вы увидите рамку, посредством которой надо будет загнать вставленное изображение в созданный документ размером 16*16 пикселей. Затем подтверждаем применение трансформации и занимаемся редактированием полученного изображения. Дорисовываем потерянные пиксели, где-то удаляем явно лишнее, можно подправить яркость, контраст и прочее. В итоге у нас должно получится нечто похожее на картинку внизу.
![]()
4) Теперь сохраняем полученный результат. Файл-Сохранить как, вписываем название файла favicon, а расширение выбираем png. Так как расширение иконок .ico, то полученный в фотошопе .png надо конвертировать. Делается это достаточно просто. Идем в проводник, сервис, свойства папки, вид, снимаем галку напротив «скрывать расширение для зарегистрированных типов файлов»/путь написал для XP, в висте там по-другому, на память не вспомнить, но вроде как интуитивно понятно/. Ну а дальше вручную меняем расширение у нашего файла с png на ico. На вопрос винды, действительно ли вы хотите поменять расширение, отвечаем утвердительно.
![]()
5) Наш favicon.ico готов. На все ушло не больше пяти минут.
Конечно, качество не радует, просто это был как пример, да и для сателлитов самое то. Но если вы рисуете фавикон для СДЛ, то здесь уже надо потратить хотя бы час-полтора, прорисовать каждый пиксель, привнести какую-то смысловую нагрузку, сделать так, чтобы полученная картинка 16*16 твердо ассоциировалась именно с вашим сайтом.
MFS – увеличиваем количество страниц второго уровня
29.01.2009 в 07:21
Доходность площадки в сапе зависит от многих факторов – тиц и пр, тематики, количества страниц, общей привлекательности для рекламодателя/не секрет, что многие просматривают сайт, перед тем как купить на нем ссылку, особенно если цена этой ссылки выше среднерыночной, так что и дизайн, и организация контента и меню тоже играют не последнюю роль/.
Увеличение количества страниц второго уровня чаще всего является одним из самых простых способов повышения прибыльности сайта. Но не всегда получается оптимально организовать навигацию “под сапу” без ущерба конечного пользователя. Речь идет, конечно, не о ГС, где можно хоть карту сайта расположить на главной. И не о перспективных контент проектах и разнообразных сервисах – думаю, проблема, как продать побольше ссылочек для них далеко не самая приоритетная. Вопрос о грамотном увеличении количества страниц второго уровня встает тогда, когда делается сайт для людей, источником дохода которого в основном будет продажа ссылок. Такая ситуация возникает часто. Например, когда тематика достаточно узкая, и собрать больше 100 уников в день не особо представляется возможным. Или же не конкурентная, такая как искусство/хобби, где монетизация трафика не принесет больших доходов. Может быть и обратный вариант, когда тематика выбрана конкурентная, но затраты на получение трафика в таком случае часто просто могут не окупиться.
Ну а теперь конкретика.
Способы увеличения количества страниц второго уровня:
- Делать расширенную подробную навигацию. Т.е. фактически то, что логично было бы сделать третьим уровнем, выносить на второй.
Например, если на региональном сайтике будет присутствовать такие разделы:
-Информация
-Фото
-Известные люди
то целесообразней организовать меню так
|Информация
-История
-Современность
-Статистика
|Фото
-Город
-Природа
-Достопримечательности
|Известные люди
-Литература
-Живопись
-Политика
Способ самый простой, но и наиболее непродуктивный и нежелательный в плане юзабилити. Количество страниц второго уровня таким образом можно нарастить до 40-50, больше уже трудно, меню будет занимать больше трети экрана и разобраться что где пользователю будет нелегко.
- При блоговом представлении материала делать внизу список страниц. Не только предыдущие/следующие, как стоит по дефолту на том же вордпрессе, а 1|2|3|4|5 и т.д. Ну и настроить так, чтобы показывались ссылки на все страницы, а не только первые и последние /1|2|3…100|101|102/. Плюс, если материала мало, то выводить можно не по 10 постов, а, к примеру, по пять.
- Теги. Очень удобная вещь в плане увеличения количества страниц. Можно сделать навигацию по сайту полностью теговой, или использовать как дополнение к основной. +30-100 страниц второго уровня с этого можно получить.
-Разнообразные модули – популярные записи, последние записи и т.д. Оптимально использовать те, в которых формируются статические ссылки, не изменяемые во времени /архив материалов, календарь/.
Соответственно, все вышеперечисленное нужно использовать в комплексе и исходя из целесообразности. Не стоит перегружать страницу ради пары десятков лишних страниц под продажу ссылок. Делайте изначально так, чтобы и навигация по ресурсу оставалась удобной, и потенциал заработка сайта был высоким. На первых сайтах в погоне за количеством страниц я перегружал меню, сейчас же стараюсь подходить к решению проблемы с умом. На последнем своем сайте организовал навигацию так – 5 основных ссылок на разделы, 21 ссылка на подразделы, постраничная навигация 1|2|3| внизу страницы, облако тегов, пару модулей “наиболее читаемое”… Итого ~100 страниц второго уровня без перегруженности навигации, более того, все выглядит естественно и крайне удобно для пользователя.
Лучшая капча
10.11.2008 в 05:00
Поговорим о капчах. Естественно, предназначение капчи – это защита от ботов, которые становятся со временем все умней и умней. Но не стоит забывать и о посетителях. Поэтому приходится искать консенсус между стопроцентной непробиваемостью ботами и минимумом неудобств для юзверя.
Стандартные капчи популярных движков идут лесом – оллсабмиттер и прочий софт их ломает на лету.
Капчи в виде картинки с искаженными буквами не лучший вариант – и сломать их проще, ну а если пытаться сделать картинку нечитаемой для бота – то и человеку трудно будет ее воспринимать. Да и переключаться на английскую раскладку, для того чтобы ввести правильный ответ, не всем хочется.
Капчи вида “введите нижние символы с картинки” тоже не идеал –во-первых, в большинстве случаев юзверь сначала вводит все подряд, потом, когда вылезает ошибка, уже читает и вводит правильно. Да и опять таки приходится переключаться на англ раскладку. Хотя видел такого рода капчи, где нижними символами были цифрами, что значительно лучше.
Многие делают нестандартные капчи, например “введите буквы, которые вы видите, в обратном порядке”, что тоже не есть гуд. Или “напишите словом то, что видите на картинке”, ну и иногда варианты предлагают, типа “слон, дом, цветок”. Проще надо быть, проще.
Итак, подходя к концу, хотел бы сказать, какие капчи на мой взгляд являются на данный момент идеальными.
Во-первых, эта математическая капча с простым арифметическим вопросом, например 2+3=?. Как показывает опыт, боты через такие капчи не пробиваются. Плюсом также является и то, что юзверю не надо думать, что делать – все предельно ясно. И к тому же не надо переключаться на другую раскладку.
Ну и во-вторых, это ставить галочку в графу “Я не робот”, многие наверно видели эту капчу, она вроде только под вордпресс, что несомненно является минусом, хотя могу и ошибаться.
