Друпал

Растягиваем основное меню на ширину контента

вт, 02.04.2013 13:10 :: olk

Иногда необходимо «растянуть» основное горизонтальное меню сайта на всю ширину основного контента. Предлагаю решение при помощи небольшого javascript-а. 1. Для начала нам надо немного преобразовать вывод меню, для того что бы в дальнейшем можно было его легче обработать скриптом (нам необходимо ввести дополнительный признак «глубины» пункта меню, что бы обработать только самый верхний уровень меню. Для этого в своей теме в файле template.php создаем (или переопределяем) функцию ВАША_ТЕМА_menu_link__main_menu(array $variables) У меня получилась функция со следующим содержанием

Оптимизируем дисковое пространство на хостинге

пн, 11.03.2013 10:36 :: olk

Используйте данный скрипт на свой страх и риск :) лучше предварительно забэкапить ваши директории.

В данном случае речь пойдет о конкретном хостинге it-patrol.ru (но думаю это реализуемо и на других хостингах).
Пока у вас один, два проекта на конкретном экаунте в хостинге то обновление версий друпала и расходуемое дисковое пространство не так актуально. Но когда количество проектов переваливает за десяток, то держать такое количество копий дистрибутива друпала становится накладно (это особенно актуально для нового тарифа Эластик, где стоимость тарифа (хоть и не значительно) зависит и от занимаемого дискового пространства.

Руссифицируем date_popup

чт, 13.09.2012 22:14 :: olk

Иногда возникают вопросы как при установке модуля date (а в частности при включении в качестве виджета поля типа date_popup) руссифицировать всплывающий календарь. Предлагаю одно из решений. 1. В директории вашей темы создаем файлик с именем (например) date_popup_ru.js следующего содержания.

Виджет Commerce product reference subform

вт, 11.09.2012 14:08 :: olk

Довольно часто при создании небольших интернет магазинов (в которых реализована простая связь 1 к 1 (товар <-> представление товара)), концепция раздельного заведения представления товара и самого товара не совсем удобна. Далее приводиться одно из решений (на самом деле данное решение «подсмотрено» на сайте www.gizra.com у нашего товарища из Телявива) Творчески переработано и доведено до рабочего состояния. Итак нам понадобиться следующие модули:

Применяем краудфандинг: заказываем модули вскладчину

Для начала, я думаю, надо пояснить, что за зверь такой “сrowdfunding”.

Слово краудфандинг произошло от двух английских слов crowd – толпа и funding – финансирование и дословно переводится как народное финансирование. Сама модель заключается в сборе вместе некоторого количества людей, у которых есть общий интерес или потребность, затем они скидываются и финансируют создание того, что их заинтересовало, и получают это во владение.

Вообще на западе данный способ финансирования уже давно распространен (можно вспомнить такие сайты, как kickstarter.com, 33needs.com, Spot.us и т.п.). У нас данная тема пока только начала развиваться и, в основном, применяется краудфандинг для финансирования музыкантов и благотворительности.

Подключение своих шаблонов для страниц 403 и 404

вт, 24.04.2012 17:33 :: olk

Есть несколько способов создать свои «красивые» страницы для ошибок 403 и 404. Я расскажу как я это делал через переопределение шаблона. 1. В каталоге текущей темы создаем шаблон (файл) для вывода страницы с ошибкой Я его назвал page--error.tpl.php

Содержимое файла самое простое:

  1. <?php
  2. /**
  3.  * @file
  4.  * $error_code - Error num (403 or 404)
  5.  * $error_content - HTML error content
  6.  */
  7. ?>
  8. <div class="page clearfix" id="page-<?php print $error_code;?>">
  9. <div class="content-page-<?php print $error_code;?>">
  10. <h2>
  11. <?php print l($site_name, '<front>', array('attributes' => array('title' => t('Home')), 'html' => TRUE)); ?>
  12. </h2>
  13. <h1><?php print $error_code;?></h1>
  14. <?php print render($error_content); ?>
  15. </div>
  16. </div>

Темизируем форму комментариев Друпал 7

пт, 13.04.2012 12:59 :: olk

Данный материал не учебный, а скорее познавательный. В нем я расскажу о том, как темизировал форму комментариев для сайта www.hotel-prog.ru Т.е. это не руководство как это надо делать, а просто материал о том как это делал я. Итак из дополнительных модулей я установил:

  • Модуль comment_notify
  • Модуль CAPCHA
  • Модуль ccfcollapse (из ccfilter) - используются внутренние функции и js-функционал для сворачивания полей и формы комментария
  • Модуль Better Formats - что бы назначить пользователям формат ввода по умолчанию
  • Модуль In Field Labels - делаем форму немного компактней

Включаем модули и при необходимости настраиваем

Установка кода Sape при мультисайтинге

чт, 05.04.2012 00:23 :: olk

Опишу код блока (формат PHP) который позволяет работать в Drupal при использовании мультисайтинга (т.е. несколько сайтов установлено на одном движке, этот же метод позволяет использовать полные «зеркала», т.е. для Sape они будут выглядеть как отдельные, обособленные сайты). Итак пусть у нас есть мультисайтинг использующий общие таблицы с доменами domen-1 и domen-2 Создаем новый блок (используя в качестве формата ввода PHP)

Изменяем размер аватар в нодах и комментариях

ср, 04.04.2012 13:57 :: olk

Иногда бывает необходимо что бы при выводе материалов и комментариев размер (а возможно и вид) автарки отличался от размеров заданных в профиле пользователя. Одно из решений — использовать модуль image с его пресетами. Добавляем (или редактируем если он уже есть) файл theme-settings.php в каталоге вашей темы.

Если данный файл есть и в нем есть функция  function Ваша_тема_form_system_theme_settings_alter(&$form, $form_state) , то нижеприведенный код добавляем в данную функцию, иначе добавляем саму функцию.

Собираем статистику по материалам

вт, 03.04.2012 10:31 :: olk

Небольшой сниппет по сбору статистики по сайту.
Показывает количество опубликованных материалов и комментариев к ним, с разбивкой по типам.

  1. $result = db_query("select count(n.nid) as cnt_node, count(c.cid) as cnt_comment,t.name from {node} n inner join {node_type} t on t.type=n.type and n.status=1 left join {comment} c on c.nid=n.nid and c.status=1 group by t.name");
  2. $items = array();
  3. foreach($result as $record) {
  4.   $items[] = 'Материалов типа: (' .$record->name .') : '.$record->cnt_node. ' , Комментариев :' . $record->cnt_comment;
  5. }
  6. if(count($items)) {
  7.   print theme('item_list',array('items'=>$items,'title'=>'Статистика'));
  8. }

Страницы

Подписка на Друпал