Новости Joomla

0 Пользователей и 1 Гость просматривают эту тему.
  • 15 Ответов
  • 5189 Просмотров
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
Создал форму онлайн-калькулятора, где по многим выбранным параметрам в конце вычисляется сумма заказа. Соответственно выводится таблица с выбранными параметрами и суммой. Но в таблице наличествуют и предыдущие записи, которые либо не должны вообще существовать, либо просто быть не видны клиентам. Пытался убрать автонумерацию id, в надежде, что срока таблицы будет каждый раз переписываться, но сразу возникла ругань по поводу уже имеющегося id с таким значением. Попытка отобразить в странице информацию из таблицы через {fabrik view=element table=5 rowid=47 element=proflist___summa} успешна, но только когда знаешь, что запись под id=47 (как в данном случае). Каким образом все-таки заставить фабрику отображать только введенные пользователем параметры и сумму по этим параметрам, и ничего более?
*

ovenm

  • Захожу иногда
  • 101
  • 3 / 0
  • Мы все сможем, если захотим
обычно заказ имеет номер, который прописан в другой таблице, например список заказов.
в элементах заказа прописываю в каждой строке этот номер.
Данную проблему решил путем запроса к списку заказа, вытаскиваю номер и подставляю в вызов {fabrik ...
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
А как подставить номер в вызов {fabrik view}? я пытался закинуть в этот запрос переменную вместо уникального числа - не получается. В хелпах их форума ничего не нарыл. Просветите пожалуйста.
*

ovenm

  • Захожу иногда
  • 101
  • 3 / 0
  • Мы все сможем, если захотим
<?php
$user = &JFactory::getUser();
//echo $user->name;
      //foreach ($user as $k=>$v) {
      //   echo   "$k, $v<br>";   }

   $db = &JFactory::getDBO ();
   
   $query = 'SELECT  cb_dogroup   ' . ' FROM #__comprofiler where id='.$user->id;
      $db->setQuery ( $query );   
      $cb_dogroup = $db->loadResult();
<?php      
   
$ind=9;
echo "{fabrik view=table id=$ind}";

?>
{fabrik view=table id=13}

Показывает две  таблицы
аналогично добавляем и фильтр
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
в первом блоке явно не хватает куска кода... =) Причем самого главного куска, который и осуществляет вывод. =)
А можно как-то решить такую тему через куки? Ведь задача сводится к выбросу уникального идентификатора клиента "на сторону", а потом вывод информации, полученной по этому идентификатору, то есть только его, родного, расчет сметы и ничей более. =)
*

ovenm

  • Захожу иногда
  • 101
  • 3 / 0
  • Мы все сможем, если захотим
Вывод (генерация текста) как раз и приведен. а выборка данных для фильтара - нет. его заменил присваиванием переменной константы.
Другое дело, что такой код у меня работает через "заднее крыльцо"

в материале прописан код: {jumi [oven_doc/mdoc_deputat.php] } - через компонент jumi вызывается файл для исполнения, в котором уже вызов fabrik прописан. перед ним можно в базу сходить что нибудь вытащить.
Подбирал варианты пока не нашел работающий.

А фильтр на таблицу уже строй в зависимости от постановки задачи. В твоем случае это может быть просто пользователь, тогда можно просто в контенте сделать вызов
          {fabrik view=table id_user={$my->id}}
          {fabrik view=table id=[$my->id]}

это при том, что у пользователя будет только один заказ.

смотри еще в теме "Ограничение прав пользователей"
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
ага, попробую так. дело в том, что по сути распухающая от записей таблица мне нафиг не нужна, ибо делаю калькулятор, чтобы по введенным параметрам клиент получил сумму заказа, которая автоматом вместе с остальными введенными параметрами встраивается в коммерческое предложение. Ну а его распечатать, отмейлить и т.п. И собственно все, дальше запись в таблице уже не нужна.
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
почти решил проблему. При выгрузке формы в таблицу создается куки с идентификатором записи таблицы. делаю это путем Submission Plugins Run PHP.
$a={proflist___fabrik_internal_id}; setcookie("blablabla",$a,time()+100);
Но дальше пытаюсь загрузить через вызов {fabrik view=element table=5 rowid=$_COOKIE['blablabla']} - посылает нахрен с отвисанием сайта, пишет что плагин запустить не может.
Пытаюсь загрузить через вызов плагина внедрения PHP кода в страницу, сам код такой (в отдельном файле)
<?php
$a=$_COOKIE['blablabla'];
echo "{fabrik view=element table=5 rowid=$a }";
?>

Так эта сволочь нагло выдает мне на странице результат запроса, который мне нужен, то есть {fabrik view=element table=5 rowid=74 }. Но мне не надо показывать этот вызов, надо его выполнить! =) Вопрос в студию, как можно заставить вызов {fabrik view} отработать значение переменной из куки?
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
Ура! Добил-таки!
Пришлось хакнуть fabrik.php. Открываем, ищем этот код:
            case 'rowid':
               $row = $m[1];
               $matches = array();
               if ($row == -1) {
                  $row = $user->get( 'id' );
               }
               $usersConfig->set( 'rowid', $row );
               $rowid = $row;
               break;
После него добавляем следующее:
            case 'rowidcookie':   
               $rowid = @$_COOKIE['blablabla'];
               break;
После этого запрос в странице выглядит так:
{fabrik view=element table=5 rowidcookie element=proflist___summa}, в качестве элемента для показа в любом месте можно выбрать любой элемент только этой записи.
Если клиент сделает новые вычисления, то автоматом запишется новая индивидуальная "печенька". Более того, если он уйдет с сайта и вернется, все равно, пока живет эта печенька, клиент увидит свои родные вычисления по заказу. Нужно только периодически чистить таблицу.
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
Упорядочу свои познания:
Для того, чтобы сделать калькулятор требуются плагины FabrikCalc, FabrikPHP, Fabrik view.
Во вкладке формы submission plugins выбираем Run PHP, делаем его доступным везде.
В поле кода пишем $a={proflist___fabrik_internal_id}; setcookie("blablabla",$a,time()+600); time может быть любым, это время жизни cookies.
Далее ломаем fabrik.php, лежит в папке www/plugins/content/
Как ломать - написал выше.
Получаем новый вид команды вывода в своем материале:
{fabrik view=element table=5 rowidcookie element=element_name}
Что это дает: Материал можно оформить как коммерческое предложение - с логотипом, реквизитами и так далее, и в нужных нам местах проставлять все введенные клиентом значения.
И, что самое полезное - эта информация индивидуальна для каждого посетителя, время жизни этой информации будет зависеть от времени жизни cookies.
Вот как-то так.
=)
*

ovenm

  • Захожу иногда
  • 101
  • 3 / 0
  • Мы все сможем, если захотим
В общем нормально. Но я бы всетаки завязался на регистрацию пользователя (на его профиль).
В этом случае можно по данным из профиля и всякие документы печатать, в которых требуются данные клиента.
А хранить инфу о заказе необходимо все же для истории.
аналогичная задача с прайслистом, объединенным с заказом продукции с подсчетами по пути и выводом итоговой суммы как по группам товаров (услуг) так и в целом. и печать в дальнейшем заказа, тз и тп
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
Обычно люди пугаются обязательной регистрации. В данном случае возможен вариант такой: клиент видит сумму его заказа, представленного в виде коммерческого предложения, его сумма устраивает, тогда бобро пожаловать на регистрацию и отправку точных сведений о себе и т.д. и т.п. Да и инфа о заказе хранится в основной таблице, просто иногда (раз в неделю например), таблица чистится. Если срок жизни куки поставить бесконечным, то реально заказчик будет видеть свои вычисления пока живет сама таблица, ну а если он зарегистрировался и отправил нам запрос, тогда данные сливаются непосредственно в его папку. Ну как-то так, по крайней мере этот метод дает больше свободы клиенту, и простоты разработки нам, запаренным... Как сделаю - напишу где рабочий пример глянуть можно будет
*

ovenm

  • Захожу иногда
  • 101
  • 3 / 0
  • Мы все сможем, если захотим
Дело хозяйское. Тем более что получилось.
А насчет не любви к регистрации и прочим формальностям ты прав.
однако куки могут быть и выключенными. надо проверять.
*

a_niskin

  • Новичок
  • 9
  • 0 / 0
А я предупреждаю перед вводом формы - включите куки! =)
*

ovenm

  • Захожу иногда
  • 101
  • 3 / 0
  • Мы все сможем, если захотим
Хорошо. Потом дай ссылку.
*

negodiy

  • Осваиваюсь на форуме
  • 28
  • 1 / 0
народ, подскажите, почему может не выполняться php?
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

С чего начать знакомство с Fabrik? (Несколько уроков посвященных компоненту)

Автор xpank

Ответов: 7
Просмотров: 2377
Последний ответ 22.06.2022, 16:07:31
от RomanA
Fabrik кол-во строк в таблице

Автор Vdmit

Ответов: 2
Просмотров: 1703
Последний ответ 24.05.2021, 10:55:53
от Vdmit
Fabrik list plugin - Table Edit

Автор yunoshev

Ответов: 0
Просмотров: 1748
Последний ответ 09.01.2021, 11:22:10
от yunoshev
Может быть Fabrik уже не конструктор форм, а CCK ?

Автор pirks

Ответов: 0
Просмотров: 2851
Последний ответ 19.02.2017, 09:43:48
от pirks
Fabrik для чайников как сделать Hello, world?

Автор AngelikaKS

Ответов: 1
Просмотров: 4286
Последний ответ 15.06.2016, 16:40:43
от Gorilla