Zobacz pełną wersję : Błąd po podpięciu modułu do podstrony
Witam.
Mam działający moduł na stronie głównej, który chcę podpiąć do innych podstron. Po dołączeniu modułu na niektórych podstronach działa on prawidłowo, jednak na kilku pojawia się biała strona z komunikatem o błędzie:
Fatal error: Cannot redeclare class ModProductsMenuHelper in /opt2/data-dev/modules/mod_products_menu/helper.php on line 15
Czy możecie mnie nakierować na rozwiązanie tego problemu? Z góry dziękuję.
Trzeba dodać warunek przed wywołaniem klasy:
if(!class_exists('ModProductsMenuHelper'))
<?php/** * Slajder class for Hello World! module * * @package Joomla.Tutorials * @subpackage Modules * @link http://docs.joomla.org/J3.x:Creating_a_simple_module/Developing_a_Basic_Module * @license GNU/GPL, see LICENSE.php * mod_helloworld 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. */ if(!class_exists('ModProductsMenuHelper'))class ModProductsMenuHelper{ /** * Retrieves the hello message * * @param array $params An object containing the module parameters * * @access public */ public function getProducts($params) { $lang = JFactory::getLanguage(); $langTag = $lang->getTag();
$app = JFactory::getApplication(); $isSMB = $app->get('isSMB');
$parentMenuId = $langTag == 'pl-PL' ? 107 : 103;
$results = $this->getChildren($parentMenuId, $langTag);
return $results; }
private function getChildren($parentId, $langTag){ // Get a db connection. $db = JFactory::getDbo(); // Create a new query object. $query = $db->getQuery(true); $query ->select(array('id', 'title', 'path', 'alias')) ->from($db->quoteName('#__menu')) ->where("(language = '*' OR language= ".$db->quote($langTag).") AND published = 1 AND parent_id=".$parentId) ->order($db->quoteName('lft') . ' ASC, '.$db->quoteName('id') . ' ASC'); // Reset the query using our newly populated query object. $db->setQuery($query); // Load the results as a list of stdClass objects (see later for more options on retrieving data). $results = $db->loadObjectList(); foreach ($results as $key=>$val){ $results[$key]->children = $this->getChildren($val->id, $langTag); }
return $results; }}
To mój kod po dodaniu warunku, jednak nadal pojawia się komunikat:
Parse error: syntax error, unexpected 'class' (T_CLASS) in /opt2/data-dev/modules/mod_products_menu/helper.php on line 15
Błąd wynika z tego, że taka nazwa klasy już występuje w innym miejscu Joomla i jest używana. Wydaje mi się, że ten moduł jest pisany przez kogoś - jednorazowo.
Należy zmienić nazwę klasy w helperze i w wywołaniu w pliku modułu na unikalną np ModWlasnyHelper1556.
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!