Новости Joomla

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

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Доброго всем времени суток
Возник вопрос, который не смог решить. Хотелось бы разобраться как можно сделать без создания разного рода куки и с малыми затратами по времени.
Есть стандартный модуль (mod_search). Хотелось бы настроить, чтобы он мог передавать в компонент некоторые дополнительные параметры. Конечно также желательно чтобы они не отображались в строке браузера. Joomla 1.6
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #1 : 23.04.2012, 12:08:22 »
К сожалению без js этого не сделать.
Тоесть имеем форму method="get" и поле keyword. Значит мы не можем передать какието параметры методом post. Если форме указать method="post" то в адресной строке не будет добавляться keyword (а будет передаваться через post) что тоже неправильно.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #2 : 23.04.2012, 12:45:02 »
К сожалению без js этого не сделать.
Тоесть имеем форму method="get" и поле keyword. Значит мы не можем передать какието параметры методом post. Если форме указать method="post" то в адресной строке не будет добавляться keyword (а будет передаваться через post) что тоже неправильно.

При всём уважении такой вопрос - вы исходное сообщение прочли? Там говориться про изменение стандартного модуля.
В стандартном модуле прописано:
<form action="<?php echo JRoute::_('index.php');?>" method="post">

В конце описания формы прописано:
   <input type="hidden" name="task" value="search" />
   <input type="hidden" name="option" value="com_search" />
   <input type="hidden" name="Itemid" value="<?php echo $mitemid; ?>" />

Добавить еще одну строку вполне можно. Но как из неё считать данные?
Соответственно не всё отображается в адресной строке (что и требуется, чтобы не отображалось). Но как считать данные из input если сделать еще одну?

*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #3 : 23.04.2012, 14:45:29 »
Либо ни у кого не было желания ковыряться в стандартных модулях (для не совсем стандартных решений), либо никто не может дать толкового совета и по делу без лишних нравоучений. Жаль
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #4 : 23.04.2012, 15:20:05 »
Либо ни у кого не было желания ковыряться в стандартных модулях (для не совсем стандартных решений), либо никто не может дать толкового совета и по делу без лишних нравоучений. Жаль
Да с модулем тут как раз все понятно. Добавил input и все. Другое дело, что надо копать компонент com_search, в которые передаются данные. Вам эти данные надо в базу добавить или просто получить? Посмотрите в контроллере компонента, скорее всего там они приходят.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #5 : 23.04.2012, 17:11:23 »
ок, сообщение я прочитал, а вот в стандартный модуль не глядел. Почемуто думал что там get. Вобще, кейворд должен передаваться ГЕТом, но в условиях cms это становится проблемой, ибо помимо кейворда передаются другие параметры...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #6 : 25.04.2012, 13:27:50 »
Да с модулем тут как раз все понятно. Добавил input и все. Другое дело, что надо копать компонент com_search, в которые передаются данные. Вам эти данные надо в базу добавить или просто получить? Посмотрите в контроллере компонента, скорее всего там они приходят.

Запись статистику в базу определённо происходит в админке com_search. А вот гдеи как там получаются данные из модуля - понять пока не получается. А требуется потом сделать запись, уникальную для каждой страницы, где производился поиск
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #7 : 25.04.2012, 15:33:10 »
Похоже что в компоненте цепляется только то, что передается через POST.
Блин. Куда копать про переменные?
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #8 : 25.04.2012, 15:36:21 »
Еще одна странная фишка. Лишние запросы из базы можно было бы удалить, но прикол состоит в том, что date() в модуле и в админке - дают разные значения в отношении времени
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #9 : 25.04.2012, 15:39:56 »
Добавить еще одну строку вполне можно. Но как из неё считать данные?

Код: php
$myVar = JRequest::getVar('myvar');

Функция работает с post и с get и еще много с чем - смотри доки.
По сути это удобная обертка для $_REQUEST['myvar'] и еще много для чего.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #10 : 25.04.2012, 15:41:39 »
Еще одна странная фишка. Лишние запросы из базы можно было бы удалить, но прикол состоит в том, что date() в модуле и в админке - дают разные значения в отношении времени

Что такое "лишние запросы" ?
Как их можно удалить из базы? Бред какойто. Задачу опиши - так проще тебя понять будет.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #11 : 25.04.2012, 15:43:58 »
Еще одна странная фишка. Лишние запросы из базы можно было бы удалить, но прикол состоит в том, что date() в модуле и в админке - дают разные значения в отношении времени
возвращаемое функцией date() значение будет разным в каждый момент времени - ведь так и задумано, что удивительного то?
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #12 : 25.04.2012, 15:51:43 »
danik.html - кнопку Изменить вроде никто не отменял.

filoleg - Вы все верно поняли, в компоненте (в контроллере) все переменные из модуля инициализируются через:
Код
$myVar = JRequest::getVar('myvar');

Соответственно добавьте в модуль свою, и получите её в контроллере. А дальше делайте с ней что угодно :)
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #13 : 25.04.2012, 15:54:06 »
возвращаемое функцией date() значение будет разным в каждый момент времени - ведь так и задумано, что удивительного то?

Удивительно что разница на четыре часа. :)
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #14 : 25.04.2012, 15:57:10 »
И почему тут обсуждается несколько вопросов сразу? Давайте про date() в новой теме поговорим!
Правила форума - один вопрос = одна тема.
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #15 : 25.04.2012, 16:00:53 »
Ок. Тогда вопрос как нормально использовать $myVar = JRequest::getVar('myvar');?
скажем переменная обзывается $proba
В модуле написано $proba="йцукцукцукцуке". Так понимаю, что надо что-то сделать ещё, чтобы компонент мог увидеть её? Что?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #16 : 25.04.2012, 16:04:51 »
Модуль
<input type="hidden" name="proba" value="йцукцукцукцуке" />

Контроллер
$proba= JRequest::getVar('proba');
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #17 : 25.04.2012, 16:14:55 »
Хорошо. Тогда дальше. Пусть переменная попала в контролёр компонента. Каким образом её передать в админку этого же компонента, где собственно и происходит запись в базу?
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #18 : 25.04.2012, 16:23:13 »
Зачем в админку, можно сразу в таблицу. Как-то так:

Код: php
$db = JFactory::getDbo();
$query = 'INSERT INTO `my_table` VALUES (' . $proba . ')';
$db->setQuery($query);
$db->query();

Код примерный, сами подставьте свои данные.
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #19 : 25.04.2012, 16:25:55 »
Большое спасибо. Хоть немного стало понятно - как работают некоторые вещи.
Решил удалить формирование статистики из админки и прописать всё в самом компоненте.
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #20 : 25.04.2012, 16:28:01 »
Большое спасибо. Хоть немного стало понятно - как работают некоторые вещи.
Решил удалить формирование статистики из админки и прописать всё в самом компоненте.

Я бы конечно ещё отфильтровал бы переменну $proba, а то всякую гадость могут в базу передать таким образом. Лучше вот тут:
Код: php
$proba= JRequest::getVar('proba');

сделать так:
Код: php
$proba= JRequest::getString('proba');

Вот тута есть неплохая документация.
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #21 : 25.04.2012, 16:29:37 »
Да уж.. а причем тут модуль поиска и передача переменной в компонент тогда? Хотя...тебе виднее...
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

danik.html

  • Живу я здесь
  • 2650
  • 353 / 4
Re: Передача переменной в компонент
« Ответ #22 : 25.04.2012, 16:31:11 »
Я бы конечно ещё отфильтровал бы переменну $proba, а то всякую гадость могут в базу передать таким образом. Лучше вот тут:
Код: php
$proba= JRequest::getVar('proba');

сделать так:
Код: php
$proba= JRequest::getString('proba');
Насколько мне известно - sql-иньекцию как раз можно сделать тупо передав нужную строку, так что не поможет...
Но тс вобще человек странный, не понятно че он хочет. он и сам видимо не знает.
【Мегапак Virtuemart:
 • метатеги (description,keywords)
 • заголовки (title)
 • красивые алиасы (чпу) без тормозов и дублей!
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Re: Передача переменной в компонент
« Ответ #23 : 25.04.2012, 16:32:40 »
Насколько мне известно - sql-иньекцию как раз можно сделать тупо передав нужную строку, так что не поможет...
Но тс вобще человек странный, не понятно че он хочет. он и сам видимо не знает.
Ну... Надо бы ещё обезопасить конечно с помощью $db->quote, хотя это же INSERT - какая тут инъекция?

Вот полезный туториал на эту тему - Безопасные SQL запросы
*

filoleg

  • Захожу иногда
  • 90
  • 0 / 0
Re: Передача переменной в компонент
« Ответ #24 : 25.04.2012, 16:43:39 »
Но тс вобще человек странный, не понятно че он хочет. он и сам видимо не знает.

Да не. Я знаю что хочу. В основном вопрос и стоял - как передать в компонент переменную из модуля. Это разрешилось. Стало понятно. Было еще непонятно как передать в админку эти данные, поскольку в стандартном компоненте статистика прописывалась как раз в админке, а не контролёре компонента. Это также разрешилось удалением из админки блока статистики.

 
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Убрать уровни подкатегорий в меню

Автор desaund1

Ответов: 0
Просмотров: 1337
Последний ответ 10.08.2017, 22:34:06
от desaund1
Изменить форму на главной ?

Автор warlocksp

Ответов: 2
Просмотров: 1191
Последний ответ 19.02.2017, 15:44:11
от warlocksp
Дублирование на сайте

Автор derenikp

Ответов: 3
Просмотров: 1311
Последний ответ 08.01.2017, 17:30:00
от derenikp
Переменная в ссылках.Не выполняется задаm

Автор ghostcom

Ответов: 25
Просмотров: 1598
Последний ответ 06.09.2016, 17:13:20
от ghostcom
ошибка "File for Model inventory not found"

Автор polgrig

Ответов: 0
Просмотров: 1352
Последний ответ 05.08.2016, 14:36:02
от polgrig