Блог пользователя - WiseMan

Помогите с обработкой массива [РЕШЕНО]

Аватар пользователя WiseMan

Ребят, помогите с обработкой массива.

Есть массив:

0 Спасибо

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

Аватар пользователя WiseMan

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

Помогите докрутить запрос для 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";?>
0 Спасибо

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

Аватар пользователя WiseMan

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

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

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

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

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

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

0 Спасибо

Как защитить drupal.ru от спамеров и флуда - решение возможно.

Аватар пользователя WiseMan

Думаю, выражу общее мнение, что спам в последнее время просто достал.

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

Каптчу - жестоко, ИМХО.

Кнопка "это спам" - сродни модерации => см. пункт первый )

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

Основы модуля уже есть captcha_after + правило для проверки на ссылки blockanonymouslinks

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

Такая превентивная мера по крайней мере обломает явный спам которым сейчас просто кишит сайт.

Срабатывание событий выдачи каптчи писать в лог - потом можно сделать выводы и совершенствовать.

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

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

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

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

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

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

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

Аватар пользователя WiseMan

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

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

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

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

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

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

1. модуль unisendresponder

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

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

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

2. модуль sms_unisendresponder

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

<?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?>

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

0 Спасибо

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

Аватар пользователя WiseMan

Для шаблона для 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);?>

0 Спасибо

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

Аватар пользователя WiseMan

Есть три таблицы {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 делать надо или что-то подобное, но никак не соображу :(
Не силен в сложных запросах.

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

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

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

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

0 Спасибо

Модуль nodeword - будьте аккуратны!

Аватар пользователя WiseMan

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

Но, стоит обратить внимание, т.к. по умолчанию устанавливая модуль nodeword на сайте в seo целях вы можете фактически получить отрицательный эффект.

Оказывается модуль nodeword во все "вторые" страницы, начиная с ?page=1 и далее, ставит в header тег content="noindex,follow"
Заметил совершенно случайно, просматривая ошибки в панели Яндекс-вебмастер.

Фактически получается, что все эти страницы не индексируются поисковиками - во как! seo-модуль ;)

В результате:
1. имеем существенные потери в посетителях за счет игнорирования поисковиками уникального контента
2. модули поиска по сайту, использующие поисковые движки - "отдыхают" и огромная доля контента становится неискабельна

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

Неожиданное открытие. Сайт Drupal.ru не исключение! ПРИМИТЕ МЕРЫ, пжта.

Попробуйте сами проверить каковы последствия. Берете любую, желательно уникальную и без знаков препинания, восклицания и т.п., фразу из комментариев дальше первой страницы в любой ветке и делаете поиск через Яндекс или Гугл по этой фразе заключенной в кавычки.

Или можно искать вот так:

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

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

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

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

0 Спасибо

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

Аватар пользователя WiseMan

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

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

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

0 Спасибо