Joomla 1.5 Торможу с JFactory

Тема в разделе "Модернизация расширений", создана пользователем DKraev, 04.10.2010.

  1. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Здравствуйте. Ребят, уже сколько времени не могу вникнуть как использовать JFactory. Уже и инфы прочитал массу, но не доходит и все... Тупой с рождения!

    У меня есть собственный файл, к примеру test.php

    Он лежит в директории вирта - \components\com_virtuemart\

    Мне нужно получить некоторые данные из БД, обработать, сформировать и отправить письмо. И всегда я стопорюсь на одном и том же шаге. Мне нужно подключиться к БД Joomla, но $db = &JFactory::getDBO(); выдает мне "Fatal error: Class 'JFactory' not found"

    И с вот этой фигней я ну никак не могу справиться. Не могу понять как правильно подключиться к БД Joomla из своего файла. Читал много, но пишут ерунду какую-то. Может не там читал?

    Объясните недоумку, а?
     
  2.  
  3. Offline

    _voland_ Местный => Cпециалист <=

    Регистрация:
    12.04.2008
    Сообщения:
    2 171
    Симпатии:
    102
    Пол:
    Мужской
    По идее надо писать компонент или модуль, в зависимости от задач
     
  4. Offline

    Serge_cool Недавно здесь

    Регистрация:
    18.10.2009
    Сообщения:
    20
    Симпатии:
    2
    Пол:
    Мужской
    Пробуй это

    $database->setQuery('select * from #__users');
    $rows = $database->loadObjectList();
    for($i=0; isset($rows[$i]); $i++)
    echo $rows[$i]->name."<br>";

    Подставь свои таблицы и действия в цикл.
     
  5. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Да он не нужен, в принципе. Писать компонент из-за 10 строчек кода - стоит ли?

    Fatal error: Call to a member function setQuery() on a non-object
     
  6. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Ну конечно же... Подключение framework...

    В общем в моем случае получилось так:

    Код (PHP):
    1. $my_path = dirname(__FILE__);
    2.     $absolute_path = dirname( $my_path."/../../configuration.php" );
    3.  
    4. // Set up the appropriate CMS framework
    5.     define( '_JEXEC', 1 );
    6.     define( 'JPATH_BASE', $absolute_path );
    7.     define( 'DS', DIRECTORY_SEPARATOR );
    8.    
    9.     // Load the framework
    10.     require_once ( JPATH_BASE . DS . 'includes' . DS . 'defines.php' );
    11.     require_once ( JPATH_BASE . DS . 'includes' . DS . 'framework.php' );
    12.  
    13.     // create the mainframe object
    14.     $mainframe = & JFactory::getApplication( 'site' );


    Незнаю, правда, насколько этот код правильный...
     
  7. Offline

    Serge_cool Недавно здесь

    Регистрация:
    18.10.2009
    Сообщения:
    20
    Симпатии:
    2
    Пол:
    Мужской
    Просвети, что это? :)))
     
  8. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Чтобы заработали классы Joomla нужно прежде всего подключить её framework
     
  9. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    всё что тут было сказано это конечно умно!!!!
    а попробовать поработать с БД через класс самого VM не пробовал ни кто?
    по моему должно получится!!!!

    только при описании таблицы к которой будет произведён запрос не надо вставлять {vm}
    сдаётся мне что всё получится не хуже чем при подключении
     
  10. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Изложи конкретнее, что ты имеешь ввиду. Что значит
     
  11. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    у самого VM есть класс для работы с БД попробуй использовать его!!!

    самый простейший пример
    Код (PHP):
    1. $dbpc = new ps_DB();
    2.     $qpc = 'SELECT * FROM #__{vm}_category_xref WHERE category_child_id='.$category_id;
    3.     $dbpc->query($qpc);
    4.     $cpid = $dbpc->f('category_parent_id');
    5.     $qpc = 'SELECT * FROM  #__{vm}_category WHERE category_id='.$cpid;
    6.     $dbpc->query($qpc);

    такой код у меня находится в файле \components\com_virtuemart\themes\default\templates\browse\includes\browse_notables.php
    чтобы посмотреть что умеет этот класс изучи внутренности administrator\components\com_virtuemart\classes\ps_database.php
    в общем как я понимаю $permennia = new ps_DB(); можно вставить вообще в люой файл который находится в каталоге \components\com_virtuemart\, ну а сесли не заработает тогда подключить ps_database.php и не забудь из запроса убрать {vm}_

    P.S. так более доходчиво?
     
    Последнее редактирование: 05.10.2010
  12. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
  13. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    глянь в мой предыдущий пост, я его дополнил!!!

    если есть ещё вопросы пиши в аську, там проще и быстрее будет объяснить, нежели тут по 10- раз обновлять страничку
     
  14. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Fatal error: Class 'ps_DB' not found

    В общем, как я понимаю, пока framework не подключишь - не будет понта.
     
  15. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    я же написал - ты же читать умеешь
     
  16. DKraev
    Offline

    DKraev <i>(aka gft)</i> => Cпециалист <=

    Регистрация:
    16.08.2008
    Сообщения:
    1 627
    Симпатии:
    219
    Пол:
    Мужской
    Короче торможу. Не, пошел спать, а то голова совсем не соображает. Завтра буду разбираться :)
     
  17. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    а вот такой код в модуле mod_virtuemart_featureprod.php
    Код (PHP):
    1. // Load the virtuemart main parse code
    2. if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) {
    3.     require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' );
    4. } else {
    5.     require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' );
    6. }
    7.  
    8. require_once ( CLASSPATH. 'ps_product.php');
    9. require_once ( CLASSPATH. 'ps_product_category.php');
    10. $ps_product = new ps_product;
    11. $db = new ps_DB;

    похоже после подключения парсера можно производить на свет ps_DB
    Оффтопик (не в тему) - жми сюда!
     
  18. woojin
    Offline

    woojin Местный Команда форума => Cпециалист <=

    Регистрация:
    31.05.2009
    Сообщения:
    3 204
    Симпатии:
    334
    Пол:
    Мужской
    на твоё усмотрение [!]
     
  19. Offline

    Злой_гениЙ Недавно здесь

    Регистрация:
    22.01.2011
    Сообщения:
    5
    Симпатии:
    0
    Пол:
    Мужской
    Последнее редактирование модератором: 31.03.2014

Поделиться этой страницей

Загрузка...