How to check is an user in admin group?

If you need to check user on certain kind of Joomla ACL group membership:

isadminiJoomla 2.5.x and Joomla 3.x :

Simple check logged user is Super Admin or not

    
	function isUserSuperAdmin()
	{
		  $user = JFactory::getUser();
		  return $user->get('isRoot');
	}    
    
	
	if (isUserSuperAdmin()) 
	{
	  //your code for Super Administrators...
    }
Simple check logged user is in Administrator groups
Read more...

Joomla profile plugin don't save data

If you have this problem in your Joomla site:

Change Joompla profile plugin( {your_site_folder}\plugins\user\profile\profile.php ) on line 340:

Replace:

->where($db->quoteName('userid') . ' = ' . (int) $userId)

To:

->where($db->quoteName('user_id') . ' = ' . (int) $userId)

Save and check.

 

 

How to use JCategories in my component

Step 1: Create special helper

CREATE file in: JPATH_SITE /components/YOURCOMPONENT/helpers/category.php

Example:

<?php
defined('_JEXEC') or die;
jimport('joomla.application.categories');

class YOURCOMPONENTCategories extends JCategories
{
	public function __construct($options = array())
	{
		$options['table'] = '#__content';
		$options['extension'] = 'com_YOURCOMPONENT';
		parent::__construct($options);
	}
}

Step 2: Using in your model

class YOURCOMPONENTModelCategories extends JModelList
{
	public function getItems($recursive = false)
	{
		if (!count($this->_items)) {
			
			// import Joomla Categories library
			//if you forget this -> Fatal error: Class 'JCategories' not found in ...
			jimport( 'joomla.application.categories' );

			$app = JFactory::getApplication();
			
			$options = array();
			$options['countItems'] = 20;

//$categories = JCategories::getInstance('Content', $options);

			$categories = JCategories::getInstance('YOURCOMPONENT', $options);

			$this->_parent = $categories->get('root');

			if (is_object($this->_parent)) {
				$this->_items = $this->_parent->getChildren($recursive);
			}
			else {
				$this->_items = false;
			}
		}

		return $this->_items;
	}
}


Две модели в одном вью (two models in one view)

Обычно, стандартная модель подключается автоматически и имеет одинаковое имя с контроллером, ну или задаётся в нём.

Что делать когда в одном view нужно использовать функции из другой(их) модели(ей)?

Всё просто:

 

$model = & JModel::getInstance('Category','MycompModel');
	$res = $model -> modelfunction();

 

Вот так выглядит пример view.html.php c 2 подключёнными моделями

<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.view');
/**
 * HTML View class for the Component
 */
class MycomponentViewMycompfrontpage extends JView
{
    protected $state = null;
    protected $item = null;
    protected $pagination = null;
    
       function display($tpl = null)
        {         
            $this->state        = $this->get('State'); // используется фенкция дефолтной модели getState();
            $this->items        = $items = $this->get('Items'); //...
            $this->pagination    = $this->get('Pagination'); //...
                           
                $model = $this->getModel(); // используем дефолтную модель.
                $model->getCatBySec($items); // используем функции дефолтной модели.
              
           $other_model = & JModel::getInstance('Category','MycompModel'); // используем дополнительную модель. в данном случае category
           $this->res = $other_model -> modelfunction(); // используем функции дополнительной модели.
            if (count($errors = $this->get('Errors'))) { JError::raiseWarning(500, implode("\n", $errors));    return false;}
           
            parent::display($tpl);
        }
}

Joomla, добавление скрипта и стиля, JPATH

 

Делается всё просто Ваш скрипт или стиль появится между тегами в head страницы. Используем для добавления своего стиля addStyleSheet('путь'); Используем для добавления своего скрипта addScript('путь');
<?php
$document = & JFactory::getDocument();
$document->addStyleSheet(JURI::root() . 'mycss/style.css');
$document->addScript(JURI::root() . 'myjs/script.js');
?>


 

Вместо JURI::root можно использовать:

JPath используется для получения путей к директориям.

  • DS - Разделитель
  • JPATH_ADMINISTRATOR - Путь к /Joomla/administrator.
  • JPATH_BASE - Путь к папке Joomla /Joomla.
  • JPATH_CACHE - Путь к папке кэша /Joomla/cache.
  • JPATH_COMPONENT - Путь к папке компонента. На сайте это будет /Joomla/components/com_example, а в админке /Joomla/administrator/components/com_example
  • JPATH_COMPONENT_ADMINISTRATOR - Путь к папке административной части компонента /Joomla/administrator/components/com_example
  • JPATH_COMPONENT_SITE - Путь к папке компонента /Joomla/components/com_example
  • JPATH_CONFIGURATION - Путь к файлу configuration.php
  • JPATH_INSTALLATION - Путь к папке установки.
  • JPATH_LIBRARIES - Путь к папке библиотек.
  • JPATH_PLUGINS - Путь к папке плагинов.
  • JPATH_ROOT - Путь к папке Joomla.
  • JPATH_SITE - Путь к папке Joomla.
  • JPATH_THEMES - Путь к папке шаблонов.
  • JPATH_XMLRPC - Путь к папке XML-RPC.

Примеры использовани JPath

JPATH_ADMINISTRATOR: Z:\home\yoursite\www\administrator

JPATH_BASE: Z:\home\yoursite\www\administrator

JPATH_CACHE: Z:\home\yoursite\www\administrator\cache

JPATH_COMPONENT: Z:\home\yoursite\www\administrator\components\com_yourcomponent

JPATH_COMPONENT_ADMINISTRATOR: Z:\home\yoursite\www\administrator\components\com_yourcomponent

JPATH_COMPONENT_SITE: Z:\home\yoursite\www\components\com_yourcomponent

JPATH_CONFIGURATION: Z:\home\yoursite\www

JPATH_INSTALLATION: Z:\home\yoursite\www\installation

JPATH_LIBRARIES: Z:\home\yoursite\www\libraries

JPATH_PLUGINS: Z:\home\yoursite\www\plugins

JPATH_ROOT: Z:\home\yoursite\www

JPATH_SITE: Z:\home\yoursite\www

JPATH_THEMES: Z:\home\yoursite\www\administrator\templates

JPATH_XMLRPC: Z:\home\yoursite\www\xmlrpc


Источник: http://docs.joomla.org/JPath.

Error: Fatal error: Call to a member function getKeyName() on a non-object

Error: Fatal error: Call to a member function getKeyName() on a non-object

How to fix:

Fatal error: Call to a member function getKeyName() on a non-object in...\libraries\joomla\application\component\modeladmin.php on line 681

modeladmin.php on line 681

Problem in folder: /table/{yourcomponent_model_table}.php

You can find the table filename in model in function getTable(...).

After, check in table file name of class.

 

Joomla 1.6, 1.7, $mainframe

На замену привычного

$mainframe
в полторашной версии, пришла замена :)

$mainframe = JFactory::getApplication();

How to determine where from your script is invoked.

How to determine where from your script is invoked. On the back end or the front end.

$app = JFactory::getApplication();
if($app->isAdmin()) echo 'ADMIN PART DETECTED';

 

Other J! helpfull functions (isAdmin(), isSite(),isWinOS()) :

/**
 * Is admin interface?
 *
 * @return  boolean  True if this application is administrator.
 *
 * @since   11.1
 */
public function isAdmin()
{
	return ($this->_clientId == 1);
}

/**
 * Is site interface?
 *
 * @return  boolean  True if this application is site.
 *
 * @since   11.1
 */
public function isSite()
{
	return ($this->_clientId == 0);
}

/**
 * Method to determine if the host OS is  Windows
 *
 * @return  boolean  True if Windows OS
 *
 * @since   11.1
 */
public static function isWinOS()
{
	return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN';
}

Как закрыть SqueezeBox ?

if(window.parent.document.getElementById('sbox-window')) {
    window.parent.document.getElementById('sbox-window').close = function() {
        window.parent.SqueezeBox.close();
    }
}

 

или просто

window.parent.SqueezeBox.close();

Scroll to Top
Ads: