Друпальчики
Статьи
Упрощенная корзина для Drupal Commerce
Некоторых по вполне логичным причинам не устраивает стандартный блок корзины в Drupal Commerce. Хочется не выводить все понапиханные в нее товары, а вывести только, скажем, одну строку. В которой должно быть только число товаров в корзине и сумма, на которую набрано. Ну и ссылки на саму корзину и оформление товара.
Вот php-код с реализацией такой укороченной корзины. Его надо вставить в блок.
global $user;
$order = commerce_cart_order_load($user->uid);
if (empty($order) || empty($order->commerce_line_items)) {
print t('Your shopping cart is empty.');
return;
}
$wrapper = entity_metadata_wrapper('commerce_order', $order);
$line_items = $wrapper->commerce_line_items;
$total = commerce_line_items_total($line_items);
$quantity = commerce_line_items_quantity($line_items, commerce_product_line_item_types());
?>
<p>
<?php
print t('Your shopping cart contains <span class="shopping-cart-items-count">!items</span> on <span class="shopping-cart-money-total">!money</span> total', array('!items' => format_plural($quantity, '1 product', '@count products'), '!money' => commerce_currency_format($total['amount'], $total['currency_code'])));
?>
</p>
<p>
<?php
print l(t('Cart'), 'cart') . ' ' . l(t('Checkout'), 'checkout');
?>
</p>
Обращаю внимание — число товаров в корзине переведено правильным, годным образом, через
format_plural(). HTML-разметку блока можно менять как нравится.
А о том, как обновлять этот новый блок по AJAX-у — напишу позже.
Drupal 7, таксономия и хлебные крошки
Делал тут хлебные крошечки для сайта на семерке, с применением терминов таксономии. Для начала поставил Hansel — не зря ж я про него видео снимал — оказалось, что хотя он и не в dev-версии, но местами глючит. С Taxonomy Breadcrumb тоже как-то не срослось. Стал писать сам.
В процессе выяснились две интересные особенности. Во-первых, в стандартном модуле таксономии, в файлике taxonomy.pages.inc, есть вот такое:
// presumption. Make this behavior configurable per vocabulary or term.
...
То бишь, в стандартном выводе терминов таксономии есть код, который убивает любые другие настройки крошек. Что характерно, существующий иссуй создан только для грядущей восьмой версии.
Эта проблема, правда, легко решается: нужно просто заменить стандартный вывод страниц таксономии — выводом через Views. А во вьюхе — не забыть отключить в настройке аргумента (который контекстный фильтр) генерацию хлебных крошек. Иначе вьюз все испортит.
В общем, написал крошки сам — функцией drupal_set_breadcrumb() пользоваться очень просто. К слову, время написания кода под хлебные крошки сравнимо с временем создания настроек в Hansel. Через это получается, что людям, которые умеют кодить под Друпал, модули под крошки-то и не нужны особо.
Жар-Пар.Ком
Уважаемые друпальщики и сочувствующие!
Наконец-то доведен до рабочего состояния сайт Жар-Пар.Ком, и этой радостью я спешу с вами поделиться. Жар-Пар.Ком — это магазин печей и дымоходов. Что характерно, интернет-магазин.
Сайт сделан целиком и полностью на Друпале 7, с применением передового магазинного пакета Drupal Commerce. Чем, кстати, лишний раз подтверждается тезис о том, что делать сайты на «семерке» — рано, а интернет-магазины — вообще нельзя.
Вопросы, замечания, конструктивную критику и прочее можно излагать в комментариях. Но на критику дизайна ответить не смогу: использована стандартная тема AT Commerce, ее оформлением занимался не я.
Спасибо за внимание. Покупайте печки и дымоходы!
Управляем заголовками вкладок
В декабре рассказывал о том, как распихать поля, отображаемые в нодах, по красивым вкладкам с помощью модуля Field Group. В одной из вкладок были, в частности, размещены комментарии к ноде и форма добавления новых комментариев.
А теперь возникла нужда управлять заголовком вкладки, в зависимости от наличия комментариев к ноде. Делается это так:
* Implements hook_field_group_pre_render_alter().
*
* @param Array $elements by address.
* @param Object $group The Field group info.
*/
function mymodule_field_group_pre_render_alter(& $element, $group, & $form) {
if ($element['#title'] == 'Comments') {
$node = $element['comments']['#node'];
if ($node->comment_count == 0) {
$element['#title'] = t('Be first to leave a comment!');
} else {
$element['#title'] = t('Comments (!count)', array('!count' => $node->comment_count));
}
}
}
Аналогичным образом можно управлять заголовками любых других вкладок или иных видов групп полей Field Group.
Решение, кстати, дополнительно ценно тем, что благодаря великолепной документированности opensource-проектов потратил на написание этих десяти строчек — несколько часов.
Drupal 7 и переводы строк
Оказывается, чудесную свинью подложили переводчикам сайтов в Drupal 7 через фильтрацию HTML в переводах строк. Простую ссылку (<a href="http://mysite.ru">ссылка</a>) добавить в перевод строки все еще можно. А вот если в ссылке токен (<a href="[site:url]">ссылка</a>) — HTML внезапно становится запрещенным.
Оно понятно, хардкодить ссылки, прямые или косвенные, в переводимые текстовые сообщения (см. функцию t()) без шаблонов замены — конечно, моветон. Но если уж упустили такое — куда деваться-то переводчикам? Если уж даже разработчики такого мощного модуля как commerce шаблонами не воспользовались?
Вон, даже иссуй на тему есть. Незакрытый.
Установка Drupal 7 на localhost
Заметил, что иногда при установке Drupal 7 на домашние компьютеры граждане жалуются на ошибку. Ошибка возникает при вводе информации о базе данных и выглядит вот так:
localhost написать 127.0.0.1.
jSlider Form API на Drupal.Org
Примерно год назад сделал модуль интеграции плагина jSlider в Form API шестого Друпала, назвал, соответственно, jSlider Form API. Сделал, да и выложил на домовую страницу, чтоб каждый мог воспользоваться.
А сегодня для этого модуля очень хорошие новости: благодаря Евгению Масловскому у jSlider Form API появился дом среди проектов Drupal.org: http://drupal.org/project/jslider_form_api. Именно там теперь будет осуществляться его развитие и поддержка. И порт в Drupal 7, судя по всему, там тоже будет.
И это хорошо.
Видео о нодах, полях и вкладках
В процессе глубокой работы с Drupal 7 задумал заснять несколько видеороликов с небольшими, если можно так выразиться, юзкейсами внутри. Вот первый из них. В нем рассказывается, как в «семерке» распихать поля ноды по симпатичным вкладкам без единой строчки кода.
Использованы модули:
— Fieldgroup;
— Display Suite.
Также рекомендуется к освоению:
— видеокурс по Display Suite (на английском).
Drupal и Вконтактик
Когда-то давно хотел сделать кросспостинг в контактик, но решений не было. А тут вдруг внезапно заметил — оказывается, модуль появился. Немедленно схватил и настроил. Работает!
Автору — большое спасибо! Вот, кстати, его страница. На ней еще и дизайн, я смотрю, поменялся. Блин, как я от жизни-то отстал.
- ‹ следующие заметки
- архив за год
- предыдущие заметки ›
