Новости Joomla

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

rambeer

  • Новичок
  • 4
  • 0 / 0
Есть ли существующие готовые решения по данному вопросу?
*

shprota

  • Давно я тут
  • 770
  • 53 / 1
  • Тружусь, не покладая рук
Вопрос на уровне "есть ли компоненты, которые выводят текст на сайт" :)
*

rambeer

  • Новичок
  • 4
  • 0 / 0
Вопрос на уровне "есть ли компоненты, которые выводят текст на сайт" :)
Требования:

Возможность добавлять внешние БД
Возможность прописывать запросы к таблицам БД
Настройка вывода html-таблицы
Возможность вывода как категорий, так и отдельных материалов. Также нужна возможность поиска по определенным таблицам БД
*

albertino

  • Осваиваюсь на форуме
  • 18
  • 0 / 0
Посмотри Fabrik 2
Сайт: http://fabrikar.com/
Русскоязычный форум: http://joomlaforum.ru/index.php/board,269.30.html
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Есть ли существующие готовые решения по данному вопросу?
Прошу прощения) а вы себе нашли/сделали такой компонент?) а то для меня это как раз актуально)
*

sergoguga

  • Давно я тут
  • 896
  • 70 / 8
  • www.mpbox.ru
Прошу прощения) а вы себе нашли/сделали такой компонент?) а то для меня это как раз актуально)
на уровне модуля можно сделать, компонент - не-е-е, дорого будет слишком для такой простой функции.
или вообще код в модуль произвольного кода да и все)))
>>> Верстка 100 евро - ждешь новый курс? Пиши!
>>> Создание моб. приложений по ГОСТу)))! Личка работает!
>>> Микроразметка по стандартам - цены адекват! Пиши, не боись!
>>> Личный кабинет на ZOO - уже сделан! Пиши в личку, не стесняйся!
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
на уровне модуля можно сделать, компонент - не-е-е, дорого будет слишком для такой простой функции.
или вообще код в модуль произвольного кода да и все)))
думаете модуль справится?...если во внеш бд несколько таблиц, и нужно не просто вывод того или иного, а несколько выводов. типа как в компоненте несколько видов: для списка и для конкретного элемента...
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
думаете модуль справится?...если во внеш бд несколько таблиц, и нужно не просто вывод того или иного, а несколько выводов. типа как в компоненте несколько видов: для списка и для конкретного элемента...
Если типа как в компоненте, то нужно использовать компонент, а не модуль!
*

sergoguga

  • Давно я тут
  • 896
  • 70 / 8
  • www.mpbox.ru
думаете модуль справится?...если во внеш бд несколько таблиц, и нужно не просто вывод того или иного, а несколько выводов. типа как в компоненте несколько видов: для списка и для конкретного элемента...
а то!! ото ж!!))
да хоть сто таблиц, никак не связано - компонент или модуль!
все можно и силами модуля сделать, если вы имеете ввиду вывод на фронте!

вижу, тему потянуло не туда уже, скатываемся на обсуждение ...)))
>>> Верстка 100 евро - ждешь новый курс? Пиши!
>>> Создание моб. приложений по ГОСТу)))! Личка работает!
>>> Микроразметка по стандартам - цены адекват! Пиши, не боись!
>>> Личный кабинет на ZOO - уже сделан! Пиши в личку, не стесняйся!
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
а то!! ото ж!!))
да хоть сто таблиц, никак не связано - компонент или модуль!
все можно и силами модуля сделать, если вы имеете ввиду вывод на фронте!
Вы будете силами модуля делать вывод списка с пагинацией к примеру и переход из списка в запись?
*

sergoguga

  • Давно я тут
  • 896
  • 70 / 8
  • www.mpbox.ru
Вы будете силами модуля делать вывод списка с пагинацией к примеру и переход из списка в запись?
да, показать?))) все дело в правильных запросах к базе и немного волшебной верстки)))) ну конечно, не будет этих кнопок (глупых по моему), чтобы выбрать, по 10 товаров показать на странице или по 50, сортировка тоже идет лесом, только изначально запрограммированная, и т.д....)))))
>>> Верстка 100 евро - ждешь новый курс? Пиши!
>>> Создание моб. приложений по ГОСТу)))! Личка работает!
>>> Микроразметка по стандартам - цены адекват! Пиши, не боись!
>>> Личный кабинет на ZOO - уже сделан! Пиши в личку, не стесняйся!
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
да, показать?))) все дело в правильных запросах к базе и немного волшебной верстки)))) ну конечно, не будет этих кнопок (глупых по моему), чтобы выбрать, по 10 товаров показать на странице или по 50, сортировка тоже идет лесом, только изначально запрограммированная, и т.д....)))))
вообще какая разница модуль это или компонент. они примерно одинаковые, те же контроллеры, модули и вид. факт в том, чтоб не получается без ошибок тот же компонент helloworld подключить к внешней базе. точнее подключить получается, и даже вывод в модуле если поставить, то тоже выходит то что надо, а дальше берет из внутренней таблицы. хз в чем проблема, уже везде где можно было поменять бд на бд2 уже поменяно)) может кто разует глаза?))
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
да, показать?))) все дело в правильных запросах к базе и немного волшебной верстки)))) ну конечно, не будет этих кнопок (глупых по моему), чтобы выбрать, по 10 товаров показать на странице или по 50, сортировка тоже идет лесом, только изначально запрограммированная, и т.д....)))))
Ладно достану козырь, как вы в этом случае прикрутите ЧПУ?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
вообще какая разница модуль это или компонент. они примерно одинаковые, те же контроллеры, модули и вид. факт в том, чтоб не получается без ошибок тот же компонент helloworld подключить к внешней базе. точнее подключить получается, и даже вывод в модуле если поставить, то тоже выходит то что надо, а дальше берет из внутренней таблицы. хз в чем проблема, уже везде где можно было поменять бд на бд2 уже поменяно)) может кто разует глаза?))
Какая разница хлеб или торт, и там и там есть мука.. но почему то никто не есть суп с тортом )

Глаза обязательно разуем, как только увидим код модели!
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Какая разница хлеб или торт, и там и там есть мука.. но почему то никто не есть суп с тортом )

Глаза обязательно разуем, как только увидим код модели!

секундочку...
Код
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
// import the Joomla modellist library
jimport('joomla.application.component.modellist');
/**
 * HelloWorldList Model
 */
class HelloWorldModelHelloWorlds extends JModelList
{
/**
* Method to build an SQL query to load the list data.
*
* @return string An SQL query
*/
protected function getListQuery()
{

$option = array(
        'driver' => 'mysqli',
        'host' => 'mysql.moyorodnoye.myjino.ru',
        'user' => 'moyorodnoye',
        'password' => '***',
        'database' => 'moyorodnoye_available',
        'prefix' => 'qp8br_'
        );
       
$db2 = JDatabase::getInstance( $option );

// Create a new query object.
//$db = JFactory::getDBO();
//$list = $db2->setQuery( 'SELECT * FROM #__table' )->loadObjectList();
$query = $db2->getQuery(true);
// Select some fields
$query->select('id,greeting');   // а тут походу берет из локальной, хотя может оно еще где-то берет?..
// From the hello table
$query->from('#__helloworld');
$db2->setQuery($query);
$res = $db2->loadObject();
  echo $res->greeting; // тут выводит сообщение из внешней базы как и надо
return $query;
}
}
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
в fields и tables было подключено таким же образом бд, вместо $db = JFactory::getDBO();
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Ну вы почти сделали все что я говорил одно только не сделали, родительский класс JModelList то работает не с внешней базой, а с текущей )
А что бы его заставить работать с внешней добавьте конструктор:
Код: php
	public function __construct( $config = array() )
{
parent::__construct( $config );
$this->_db = JDatabase::getInstance(
array(
'driver' => 'mysqli',
'host' => 'mysql.moyorodnoye.myjino.ru',
'user' => 'moyorodnoye',
'password' => '***',
'database' => 'moyorodnoye_available',
'prefix' => 'qp8br_'
)
);
}

а в  getListQuery() оставьте только запрос:
то есть:
Код: php
$query = $this->getDbo()->getQuery(true);
$query->select('id,greeting')->from('#__helloworld');
return $query;
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Ну вы почти сделали все что я говорил одно только не сделали, родительский класс JModelList то работает не с внешней базой, а с текущей )
А что бы его заставить работать с внешней добавьте конструктор:
Код: php
	public function __construct( $config = array() )
{
parent::__construct( $config );
$this->_db = JDatabase::getInstance(
array(
'driver' => 'mysqli',
'host' => 'mysql.moyorodnoye.myjino.ru',
'user' => 'moyorodnoye',
'password' => '***',
'database' => 'moyorodnoye_available',
'prefix' => 'qp8br_'
)
);
}

а в  getListQuery() оставьте только запрос:
то есть:
Код: php
$query = $this->getDbo()->getQuery(true);
$query->select('id,greeting')->from('#__helloworld');
return $query;
Вот спасибо вам)) плюсик в карму ;) заработало   yes!
с той недели мучаюсь ))
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Может подскажет кто-нибудь еще вот какую вещь. вот пример кода модели части сайта:
Код
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla modelitem library
jimport('joomla.application.component.modelitem');
 
/**
 * HelloWorld Model
 */
class HelloWorldModelHelloWorld extends JModelItem
{
/**
* @var object item
*/
protected $item;
 
/**
* Method to auto-populate the model state.
*
* This method should only be called once per instantiation and is designed
* to be called on the first call to the getState() method unless the model
* configuration flag to ignore the request is set.
*
* Note. Calling getState in this method will result in recursion.
*
* @return void
* @since 2.5
*/
protected function populateState()
{
$app = JFactory::getApplication();
// Get the message id
$id = JRequest::getInt('id');
$this->setState('message.id', $id);
 
// Load the parameters.
$params = $app->getParams();
$this->setState('params', $params);
parent::populateState();
}
 
/**
* Returns a reference to the a Table object, always creating it.
*
* @param type The table type to instantiate
* @param string A prefix for the table class name. Optional.
* @param array Configuration array for model. Optional.
* @return JTable A database object
* @since 2.5
*/
public function getTable($type = 'HelloWorld', $prefix = 'HelloWorldTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
 
/**
* Get the message
* @return object The message to be displayed to the user
*/
public function getItem()
{
if (!isset($this->item))
{
$id = $this->getState('message.id');
$this->_db->setQuery($this->_db->getQuery(true)
->from('#__helloworld as h')
->leftJoin('#__categories as c ON h.catid=c.id')
->select('h.greeting, h.params, c.title as category')
->where('h.id=' . (int)$id));

if (!$this->item = $this->_db->loadObject())
{
$this->setError($this->_db->getError());
}
else
{
// Load the JSON string
$params = new JRegistry;
                                // loadJSON is @deprecated    12.1  Use loadString passing JSON as the format instead.
//$params->loadString($this->item->params, 'JSON');
                                $params->loadJSON($this->item->params);
$this->item->params = $params;
 
// Merge global params with item params
$params = clone $this->getState('params');
$params->merge($this->item->params);
$this->item->params = $params;
}
}
return $this->item;
}
}
в данном случае получается, что в меню (при его создании и выбора этого компонента) выводит список сообщений для выбора, что именно показывать на сайте. так вот этот список идет из локальной бд. и на сайте соответственно отображается сообщение из локальной. как же сделать чтоб все таки ко внешней подключалось?...
сдается мне вот в этой функции protected function populateState проблема кроется
« Последнее редактирование: 22.07.2014, 17:30:59 от rysya »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Точно так же как и в предыдущей модели, добавить конструктор с подключением к левой базе!
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Точно так же как и в предыдущей модели, добавить конструктор с подключением к левой базе!
точно так же не выходит. тут получается переплетение двух таблиц из разных баз. Где h это таблица из внешней бд, а categories из внутренней берется. подскажите пожалуйста, как сделать, чтоб модель понимала что одна в одной, а другая в другой бд?
Код
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
 
// import Joomla modelitem library
jimport('joomla.application.component.modelitem');
 

class HelloWorldModelHelloWorld extends JModelItem
{

protected $item;
 
public function __construct( $config = array() )
{
parent::__construct( $config );
$db2 = $this->_db = JDatabase::getInstance(
array(
'driver' => 'mysqli',
            'host' => 'mysql.moyorodnoye.myjino.ru',
            'user' => 'moyorodnoye',
            'password' => '***',
            'database' => 'moyorodnoye_available',
            'prefix' => 'qp8br_'
)
);
}

protected function populateState()
{
$app = $this->getApplication();
// Get the message id
$id = JRequest::getInt('id');
$this->setState('message.id', $id);
 
// Load the parameters.
$params = $app->getParams();
$this->setState('params', $params);
// echo $params;
parent::populateState();
}

public function getTable($type = 'HelloWorld', $prefix = 'HelloWorldTable', $config = array())
{
return JTable::getInstance($type, $prefix, $config);
}
 
public function getItem()
{
   
if (!isset($this->item))
{
$id = $this->getState('message.id');

$this->_db->setQuery($this->_db->getQuery(true)
->from('#__helloworld as h')
->leftJoin('#__categories as c ON h.catid=c.id')
->select('h.greeting, h.params, c.title as category')
->where('h.id=' . (int)$id));

echo $this;

if (!$this->item = $this->_db->loadObject())
{
$this->setError($this->_db->getError());
}
else
{
// Load the JSON string
$params = new JRegistry;
                                // loadJSON is @deprecated    12.1  Use loadString passing JSON as the format instead.
//$params->loadString($this->item->params, 'JSON');
                                $params->loadJSON($this->item->params);
$this->item->params = $params;
 
// Merge global params with item params
$params = clone $this->getState('params');
$params->merge($this->item->params);
$this->item->params = $params;
}
}

return $this->item;
echo $this;
}
}
« Последнее редактирование: 25.07.2014, 14:43:04 от rysya »
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Эм невозможно сделать один запрос в разные базы на разных серверах!
Вы можете сделать два запроса, сначала выбрать из #__helloworld  а потом выбрать из #__categories

при выборке из категории делаете так
Код: php
$db = JFactory::getDbo();
$query = $db->getQuery( true )->select( 'id, title' )->from( '#__categories' )->where( 'published=1' );
$categories = $db->setQuery( $query )->loadObjectList( 'id' );

А потом в цикле когда будете выводить записи что бы отобразить категорию банально
Код: php
foreach($this->items as $item){
echo 'Категория: ' . $categories[$item->catid]->title;
}
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
во) получилось))) Спасибо)
« Последнее редактирование: 25.07.2014, 15:52:30 от rysya »
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Эм невозможно сделать один запрос в разные базы на разных серверах!
Вы можете сделать два запроса, сначала выбрать из #__helloworld  а потом выбрать из #__categories

при выборке из категории делаете так
Код: php
$db = JFactory::getDbo();
$query = $db->getQuery( true )->select( 'id, title' )->from( '#__categories' )->where( 'published=1' );
$categories = $db->setQuery( $query )->loadObjectList( 'id' );

А потом в цикле когда будете выводить записи что бы отобразить категорию банально
Код: php
foreach($this->items as $item){
echo 'Категория: ' . $categories[$item->catid]->title;
}
спасибо все здорово вышло)) однако не очень)
получается, что в админке компонента и на самом сайте он выводит все как надо. Но в меню, при выборе какого-либо сообщения, тут выводятся они из локальной базы, запоминается id  и по нему выводит на сайт уже из внешней. Вопрос: как сделать чтоб и в меню самой Joomla он показывал сообщения(какие есть в админке компонента), а не из локальной.
еще вопрос: я правильно понимаю, что  вот эта функция protected function populateState() как раз отвечает за вывод сообщений в меню J?
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
получается, что в админке компонента и на самом сайте он выводит все как надо. Но в меню, при выборе какого-либо сообщения, тут выводятся они из локальной базы, запоминается id  и по нему выводит на сайт уже из внешней. Вопрос: как сделать чтоб и в меню самой Joomla он показывал сообщения(какие есть в админке компонента), а не из локальной.
Простите не совсем понимаю что вам точно нужно сделать

еще вопрос: я правильно понимаю, что  вот эта функция protected function populateState() как раз отвечает за вывод сообщений в меню J?
Нет неправильно понимаете, populateState служит для установки состояния модели!
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
Простите не совсем понимаю что вам точно нужно сделать
сейчас на скрине покажу
http://moyorodnoye.myjino.ru/joomlavm/images/scr.png
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
сейчас на скрине покажу
http://moyorodnoye.myjino.ru/joomlavm/images/scr.png
То есть вам нужно что бы эти поля брались из внешней базы?
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0
То есть вам нужно что бы эти поля брались из внешней базы?
угу, но только в данном случае, если выбран этот компонент. это наверно условие нужно поставить в компонент меню?..
*

Aleks.Denezh

  • Живу я здесь
  • 3406
  • 428 / 4
Вот параметры для выбора формируются с помощью XML файла который лежит в components/com_ваш_комопнент/views/ваш_вид/tmpl/default.xml
Вот тут вы формируете с помощью XML поля, вообщем вам надо создать свое поле положить его в папку components/com_ваш_комопнент/models/fields
и в нем сделать выборку необходимых данных!

Файл с полем должен выглядеть так:
Код: php
<?php

// No direct access
defined( '_JEXEC' ) or die;
jimport( 'joomla.form.helper' );
JFormHelper::loadFieldClass( 'list' );

/**
 * Subcat Form Field class for the component
 */
class JFormFieldfields extends JFormFieldList
{

protected $type = 'fields';

/**
* Method to get a list of options for a list input.
* @return array An array of JHtml options.
*/
protected function getOptions()
{
$db = JFactory::getDbo();
$query = $db->getQuery( true )->select( 'id, title' )->from( '#__table' );
$items = $db->setQuery( $query )->loadObjectList();
$options = array();
if ( $items ) {
foreach ( $items as $item ) {
$options[] = JHtml::_( 'select.option', $item->id, $item->title );
}
}
return array_merge( parent::getOptions(), $options );
}

}
Файл обозвать fields.php и закинуть в components/com_ваш_комопнент/models/fields/ там где выборка из базы вам надо естественно приконектится к внешней базе и сделать от туда выборку

в components/com_ваш_комопнент/views/ваш_вид/tmpl/default.xml написать это поле:
Код: xml
<field name="id" type="fields" label="JSELECT" description="JSELECT">
<option>JSELECT</option>
</field>
*

rysya

  • Осваиваюсь на форуме
  • 25
  • 1 / 0

с первого раза не получилось))) щас буду разбираться. спасибо большое :)
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Надо переделать готовый компонент Генератор Купонов J2.5 на J1.5

Автор mkoff

Ответов: 3
Просмотров: 1932
Последний ответ 18.12.2014, 10:22:04
от assa1988
Модифицировать компонент

Автор karabert

Ответов: 0
Просмотров: 1213
Последний ответ 28.11.2011, 22:39:04
от karabert
Новый компонент. Реализация поиска/фильтрации таблицы в админке.

Автор passat

Ответов: 6
Просмотров: 3533
Последний ответ 26.03.2011, 12:21:45
от yunoshev
Пишу первый в жизни MVC компонент

Автор artmasterpro

Ответов: 14
Просмотров: 2591
Последний ответ 24.03.2011, 09:26:39
от artmasterpro
Внедрение AJAX в компонент

Автор b2z

Ответов: 12
Просмотров: 4431
Последний ответ 03.12.2010, 21:38:04
от yunoshev