Warning: Invalid argument supplied for foreach() i

Статус
В этой теме нельзя размещать новые ответы.

Drammm

Постоялец
Регистрация
16 Ноя 2008
Сообщения
120
Реакции
5
Господа сегодня переназначал в панели хостинга домены, работоспособность сайта восстановил, но появилась ошибка.

Для просмотра ссылки Войди или Зарегистрируйся Только на главной странице

Warning: Invalid argument supplied for foreach() in /www/rustrip/www/htdocs/components/com_content/views/frontpage/view.html.php on line 143


В 143 строке этого файла написано:

foreach ( $field_array as $key => $val) {

Подскажите как убрать ошибку? А то я в пхп ноль.
Заранее благодарю!
 
У меня почти такая же ошибка была. Только правда на локальном сервере. Просто баловался с плагинами и с параметрами для PHP. Это я к чему, может хостер чета намутил, хотя это звучит глупо. :)
Ошибку убрал только тогда когда все настройки веб-сервера поставил по-умолчанию. Еще не успел разобраться какой параметр или плагин влияет на это.
 
Странно у меня в этом файле
с 136 по 150 :
PHP:
	// Build the link and text of the readmore button
		if (($item->params->get('show_readmore') && @ $item->readmore) || $item->params->get('link_titles'))
		{
			// checks if the item is a public or registered/special item
			if ($item->access <= $user->get('aid', 0))
			{
				$item->readmore_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid));
				$item->readmore_register = false;
			}
			else
			{
				$item->readmore_link = JRoute::_("index.php?option=com_user&view=login");
				$item->readmore_register = true;
			}
		}
Joomla 1.5, как и на твоем сайте.
Выложи сюда весь код этого файла, или мне в ICQ
Итак Drammm заменил этот файл стандартным и у него все заработало, проблема связана с сео-патчем для joomla
Кусок кода из файла:
PHP:
/*
   * JAW:
   * Display the configurable items - Check if the generator tag maybe
   * display; - Check if their are custom META fields present
   */
  $document->setTitle($title);
  /**
   * Read the custom META field
   */
  $xml_data = new JParameter ( '', JPATH_ROOT . DS . "metaconfig.xml");
  $field_array = $xml_data->renderToArray();
  $exclude_list = array("html_title","meta_description", "meta_keywords", "robots" );
  foreach ( $field_array as $key => $val) {
   if (!in_array($key, $exclude_list)  ) {
    $value = $params->def($key, '' );
    if ( !empty($value)) {
     $document->setMetaData( $key, $value);
    }
   }
  }
  parent::display($tpl);
1) Проверьте наличие файла metaconfig.xml в корне сайта
2) renderToArray() - помещает все параметры в один массив
PHP:
array   renderToArray  ([string $name = 'params'], [ $group = '_default'])
    * string $name: Имя аргумента по умолчанию, если файл настроек не найден ( в нашем случае аргумент $key ) 
    * $group
 
Вот
PHP:
<?php
/**
 * @version		$Id: view.html.php 10868 2008-08-30 07:22:26Z willebil $
 * @package		Joomla
 * @subpackage	Content
 * @copyright	Copyright (C) 2005 - 2008 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant to the
 * GNU General Public License, and as distributed it includes or is derivative
 * of works licensed under the GNU General Public License or other free or open
 * source software licenses. See COPYRIGHT.php for copyright notices and
 * details.
 */

// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die( 'Restricted access' );

require_once (JPATH_COMPONENT.DS.'view.php');

/**
 * Frontpage View class
 *
 * @static
 * @package		Joomla
 * @subpackage	Content
 * @since 1.5
 */
class ContentViewFrontpage extends ContentView
{
	function display($tpl = null)
	{
		global $mainframe, $option;

		// Initialize variables
		$user		=& JFactory::getUser();
		$document	=& JFactory::getDocument();

		// Request variables
		$id			= JRequest::getVar('id', null, '', 'int');
		$limit		= JRequest::getVar('limit', 5, '', 'int');
		$limitstart	= JRequest::getVar('limitstart', 0, '', 'int');

		// Get the page/component configuration
		$params = &$mainframe->getParams();

		// parameters
		$title			= $params->def('page_title',	$mainframe->getCfg('sitename' ));
		$intro			= $params->def('num_intro_articles',	4);
		$leading		= $params->def('num_leading_articles',	1);
		$links			= $params->def('num_links', 			4);

		$descrip		= $params->def('show_description', 		1);
		$descrip_image	= $params->def('show_description_image',1);

		$params->set('show_intro', 	1);

		$limit = $intro + $leading + $links;
		JRequest::setVar('limit', (int) $limit);

		//set data model
		$items =& $this->get('data' );
		$total =& $this->get('total');

		// Create a user access object for the user
		$access				= new stdClass();
		$access->canEdit	= $user->authorize('com_content', 'edit', 'content', 'all');
		$access->canEditOwn	= $user->authorize('com_content', 'edit', 'content', 'own');
		$access->canPublish	= $user->authorize('com_content', 'publish', 'content', 'all');

		//add alternate feed link
		if($params->get('show_feed_link', 1) == 1)
		{
			$link	= '&format=feed&limitstart=';
			$attribs = array('type' => 'application/rss+xml', 'title' => 'RSS 2.0');
			$document->addHeadLink(JRoute::_($link.'&type=rss'), 'alternate', 'rel', $attribs);
			$attribs = array('type' => 'application/atom+xml', 'title' => 'Atom 1.0');
			$document->addHeadLink(JRoute::_($link.'&type=atom'), 'alternate', 'rel', $attribs);
		}

		$menus	= &JSite::getMenu();
		$menu	= $menus->getActive();

		// because the application sets a default page title, we need to get it
		// right from the menu item itself
		if (is_object( $menu )) {
			$menu_params = new JParameter( $menu->params );
			if (!$menu_params->get( 'page_title')) {
				$params->set('page_title',	 htmlspecialchars_decode($mainframe->getCfg('sitename' )));
			}
		} else {
			$params->set('page_title',	 htmlspecialchars_decode($mainframe->getCfg('sitename' )));
		}
		$document->setTitle( $params->get( 'page_title' ) );

		jimport('joomla.html.pagination');
		$this->pagination = new JPagination($total, $limitstart, $limit - $links);

		$this->assign('total',			$total);
		$params->def('description', 	'') ;
		$this->assignRef('user',		$user);
		$this->assignRef('access',		$access);
		$this->assignRef('params',		$params);
		$this->assignRef('items',		$items);
	/*
		 * JAW: setting the HTML title, check if the HTML title is set within
		 * the PARAMs
		 */
		if ( $params->def('html_title', '') ){
			$title = $params->def('html_title', 	'') ;
		}
		// Set the page title to the menu name if title is empty
		if (empty ($title)) {
			$title = $menu->name;
		}
		if ( $params->def('meta_description', ''))	{
			$document->setMetaData('meta_description', $params->def('meta_description', ''));
		}
		if ( $params->def('meta_keywords', '') != "") {
			$document->setMetaData('keywords', $params->def('meta_keywords', ''));
		}
		if ( $params->def('robots', '') != "") {
			$robots_tag = $params->def('robots', '');
			if ( $robots_tag == "0" ){
				$document->setMetaData('robots','');
			} else {
				$document->setMetaData('robots',$robots_tag);
			}
		}
		/*
		 * JAW:
		 * Display the configurable items - Check if the generator tag maybe
		 * display; - Check if their are custom META fields present
		 */
		$document->setTitle($title);

		/**
		 * Read the custom META field
		 */
		$xml_data = new JParameter ( '', JPATH_ROOT . DS . "metaconfig.xml");
		$field_array = $xml_data->renderToArray();

		$exclude_list = array("html_title","meta_description", "meta_keywords", "robots" );
		foreach ( $field_array as $key => $val) {
			if (!in_array($key, $exclude_list)  ) {
				$value = $params->def($key, '' );
				if ( !empty($value)) {
					$document->setMetaData( $key, $value);
				}
			}
		}
		parent::display($tpl);
	}

	function &getItem($index = 0, &$params)
	{
		global $mainframe;

		// Initialize some variables
		$user		=& JFactory::getUser();
		$dispatcher	=& JDispatcher::getInstance();

		$SiteName	= $mainframe->getCfg('sitename');

		$task		= JRequest::getCmd('task');

		$linkOn		= null;
		$linkText	= null;

		$item =& $this->items[$index];
		$item->text = $item->introtext;

		// Get the page/component configuration and article parameters
		$item->params = clone($params);
		$aparams = new JParameter($item->attribs);

		// Merge article parameters into the page configuration
		$item->params->merge($aparams);

		// Process the content preparation plugins
		JPluginHelper::importPlugin('content');
		$results = $dispatcher->trigger('onPrepareContent', array (& $item, & $item->params, 0));

		// Build the link and text of the readmore button
		if (($item->params->get('show_readmore') && @ $item->readmore) || $item->params->get('link_titles'))
		{
			// checks if the item is a public or registered/special item
			if ($item->access <= $user->get('aid', 0))
			{
				$item->readmore_link = JRoute::_(ContentHelperRoute::getArticleRoute($item->slug, $item->catslug, $item->sectionid));
				$item->readmore_register = false;
			}
			else
			{
				$item->readmore_link = JRoute::_("index.php?option=com_user&view=login");
				$item->readmore_register = true;
			}
		}

		$item->event = new stdClass();
		$results = $dispatcher->trigger('onAfterDisplayTitle', array (& $item, & $item->params,0));
		$item->event->afterDisplayTitle = trim(implode("\n", $results));

		$results = $dispatcher->trigger('onBeforeDisplayContent', array (& $item, & $item->params, 0));
		$item->event->beforeDisplayContent = trim(implode("\n", $results));

		$results = $dispatcher->trigger('onAfterDisplayContent', array (& $item, & $item->params, 0));
		$item->event->afterDisplayContent = trim(implode("\n", $results));

		return $item;
	}
}

Добавлено через 27 минут
залил файл с чистой джумлы ошибка пропала
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху