Новости Joomla

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!

Quantum Manager нужен сообществу, а автору нужна ваша поддержка!Файловый менеджер Quantum — одно...

Файловый менеджер Quantum — одно из самых популярных решений для Joomla, созданное разработчиком из сообщества Joomla, Дмитрием Цымбалом (@tsymbalmitia). Он делает Quantum удобным, безопасным и современным, обновляет его, исправляет уязвимости и отвечает пользователям — всё это в свободное от основной работы время.

Теперь настал момент для следующего шага: развитие проекта требует больше времени и ресурсов.

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

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Привет всем.Нужно решения, если оно есть конечно, что бы компонент обрабатывал код, если юзер зарегистрирован.А то так он работает только если захожу на страницу компоненте, когда создаю меню на компонент.
*

voland

  • Легенда
  • 11026
  • 588 / 112
  • Эта строка съедает место на вашем мониторе
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Код: php
if (JFactory::getUser()->id) {
//тут всё, что доступно зарегистрированным
}
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Еще разок.
Теперь понятнее только.
Да у меня есть такая проблема))Напишу и сам не понимаю о чем.
В общем делаю вишлист для VirtueMart.Аякс работает через контролер и при клике на кнопку добавляю в БД, если зарегистрирован, а вот когда когда не зарегистрирован то в сесию, и проверка если регистрирован добавить в БД.Так вот в бд добавляет при клике и тогда когда захожу на саму страницу вишлист.А мне надо что если я на любой другой старнице зарегистрировался, то в бд из сесии добавить.И в идеале только 1 раз, а не что бы всегда срабатывал запрос на разных страницах.
*

Shustry

  • Гуру
  • 6434
  • 745 / 3
Добавляйте одновременно с записью в БД и в сессию запись. Потом на других страницах проверяйте, перед обращением к БД.
*

olejenya

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

Shustry

  • Гуру
  • 6434
  • 745 / 3
Теперь опять ничего не понятно %)
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Теперь опять ничего не понятно %)
)))Да я не знаю теперь как правильно объяснить)
Короче у меня есть сесия с айдихами.И мне надо, когда юзер логинеться, то эта сесия записывалась в БД.
Сейчас у меня запись иде, только тогда коглда перехожу по ссылке на компонент.А хотелось бы, что бы при регистрации.И в идеале один раз, что бы этот запрос потом после перезагрузок не срабатывал.
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Привет.В общем я сделал все то что хотел кроме того момента что спрашивал здесь. Решил просто закончить, а потом по неясностям обращаться к вам.
Попробую еще раз объяснить. Компонент вишлист. Я добавляю продукты в сесию и вывожу в самом компоненте.Если юзер залогинился и зашел в компонент вишлиста, то продукты добавлються в БД. Как бы все хорошо.Но вот суть вопроса в том, как добавить в БД, если залогинился и не зашел в компонент?Пока что все как и работает, но вот с этим моментом не могу разобраться(((Чувак может залогиниться сделать покупку, но так и не зайти в компонент вишлиста, и продукты не попадут в БД.Помогите пожалуйстаз
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Вот еще наткнулся на такую проблему.Добавил товар, зарегистрировался и делаю запрос в БД пусто.Проверяю в БД есть товар.Обновляю страницу уже есть в БД товар.Хотя когда я залогинелся, то страница тоже перегрузилась, но в БД ниче не было.
вот код
Код
<?php 
$user =& JFactory::getUser();
if ($user->guest) { ?>
<a class="add_wishlist hasTooltip<?php if (in_array($product->virtuemart_product_id, $_SESSION['id'])) { echo 'go_to_whishlist active'; }?>" title="<?php echo JText::_('ADD_TO_WHISHLIST');?>"  onclick="addToWishlists('<?php echo $product->virtuemart_product_id; ?>');"><span></span><?php echo JText::_("ADD_TO_WHISHLIST"); ?></a>
<?php }else {
$db =& JFactory::getDBO();
   $q ="SELECT virtuemart_product_id FROM #__wishlists WHERE userid =".$user->id;
$db->setQuery($q);
$allproducts = $db->loadAssocList();
foreach($allproducts as $productbd){
$allprod['id'][] = $productbd['virtuemart_product_id'];
}
var_dump($allproducts);
?>
<a class="add_wishlist hasTooltip<?php if (in_array($product->virtuemart_product_id, $allprod['ids'])) { echo 'go_to_whishlist active'; }?>" title="<?php echo JText::_('ADD_TO_WHISHLIST');?>"  onclick="addToWishlists('<?php echo $product->virtuemart_product_id; ?>');"><span></span><?php echo JText::_("ADD_TO_WHISHLIST"); ?></a>

<?php } ?>


А вот код плагина кторый проверяет есть ли значения в сесии и запись делает.
Код
class plgSystemWishlists extends JPlugin
{
/**
* Class Constructor
* @param object $subject
* @param array $config
*/
public function __construct( & $subject, $config )
{
parent::__construct( $subject, $config );

}
function onBeforeRender() {
$app = JFactory::getApplication();
$doc = JFactory::getDocument();
$user =& JFactory::getUser();
if (!($app->isAdmin())){
if (!$user->guest) {
if (isset($_SESSION['id'])) {
$dbIds = $_SESSION['id'];
$db =& JFactory::getDBO();
$q ="SELECT virtuemart_product_id FROM #__wishlists WHERE userid =".$user->id;
$db->setQuery($q);
$allproducts = $db->loadAssocList();
foreach($allproducts as $productbd){
$allprod['ids'][] = $productbd['virtuemart_product_id'];
}
//var_dump ($allproducts);
//print_r($productbd['virtuemart_product_id']);
for($r=0; $r<count($dbIds); $r++) {
if(!in_array($dbIds[$r],$allprod['ids'])) {
   $q = "";
$q = "INSERT INTO `#__wishlists`
(virtuemart_product_id,userid )
VALUES
('".$dbIds[$r]."','".$user->id."') ";
//var_dump ($dbIds[$r]);
$db->setQuery($q);
$db->queryBatch();
   }
   }
unset($_SESSION['id']);
   }
   }
}

}


}  ?>
Я проверяю, после того как залогинился в БД значения появились.Но вот код, проверка кнопки выще, не работает после первой перезагрузки, надо еще раз обновить страницу.Помогите, подскажите куда дальщ рыть.Или я что не так делаю?Я думал что плагин первый отработал событие, но как оказалось одновременно с компонентом что ли.Есть идеи??Спасибо
« Последнее редактирование: 12.12.2013, 00:53:41 от olejenya »
*

b2z

  • Глобальный модератор
  • 7287
  • 778 / 0
  • Разраблю понемногу
Цитировать
Добавил товар, зарегистрировался и делаю запрос в БД пусто.
Кто добавил товар, кто зарегистрировался? Если Вы хотите помощи, то не заставляйте нас ломать себе мозг. Как Вы вообще код пишите, если не можете четко нам пояснить действия?
*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Кто добавил товар, кто зарегистрировался? Если Вы хотите помощи, то не заставляйте нас ломать себе мозг. Как Вы вообще код пишите, если не можете четко нам пояснить действия?
Теперь я вас не понимаю.
На сайт заходит юзер.Он или зарегистрирован или нет.Если зарегистрирован он добавляет товар в вишлист и запись делаеться в БД.Если не зарегистрирован, то записиваю в сесию.
Код выше - это плагин который делает проверку и кнопка добавления в вишлист, где я тоже делаю проверку, что бы сделать кнопку активной, если есть запись в БД.
Что именно не ясно?Или какой то код надо еще написать, что бы было яснее?Я не понимаю пока что,  тоже в чем не ясность.
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Вам нужно сделать плагин, который будет отрабатывать при логине пользователя (onUserLogin). И в нем реализовывать проверку если есть запись в сессии, то писать в БД.

*

olejenya

  • Захожу иногда
  • 218
  • 3 / 0
Вам нужно сделать плагин, который будет отрабатывать при логине пользователя (onUserLogin). И в нем реализовывать проверку если есть запись в сессии, то писать в БД.
Спс.Попробую.Но вопрос все таки остается.Действие в плагине будет обрабатываться первым а в компоненте вторым?Или одновременно??Или как в компоненте на кнопки сделать проверку, что бы выполнялось, после того, как сработает плагин?Уже бьюсь больше недели))и много чего читать по Joomla начал, наверное надо было с этого начинать))
*

mohax

  • Давно я тут
  • 901
  • 66 / 3
Спс.Попробую.Но вопрос все таки остается.Действие в плагине будет обрабатываться первым а в компоненте вторым?Или одновременно??Или как в компоненте на кнопки сделать проверку, что бы выполнялось, после того, как сработает плагин?Уже бьюсь больше недели))и много чего читать по Joomla начал, наверное надо было с этого начинать))
Я не совсем понял проблему, но судя по всему, у вас проблема в том, что событие onBeforeRender() в вашем плагине отрабатывает уже после компонента. Почитайте внимательно про события, по которым отрабатывают плагины в Joomla и выбирите себе подходящий.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как сделать модуль на полный экран? Подробнее в в теме?

Автор 62411

Ответов: 3
Просмотров: 1740
Последний ответ 23.02.2022, 20:35:06
от marksetter
Сделать аналог

Автор pegas-k1

Ответов: 8
Просмотров: 1862
Последний ответ 02.02.2021, 13:56:21
от **vadim**
Как сделать рабочим {loadposition} или jdoc:include в com_content?

Автор Amigo9876

Ответов: 5
Просмотров: 2346
Последний ответ 31.07.2020, 16:49:37
от tigra-uki
Ошибка при регистрации

Автор lilian1982

Ответов: 9
Просмотров: 1844
Последний ответ 07.11.2019, 04:59:51
от Cedars
Как закрыть от посещения страницу регистрации Joomla?

Автор Csandr

Ответов: 27
Просмотров: 7137
Последний ответ 01.04.2019, 18:32:18
от ProtectYourSite