Устранение ошибки вывода карты сайта XMAP в Joomla 3 и PHP 5.3+
Решил попробовать joomla 3 на одном из проектов. Требований немного, поэтому проблем планировалось минимум.
Для карты сайта на данный момент для Joomla 3 сделан только компонент Xmap, который всегда выручал раньше.
Установив его, мы получаем работающую XML карту сайта и ошибку 500 при выводе HTML карты на странице сайта. Ошибка кроется в несовместимости исходного кода компонента с PHP 5.3+ версий.
Решаем очень просто, отредактировав шаблон вывода HTML карты сайта по пути /components/com_xmap/views/tmpl/default.php (или альтернативный /templates/{имя шаблона}/html/com_xmap/default.php)
Проблема кроется в подключении JHTML::_(‘behavior.mootools’);, поэтому просто удаляем вот этот кусок кода
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | if ($this->displayer->canEdit) { JHTML::_('behavior.mootools'); $live_site = JURI::root(); $ajaxurl = "{$live_site}index.php?option=com_xmap&format=json&task=ajax.editElement&action=toggleElement&".JUtility::getToken().'=1'; $css = '.xmapexcl img{ border:0px; }'."\n"; $css .= '.xmapexcloff { text-decoration:line-through; }'; $css .= "\n.".$this->item->classname .' li {float:left;}'; $js = " window.addEvent('domready',function (){ $$('.xmapexcl').each(function(el){ el.onclick = function(){ if (this && this.rel) { options = JSON.decode(this.rel); this.onComplete = checkExcludeResult var myAjax = new Request.JSON({ url:'{$ajaxurl}', onSuccess: checkExcludeResult.bind(this) }).get({id:{$this->item->id},uid:options.uid,itemid:options.itemid}); } return false; }; }); }); checkExcludeResult = function (response) { //this.set('class','xmapexcl xmapexcloff'); var imgs = this.getElementsByTagName('img'); if (response.result == 'OK') { var state = response.state; if (state==0) { imgs[0].src='{$live_site}/components/com_xmap/assets/images/unpublished.png'; } else { imgs[0].src='{$live_site}/components/com_xmap/assets/images/tick.png'; } } else { alert('The element couldn\\'t be published or upublished!'); } }"; $doc = JFactory::getDocument(); $doc->addStyleDeclaration ($css); $doc->addScriptDeclaration ($js); } |
По сути мы просто уберем frontend редактирование, но получим работающий вывод HTML карты сайта.
Комментарии к Устранение ошибки вывода карты сайта XMAP в Joomla 3 и PHP 5.3+ (2)
Magilanka Специалист по сайтам
Странно нет
/components/com_xmap/views/tmpl/default.php (или альтернативный /templates/{имя шаблона}/html/com_xmap/default.php)
нашла здесь /public_html/components/com_xmap/views/html/tmpl
после удаления ни чего не меняется((
Stanislav
Скорей всего уже поменялась структура, т.к. инструкция была написана для версии 4-летней давности. Нужны логи сервера, чтобы понять — в чем ошибка. Не факт, что проблема именно в этом компоненте. Может быть — это несовместимость версий.