WiseMan: Блог

Главные вкладки

[РЕШЕНО] Помогите с докрутить sql-запрос к нескольким таблицам (drupal6 + ubercart)

13 октября 2013 в 22:36

Всем привет. Давненько тут не был.

Помогите докрутить запрос для 6-го друпала + уберкарт.

Имеем стандартные таблицы
uc_cart_products (данные корзин)
users
uc_products

Требуется составить таблицу со списком пользователей, где для каждого пользователя будет отражено:
-id-пользователя
-сумма товара в корзине
-кол-во товара в корзине
-дата последнего изменения в корзине

Пока сделал вот так:

<?php$sql = "SELECT u.uid, 
  (SELECT COUNT(DISTINCT(cart_item_id)) FROM {uc_cart_products} as o WHERE o.cart_id = u.uid) as qty_list_products, 
  (SELECT SUM(qty) FROM {uc_cart_products} as ps WHERE cart_id = u.uid) as total_products 
  FROM {users} as u WHERE u.uid > 0 GROUP BY u.uid";?>

Пингеры от Яндекса для индексации страниц (офциальные модули)

29 апреля 2012 в 10:46

Яндекс выпустил модули "пингеры" для облегчения индексации страниц.

Цитирую Яндекс:
«Вы можете повысить приоритет индексирования некоторых страниц вашего сайта с помощью дополнений для CMS, которые могут отсылать запросы на индексацию автоматически. Дополнение, установленное в CMS, отслеживает изменения на сайте и генерирует запросы на индексацию при создании или изменении документов.»

Как сделать комплексный аудит сайта или дизайн-макета. Новый сервис - мне понравился.

1 декабря 2011 в 14:41

Буквально на днях наткнулся на отличный сервис по комплексному аудиту сайтов.

В какой-то мере это рекламный топик и я не скрываю что ссылка буде реферальная, но я уверен, что сам сервис вам будет полезен - поэтому просто не могу не поделиться.

Одно дело выставить сайт на растерзание здесь, на друпал.ру где вас могут просто заклевать.

И совсем другое получить рекомендации от людей независимых, но заинтересованных в качестве представляемых рекомендаций. Четко и по полочкам. Подробнее вы найдете в правилах сайта

Я не буду лишний раз распространяться стоит или не стоит делать аудит в принципе. Мое мнение - аудит обязателен если вы не хотите эффекта упущенной выгоды и даже реальных потерь как денег, так и клиентов.

Виды аудита предоставляемые на сайте:
- анализ юзабилити (удобства использования) сайта
- seo-аудит внешних факторов и внутренней оптимизации
- оценка и анализ дизан-макетов. На тот случай если дизайн только разрабатывается.
- анализ текстов сайта
- плюс множество частных тарифов маркетинговой, сравнительной и др. аналитической направленности

Почитал top100 открытых аудитов - это не только указание на недостатки, но и рекомендации, что можно улучшить с примерами. Все разбирается по полочкам, как уже упоминал.

P.S. Кроме заказчиков аудита приглашаются так же специалисты, готовые стать аудиторами.

Как сделать e-mail рассылку дайджестов любых материалов сайта в автоматическом режиме

1 сентября 2011 в 15:57

Только что опубликовал новость как комментарий в посте о модуле рассылок.

Здесь для удобства обсуждения еще раз расскажу как настроить автоматическую e-mail рассылку практически любых материалов с вашего сайта.
Настроить так, чтобы вебмастер не тратил время на составление рассылки и ее отправку.

Материалы публикуются на сайте и тут же попадают в рассылку, на основе определенных правил. Эти правила задаются через views.

Как это делается - всего 3 простых шага:

  1. Берете мой модуль подписки - он нужен для набора подписчиков. Или используете "ручную" форму подписки от сервиса
  2. Настраиваете любой фильтр через views на отдачу материалов в виде rss
  3. Скармливаете один, два или сколько вам нужно вариантов rss сервису рассылок и... вуаля: письма уходя автоматически.

Подробнее о том как скормить и настроить rss для отправки писем.

Это не просто банальное транслирование rss на e-mail. Вы получаете:

  • Возможность настроить дизайн рассылки под свой корпоративный стиль;
  • Гибкую настройка правил отправки сообщений;

Мой топ хостинга для drupal и не только. Личный опыт.

24 ноября 2010 в 23:25

безлимитный хостинг drupalКак и многие из вас я однажды задался вопросом — так есть ли идеальный и, желательно, безлимитный хостинг drupal?

Ну хочется же, чтобы все работало как часы: и uptime 100%, и тех поддержка на уровне, и работать удобно, и гибкость, и производительность, и все это за приемлемые деньги. Этакий выделенный хостинг... шаред хостинг )))

В общем помыкался я от одного провайдера к другому + сайты клиентов понаблюдал. Один из важных критериев выбора — должна быть с русскоязычная поддержка, т. к. думал прежде всего не про себя, а про клиентов с минимальными техническими навыками. Это немного осложняло задачу.

Прошло время и… мой ответ — идеального хостинга нет. Впрочем, есть весьма неплохие. Список ниже, с кратким акцентом на особенностях.

nic.ru или ру центр хостинг — вариант неплохой, но дороговато. Рекомендую выбирать тариф не ниже 301-го. Drupal-cайты на нем работают довольно шустро. Есть все необходимые акселераторы и возможность настраивать параметры php.ini под себя, включая php-memory. Можно устанавливать свои nginx, php, mysql и т.д. Хотя, даже используя возможности настроек «из коробки» все будет работать.

Руководство: как настроить SMS-уведомления в Ubercart

11 августа 2010 в 0:16

Т.к. при использовании модулей sms и e-mail рассылок возникают вопросы, решил описать ответ на наиболее сложный вопрос у себя в блоге - Drupal + Ubercart: настройка SMS-уведомлений - как эффективней и дешевле

Новый модуль для SMS и E-mail рассылок, в т.ч. для Ubercart

10 августа 2010 в 1:15

Написал пару небольших модулей для интеграции с сервисом UnisendResponder.ru - сервис персонализированных массовых e-mail рассылок и sms-рассылок. В том числе сервис умеет делать авторассылки, типа Смартреспондера.

Подробнее изучите сами, при желании Smile

Разве что ссылка на тарифы

Что умеют эти модули.

Оба модуля работают незаметно для пользователя, через API UnisendResponder

1. модуль unisendresponder

Позволяет подписывать ваших пользователей на рассылки на этапе регистрации на сайте. Возможны варианты, влоть до обязательной подписки. Если вы знаете что такое авторассылки, то поймете его пользу.

В настройках можно указать какие из ваших рассылок каким ролям будут доступны.

Кроме того, модуль может быть очень поелезен тем, кто заботиться о качественной доставке писем.

2. модуль sms_unisendresponder

Данный модуль зависит от smsframework - устанавливается как gateway для него.

Позволяет делать как массовые рассылки по вашим пользователям, указавшим мобильные телефоны. Так и в Ubercart уведомлять покупателей через SMS о смене статуса заказа.
Для этого требуется дополнительно модуль uc_ca_sms

Готовая платформа для создания корпоративных социальных сетей

7 августа 2010 в 21:29

Компания Acquia, курирующая разработку свободной системы управления web-контентом Drupal, представила новый проект - Drupal Commons 1.0....

Собственно, копипастить не буду, все по ссылке

Updated by webmaster: добавлена презентация Drupal Commons с http://buytaert.net/drupal-commons-meet-jive-software

как задать видимость блока в модуле?

30 марта 2010 в 16:28

Решил написать небольшой модуль для облегчения задачи управления видимостью блоков на страницах словарей и их терминов.

Все это можно сделать сниппетом (приведу ниже, мож кому пригодится), но для менеджера сайта это слишком сложно.

Споткнулся на этапе, когда нужно вывести блок. Настройки, с указанием в каком словаре выводить - сделал:

<?php
/**
 * Implementation of hook_form_alter().
 */
function custom_mod_form_alter(&$form, &$form_state$form_id) {
  if ((
$form_id == 'block_admin_configure' || $form_id == 'block_box_form' || $form_id == 'block_add_block_form')) {

      

$module $form['module']['#value'];
      
$delta $form['delta']['#value'];
      
      
$form['custom_mod_vis_settings'] = array(
        
'#type' => 'fieldset',
        
'#title' => t('Vocabulary visibility settings'),
        
'#collapsible' => TRUE,
        
'#collapsed' => FALSE,
        
'#weight' => 0,
      );

  

// Vocab-based visibility settings
  
$default_vocab_vis_options = array();
  
$result db_query("SELECT vid FROM {blocks_vocabulary} WHERE module = '%s' AND delta = '%s'"$module$delta);
  while (
$vocab db_fetch_object($result)) {
    
$default_vocab_vis_options[] = $vocab->vid;
  }
  
$result db_query('SELECT vid, name FROM {vocabulary} ORDER BY name');
  
$vocab_vis_options = array();
  while (
$vocab db_fetch_object($result)) {
    
$vocab_vis_options[$vocab->vid] = $vocab->name;
  }  
      
     
$form['custom_mod_vis_settings']['vocab_visability_blocks'] = array(
    
'#type' => 'radios'//checkboxes?>

Страница с комментариями отдельно - как?

30 ноября 2009 в 13:43

Давно хочу на своих сайтах все комментарии вынести на отдельную страницу, чтобы у комментируемого материала была только ссылка на отдельную страницу комментариев с указанием количества комментов.

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

Собственно, как это сделано на вебпланете

Кто пробовал делать или есть идеи как?

Снижение нагрузки через JavaScript/AJAX

30 октября 2009 в 0:54

Наткнулся на модуль JavaScript/AJAX page callback.

По описанию, якобы, повышает производительность в разы. Хотелось бы уточнить мнение опытных коллег в этом вопросе.

Что можете сказать о полезности данного модуля?

Выделенный сервер за 1000 руб. - новая услуга на рынке хостинга

13 сентября 2009 в 1:55

Кто что думает об этой новости? уже есть, но мало, и у других хостеров аналогичные предложения.

UP: Насколько понял здесь получается что-то на стыке между VPS и полноценным выделенным сервером, но предлагаю в обсуждениях не делать акцент в сравнениях именно на отставание в характеристиках от выделенного сервера. Это и так понятно.

А вот как альтернатива VPS - было бы полезно обменяться мнениями, а может кто-то даже опытом поделится.

Функция замены в template.php - как лучше сделать?

24 августа 2009 в 19:59

Для шаблона для ubercart в файле template.php сделал следующее:

<?php
 
if ($vars['template_files'][0] == 'node-product') {
       
$node node_build_content(node_load($vars['nid']));

    

$vars['fusion_uc_image'] = drupal_render($node->content['image']);
    
$vars['fusion_uc_body'] = drupal_render($node->content['body']);
    
$vars['fusion_uc_display_price'] = drupal_render($node->content['display_price']);
    
$vars['fusion_uc_add_to_cart'] = drupal_render($node->content['add_to_cart']);
    
$vars['fusion_uc_weight'] = drupal_render($node->content['weight']);
    
$vars['fusion_uc_dimensions'] = drupal_render($node->content['dimensions']);
    
$vars['fusion_uc_model'] = drupal_render($node->content['model']);
    
$vars['fusion_uc_list_price'] = drupal_render($node->content['list_price']);

//эта строка НЕ РАБОТАЕТ :(
    
$vars['fusion_uc_list_price'] = str_replace('USD'''drupal_render($node->content['list_price'])); 

    

$vars['fusion_uc_sell_price'] = drupal_render($node->content['sell_price']);
    
$vars['fusion_uc_cost'] = drupal_render($node->content['cost']);
    
$vars['fusion_uc_additional'] = drupal_render($node->content);
  }
?>

В шаблоне затем использую <?php print $fusion_uc_image?> и т.п.

Все хорошо и все работает, кроме строки $vars['fusion_uc_list_price'] - мне нужно символ валюты для этой строки убрать. Никак не получается.
Точнее в самом шаблоне легко прокатывает <?php $fusion_uc_list_price str_replace('USD'''$fusion_uc_list_price);?>

Помогите расширить запрос к базе [решено]

20 августа 2009 в 0:20

Есть три таблицы {reg_code}, {users} и {uc_addresses} все имеют пересечение по uid.

Хочу сделать выборку из всех трех таблиц одним запросом, а точнее добавить выборку из третьей таблицы {uc_addresses} вот к этому рабочему запросу:

<?php
$sql 
'SELECT u.uid, u.name, u.mail, r.created, r.referer
    FROM {reg_code} r INNER JOIN {users} u USING(uid)
    WHERE r.reg_uid = %d
    AND u.status = 1' 
tablesort_sql($header);
  
$result pager_query($sqlREFERRAL_PAGE_COUNT0NULL$uid);
  while (
$data db_fetch_object($result)) {
    
$rows[] = array(
      array(
'data' => $data->name),
      array(
'data' => $data->city), //это поле нужно взять из таблицы {uc_addresses}
      
array('data' => $data->mail),
      array(
'data' => format_date($data->created'custom'REFERRAL_DATE_FORMAT)),
      array(
'data' => $data->referer),
    );
  }
?>

Важно чтобы результат был с условием выборки данных по списку $uid.
Кроме u.name, u.mail, r.created, r.referer из третьей таблицы мне нужно взять поле city. Пометил комментарием в коде.

Интуитивно понимаю что через INNER JOIN делать надо или что-то подобное, но никак не соображу Sad
Не силен в сложных запросах.

Кто подскажет код запроса?

Улучшаем drupal.ru - теги, поиск, навигация

16 августа 2009 в 19:46

Уже не один раз поднималась тема об удобстве поиска и навигации по этому сайту. Unitag admin screenshots

Вроде как есть два словаря "Версия Drupal" и "Ключевые слова", но...

Если термины из словаря "Версия Drupal" реально полезны и помогают сориентироваться, то термины второго словаря находятся в состоянии "анархии" и практически не способствуют улучшению навигации по сайту. Не говорю что совсем бесполезные, но полезность для посетителя весьма не высока, ИМХО.

Если для личных блогов, фотосток и т.п. сайтов свободные теги больше похожи на порядок (там более очевиды темы), то на drupal.ru новичкам часто элементарно не хватает знаний для грамотной и правильно формулировки тегов к посту.

Предлагаю в рамках коллективного модерирования сайта в духе текущей борьбы со спамом :),поставить модуль Unitag, который позволяет организовать модерацию терминов.

Кто что скажет?

Настройка хостов в Linux под мультисатинг

15 июля 2009 в 16:18

Коллеги, подскажите, как реализовать настройку хостов в Ubuntu для поддержки Wildcard, т.е. чтобы хост, например, mydrupal.ru откликался на все его как существующие так и "не существующие" поддомены.

В конфиге apache мне понятно как сделать, через *.mydrupal.ru

На боевых хостингах это реализовано как правило в виде подключаемой опции.

А вот как реализовать это у себя в локальной системе никак не догоню.

Как добавить такой "мультихост"?

Добавляю хосты и управляю сервером через Webmin.

Удобство администрирования друпал

3 июня 2009 в 19:00

Только что поставил себе модуль admin - впечатления определенно положительные.

Уже сейчас понравилось как сделано, а если будут развивать в этом направлении то модуль бесценный с точки зрения usability, ИМХО.

Пытаются взломать?

12 мая 2009 в 17:45

Кто подскажет, что значат попытки обратиться к сайту по такому url:
httр://www.site.ru/contact+++++++++++++++++++++++++++++++Result:+%F3%F1%EF%E5%F5;

У меня в логах фиксируется как php-ошибка.

Разные ip-адреса Украины, настойчиво уже несколько дней подряд.

Новый модуль кеширования на файлах CACHESTATIC

5 мая 2009 в 1:56

Только что увидел в новостях новый модуль CACHESTATIC для кеширования на файлах. Порадовало, что заявлено кеширование для зарегистрированных пользователей. Сейчас буду смотреть что к чему, а пока свободный пересказ-перевод о возможностях:

  • Управление кешем на основе url
  • Управление кешем на основе домена
  • Управление сроком жизни кеша индивидуально под url
  • тулбар на текущей странице для управления кешем
  • возможность просмотра списка закешированных страниц с датой истечения срока кеширования
  • удаление кеша при публикации
  • управление удалением кеша по крону
  • дополнительные теги в футере страницы
  • отключение кеша для отдельных страниц по признаку в url
  • поддержка мультисайтинга
  • админка не кешируется
  • формы для создания страниц не кешируются

Примерно так.

Предлагаю попробовать и обсудить результаты. По описанию весчь хорошая. Что скажете?

Сниппет облака тегов для мультисайтинга

3 марта 2009 в 0:56

Возникла задача, не соображу как сделать. Речь прежде всего про drupal 5, но если будет с комментариями для 6-ой версии, тоже спасибо.

Итак, есть сниппеты облако тегов + flash и замена облака тегов сниппетом

Все хорошо, все работает как и модуль tagadelic, но как бы сделать чтобы не выводились пустые термины в которых нет материалов с КОНКРЕТНОГО САЙТА.

Проверку на принадлежность материалов сайту проводит модуль мультисайтинга domain, но у терминов и словарей нет принадлежности к тому или иному сайту, потому они выводятся на всех сайтах все. И пустые и не пустые термины.

Нужно как-то сделать проверку терминов на пустоту так, чтобы это было сделано, например, через обертку запроса к базе в стандартную функцию вывода материалов из термина. Как если бы материал реально выводился (весь, титл или анонс - не важно). Тогда модуль domain отфильтрует материалы принадлежащие только этому сайту. Соотвественно надо не показать эти материалы, а только проверить их наличие для текущего сайта. И в зависмости от этого выводить или не выводить термин.

Пример логики, как представляю:

1. запрос всех терминов из {term_data}

далее

2. пробуем вывести хотя бы один материал из каждого термина стандарным выводом, но не показываем.

3. если вывод материалов из термина возможен на данном сайте, то выводим данный термин.

Возврат денег за предустановленную OC Vista - да!

27 января 2009 в 22:00

Не могу не поделиться найденным с сообществом. Цитирую с сайта и даю ссылку на первоисточник.

«Задачей акции является разработка процедуры возврата денег за предустановленную на купленном компьютере ОС, а также комплекта документов для использования при этом. В ходе первого, закрытого этапа акции были разработаны рекомендации и типовые документы. На втором этапе эти документы открыты для широкой аудитории, которая теперь может использовать их самостоятельно, не прибегая к помощи проекта.
Если вы встретитесь с какими–нибудь неучтенными трудностями, можете либо обсудить их на форуме, либо обратиться за помощью к проекту. Особенно это относится к тем случаям, когда в ваших требованиях было по какой–то причине отказано: нам необходима обратная связь, для возможных исправлений и «работы над ошибками». По той же причине проекту нужны документы, которые были составлены в ходе вашего участия в возврате (прежде всего — решение суда, если до него дошло дело). О том, как их загрузить на сайт проекта, написано в рекомендациях для участников акции.
Для того, чтобы стать участником, зарегистрируйтесь и создайте заявку. В заявку включите описание тех действий, которые вы предпринимали до того, как зарегистрироваться в проекте. Если вы вели какую–то переписку с продавцом или получали от него документы (за исключением чеков), либо обращались в Потребнадзор или суд, эти документы также надо включить в заявку. После того, как вашу заявку удовлетворят, вступите в эту группу («Дело» — «Подписка на запросы»).

Настраиваемый поиск по drupal-сайтам

13 января 2009 в 16:02

Приглашаю в соавторы для участие в формировании поска по русскоязычным сайтам
http://drupal-ru.flexum.ru/

Привествуется так же предложение сайтов с полезной информацией по друпалу. В общем задумка сделать поиск удобный для большинства, в рамках бесплатных возможностей сервиса. А там видно будет, если вдруг дело пойдет и места не хватит. Качественному поиску по GPL проекту может андминистрация и навстречу пойдет по увеличению квоты:
http://flexum.ru/tariffs.html

По крайней мере пишут, что готовы рассмотреть такую возможность.

В настройках сервиса есть возможноть исключения или разрешение индексации в базу поиска по маске. Так что все в наших руках - как настроим, так и будет.

Если поддержите участием - проекту быть Smile

Искать пока не пробуйте, т.к. индексация только-только должна начаться. Минут 20 как создал этот поиск по сайтам для пользователей drupal.

Возможно баян, т.к. сервис уже давно существует. Там даже есть поиск с одноименным именем drupal, но его забросили так и не начав.

Предлагаю drupal-ru считать beta-версией и начать развивать.

Кто за? что скажете?

Drupal и SEO: новый подход к раскрутке

4 января 2009 в 19:01

Привет всем: "в недалеком прошлом когда космические корабли бороздилии... ээ.." - навеяно этим Тату салон и SEO Wink

Почитал и решил что стоит раскрыть тему так, чтобы всем видней и понятней было. Постараюсь простым языком без заумностей и специальных терминов, на объяснение которых еще статью наваять придется.

С чего начать раскрутку?

1. подбор ключевых слово и анализ конкуренции.

Эти вроде как два разных действия должны идти исключительно "рука об руку", т.к. требуется составить не просто список ключевых слов для продвижения сайта. Этот список должен обеспечить достижение результатов без надрыва, с минимумом риска и в разумное время. Впрочем иногда цели и сроки могут быть другими. Отрыв анализа конкуренции от подбора слов создает основные проблемы и ошибки в прогнозе достижения результатов.

подбор ключевиков

Подбирать слова можно (и нужно!) до создания сайта, но иногда требуется после создания. Как в случае с сайтом тату-салона, что упоминал выше.

Традиционные средства для подбора ключевиков (из бесплатных):

Битая кодировка при включенном кеше

30 ноября 2008 в 0:26

Кто-нить сталкивался с такой ситуацией - время от времени глючит кодировка при включенном стандартном кеше. Причем не для всех страниц, а для некоторых или вообще для какой-нить одной.

Вот сейчас на сайте http://mlm-lider.ru/ на главной страницы через все имеющиеся браузеры вижу битую кодировку контента. Меню, титл и ряд других надписей отображается корректно. Равно как и все остальные страницы сайта тоже корректно работают.

Кто сталкивался, кто знает? это попытка атаки или просто ошибка

13 сентября 2008 в 20:29

Кто-нить сталкивался с таким - в системном журнале несколько сотен страниц с двумя сообщениями о php ошибке:

Wrong parameter count for min() в файле /includes/menu.inc в строке 1224
и
array_keys() [function.array-keys]: The first argument should be an array в файле /includes/menu.inc в строке 1224

Эти ошибки идут в паре, причем по сотне и более приходится на одно и тоже время, например: 19-00, следующая партия ошибок идет на другое время 18-13 и т.д.