Здравствуйте. Ребят, уже сколько времени не могу вникнуть как использовать JFactory. Уже и инфы прочитал массу, но не доходит и все... Тупой с рождения! У меня есть собственный файл, к примеру test.php Он лежит в директории вирта - \components\com_virtuemart\ Мне нужно получить некоторые данные из БД, обработать, сформировать и отправить письмо. И всегда я стопорюсь на одном и том же шаге. Мне нужно подключиться к БД Joomla, но $db = &JFactory::getDBO(); выдает мне "Fatal error: Class 'JFactory' not found" И с вот этой фигней я ну никак не могу справиться. Не могу понять как правильно подключиться к БД Joomla из своего файла. Читал много, но пишут ерунду какую-то. Может не там читал? Объясните недоумку, а?
Пробуй это $database->setQuery('select * from #__users'); $rows = $database->loadObjectList(); for($i=0; isset($rows[$i]); $i++) echo $rows[$i]->name."<br>"; Подставь свои таблицы и действия в цикл.
Да он не нужен, в принципе. Писать компонент из-за 10 строчек кода - стоит ли? Fatal error: Call to a member function setQuery() on a non-object
Ну конечно же... Подключение framework... В общем в моем случае получилось так: Код (PHP): $my_path = dirname(__FILE__); $absolute_path = dirname( $my_path."/../../configuration.php" ); // Set up the appropriate CMS framework define( '_JEXEC', 1 ); define( 'JPATH_BASE', $absolute_path ); define( 'DS', DIRECTORY_SEPARATOR ); // Load the framework require_once ( JPATH_BASE . DS . 'includes' . DS . 'defines.php' ); require_once ( JPATH_BASE . DS . 'includes' . DS . 'framework.php' ); // create the mainframe object $mainframe = & JFactory::getApplication( 'site' ); Незнаю, правда, насколько этот код правильный...
всё что тут было сказано это конечно умно!!!! а попробовать поработать с БД через класс самого VM не пробовал ни кто? по моему должно получится!!!! только при описании таблицы к которой будет произведён запрос не надо вставлять {vm} сдаётся мне что всё получится не хуже чем при подключении
у самого VM есть класс для работы с БД попробуй использовать его!!! самый простейший пример Код (PHP): $dbpc = new ps_DB(); $qpc = 'SELECT * FROM #__{vm}_category_xref WHERE category_child_id='.$category_id; $dbpc->query($qpc); $cpid = $dbpc->f('category_parent_id'); $qpc = 'SELECT * FROM #__{vm}_category WHERE category_id='.$cpid; $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. так более доходчиво?
глянь в мой предыдущий пост, я его дополнил!!! если есть ещё вопросы пиши в аську, там проще и быстрее будет объяснить, нежели тут по 10- раз обновлять страничку
Fatal error: Class 'ps_DB' not found В общем, как я понимаю, пока framework не подключишь - не будет понта.
а вот такой код в модуле mod_virtuemart_featureprod.php Код (PHP): // Load the virtuemart main parse code if( file_exists(dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' )) { require_once( dirname(__FILE__).'/../../components/com_virtuemart/virtuemart_parser.php' ); } else { require_once( dirname(__FILE__).'/../components/com_virtuemart/virtuemart_parser.php' ); } require_once ( CLASSPATH. 'ps_product.php'); require_once ( CLASSPATH. 'ps_product_category.php'); $ps_product = new ps_product; $db = new ps_DB; похоже после подключения парсера можно производить на свет ps_DB P.S. у тебя же башка варит лучше моей, глядя на твои ответы остальным, а с такой мелочью разобраться не можешь глядя на примеры я вообще всё пишу используя примеры из других мест, т.е. соображаю чего мне надо сделать, читаю чужой код (иногда не один файл), пишу свой собственный
у меня аналогичная проблема, во тут http://joomla-support.ru/thread/27127/ ничего не получается, кто нить подскажите =)