Калькулятор рассчета стоимости потолков

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

Аватар пользователя Freakachoo Freakachoo 22 марта 2009 в 10:52

Добрый день всем Smile
Подскажите пожалста такой модуль, который бы считал стоимость потолков (к примеру, но вообще именно такое задание) по типу:
http://www.sprestij.ru/calc_req.php

Это видимо должен быть некий обработчик форм... его конечно можно просто ручками написано на странице из action формы, но это не сильно то удобно... да и как например указывать значения выбранных полей для формы (например вываливающийся список и потолки из франции - множитель на 1,5 а из россии - 1)... ? Для пользователей это будет убийственно Smile
Таким образом нужен какой-то указатель значений для полей и обработчик по этим полям (где указывать формулу)... вообщем. подскажите как сделать пожалуйста Smile

Комментарии

Аватар пользователя ankheg ankheg 22 марта 2009 в 12:52

Наверное можно за основу взять Views с Exposed filters, и полученную форму довести до нормального состояния, переписав phptemplate_views_filters() в template.php -- http://drupal.org/node/220200. А вставить какие-то формулы и обработку значений можно при помощи хуков Views -- http://views2.logrus.com/doc/html/group__views__hooks.html.

Но когда мне пришлось делать калькулятор, сам написал модуль. Там описание массива с формой больше всего времени занимает, если серьезный калькулятор.

Аватар пользователя ankheg ankheg 23 марта 2009 в 19:54

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

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

<?php

function select_product_menu($may_cache) {
  
$items = array();
  
$items[] = array(
        
'path' => 'select_conditioner',
    
'title' => t('Подобрать товар'),
    
'callback' => 'select_product_form',
        
'type' => MENU_CALLBACK,
    
'access' => user_access('access content')
  );
    return 
$items;
}

function 

select_product_my_form() {
    
$form = array();
    
$form['#redirect'] = false;
    
$form['warming'] = array(
        
'#type' => 'checkbox',
    
'#title' => 'Наличие такой-то функции'
    
);
  
$form['submit'] = array(
        
'#type' => 'submit',
        
'#value' => t('Подобрать')
    );
    return 
$form;
}

function 

select_product_my_form_submit($form_id$form_values) {
        
// Здесь для $form_values применяются формулы
        // ...
        // Дальше на основе рассчитанных значений формируется условие для SQL
        
$where " and p.field_cooling_capacity_value >= $capacity_total";
        
$sql "
        SELECT distinct n.nid
      FROM {node} n
        INNER JOIN {term_node} tn ON n.nid = tn.nid
            INNER JOIN {content_type_product} as p on n.nid = p.nid
      WHERE n.status = 1 
$where
            and (tn.tid = 20 or tn.tid = 28) and field_max_units_value >= 
$room_count
        ORDER BY 
$order 
        LIMIT 6"
;
        
$result db_query($sql);
        
$products = array();
        while (
$node db_fetch_object($result)) {
          
$products[] = $node->nid;
        }
        global 
$output_select;
        
$output_select '';
        
$output_select .= '<h1>Результаты подбора</h1>' theme('uc_catalog_products'$products);
}

function 

select_product_form() {
    
$output '';
    
$output .= drupal_get_form('select_product_my_form');
    if (
$_POST) {
        global 
$output_select;
        
$output .= $output_select;
    }
    return 
$output;
}
?>
Аватар пользователя mnv mnv 25 ноября 2009 в 13:54

"ankheg" wrote:
примерный код помощника

Спасибо за хороший пример!!! Для 6-го Друпала сделал калькулятор фотосъемки по аналогии, немного поменял код. В частности, убрал глобальную переменную. Вместо нее немного перестроил функцию прорисовки формы (select_product_form), вот мой текст этой функции

//Форма калькулятора/результата расчета
function photocalc_calcform()
{
  if ($_POST) {
    $output = photocalc_calcform_result();
  }
  else {
    $output = drupal_get_form('photocalc_calcform_get');
  }

  $output = '<div class="content">'.$output.'</div>';

  return $output;
}

И убрал submit (select_product_my_form_submit). Вместо него в функции photocalc_calcform_result смотрю значения в $_POST.
Еще прикрутил немного Javascript-а, чтобы не рисовать клиентам лишние поля, которые не надо заполнять при определенных условиях.
Еще сделаю сохранение в базу CRM и уведомление по email при заполнении, может быть капчу получится вставить - и будет вообще хорошо Smile
Если кому понадобится помощь - спрашивайте

Аватар пользователя Oberon7 Oberon7 25 ноября 2009 в 14:15

Похвалюсь своим калькулятором Smile
http://www.calorizator.ru/analyzer/body.
Сплошной JQuery, всё считается на клиенте. Думаю для многих видов калькуляторов можно делать jscript-версию без лишнего дерганья сервера.
Если у кого отключен js, дублировать обычной версией.

Аватар пользователя sadmin sadmin 25 ноября 2009 в 14:27

"Oberon7" wrote:
Похвалюсь своим калькулятором :)

ссылка на обсуждение калькулятора битая. подобный плагин видел где-то

Аватар пользователя mnv mnv 27 ноября 2009 в 0:32

"Oberon7" wrote:
Похвалюсь своим калькулятором :)

Да, хороший калькулятор! На основе какого-то модуля или с нуля?

Аватар пользователя Виктор Степаньков ака RxB Виктор Степаньк... 27 ноября 2009 в 0:56

Похвалюсь своим калькулятором Smile
http://www.calorizator.ru/analyzer/body.
Сплошной JQuery, всё считается на клиенте. Думаю для многих видов калькуляторов можно делать jscript-версию без лишнего дерганья сервера.
Если у кого отключен js, дублировать обычной версией.

Аватар пользователя Oberon7 Oberon7 16 марта 2010 в 11:46

Изначально сделал как обычную html не-друпал страницу. Jquery + jquery.trackbar + jquery.tools. Потом вставил в друпал как обычную страницу с небольшими друпальными модификациями.

Аватар пользователя igorek igorek 17 августа 2010 в 15:34

"Oberon7" wrote:
Похвалюсь своим калькулятором Smile
http://www.calorizator.ru/analyzer/body.
Сплошной JQuery, всё считается на клиенте

Присоединяюсь к вопросу какие модули????
То есть хотел спросить есть ли модули на drupal

Аватар пользователя alex.electron alex.electron 29 июля 2011 в 15:57

Привет всем. А у меня заказчик хочет калькулятор с хорошей админкой. Там должна быть таблица с кучей параметров для рачета. Как такое замутить? Может быть кто подскажет, где посмотреть или в какую сторону копать? Надо писать модуль свой наверное...?

Аватар пользователя igorek igorek 29 июля 2011 в 16:48

Я наконец то изучил Jquery и сделал класный, по-моему, калькулятор стоимости ремонта квартиры. Ещё можно составить смету онлайн.
Рулит этот файлик: /sites/all/themes/mrk/js/smeta.js
и эта страничка: /smeta.htm
Каждая позиция - это нода!

Аватар пользователя Crea Crea 29 июля 2011 в 17:27

igorek
Неплохо, только я бы табличку рисовал отдельно, в колонке рядом, и туда просто добавлял бы строки. А так, как сейчас - уж больно все в кучу напихано, затрудняет восприятие..ИМХО

Аватар пользователя alex.electron alex.electron 29 июля 2011 в 18:32

А как туда расценки попадают? Есть страница, где можно всем параметрам расценки вбивать или ручками на страницах править?

Аватар пользователя igorek igorek 30 июля 2011 в 0:17

Таблица эта вьюха.
Расценки ручками на страницах править.
Я их редко правлю.
Вообщем без Jquery ни куда. Можно и править сделать через аякс...
То есть готового модуля нет. Проще самому напилить как надо.

Аватар пользователя sadmin sadmin 4 августа 2011 в 22:13

"igorek" wrote:
Я наконец то изучил Jquery и сделал класный, по-моему, калькулятор стоимости ремонта квартиры. Ещё можно составить смету онлайн.

Реализация классная, понравилась