Критическая ошибка
Здравствуйте! возникает такая проблема - при переходе по внутренним ссылкам на главной странице
периодически выскакивает ошибка
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 825241 bytes) in /home/alterge3/public_html/nsktekstil/modules/InformationSystems/InformationSystems.class.php on line 0
при обновлении страницы все опять какое то время (4-5 переходов) работает нормально, в чем проблема и как с этим бороться?
периодически выскакивает ошибка
Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 825241 bytes) in /home/alterge3/public_html/nsktekstil/modules/InformationSystems/InformationSystems.class.php on line 0
при обновлении страницы все опять какое то время (4-5 переходов) работает нормально, в чем проблема и как с этим бороться?
Пытался побороть проблему с инфосистемой вопросы-ответы, ковырял XSL (при переходе к ответам возле каждого ответа отображалась не нужная форма ввода, не мог её убрать, а оставить только ту основную, что ниже). Видимо, чего-то поломал, и теперь на странице с ответами (ОтображениеВопроса) выводится:
Как это понимать и где чинить? XSL ОтображениеВопроса я пробовал восстанавливать, заменяя и моей когда-то рабочей версией, и версией с демо-сайта, ничего не изменилось.
И ещё немного не в тему, но чтоб два раза не вставать. Можно ли настроить координаты расположения панели управления на сайте? Той, которая по дефолту в левом верхнем углу сайта появляется. Или ещё лучше - сделать, чтобы она запоминала, в каком месте её последний раз оставили.
Предупреждение: DOMDocument::loadXML() [domdocument.loadxml]: StartTag: invalid element name in Entity, line: 16 в файле /modules/Xsl/Xsl.class.php (строка 267)
Как это понимать и где чинить? XSL ОтображениеВопроса я пробовал восстанавливать, заменяя и моей когда-то рабочей версией, и версией с демо-сайта, ничего не изменилось.
И ещё немного не в тему, но чтоб два раза не вставать. Можно ли настроить координаты расположения панели управления на сайте? Той, которая по дефолту в левом верхнем углу сайта появляется. Или ещё лучше - сделать, чтобы она запоминала, в каком месте её последний раз оставили.
ProVal, приведите код XSL-шаблона "ОтображениеВопроса" полностью.
ProVal писал(а):
ProVal писал(а):
Можно ли настроить координаты расположения панели управления на сайте?
- в текущей версии системы такой возможности, к сожалению, нет. Мы постараемся предусмотреть ее в 6-ой версии системы.<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>
<xsl:template match="/">
<xsl:apply-templates select="/document/item"/>
</xsl:template>
<!-- ОтображениеВопроса -->
<xsl:template match="/document/item">
<!-- Получаем ID родительской группы и записываем в переменную $parent_group_id -->
<xsl:variable name="parent_group_id" select="/document/information_system/parent_group_id"/>
<h4><a href="javascript:history.back()"><button>< <p style="display: inline; text-decoration: none;">Вернуться к вопросам</p></button></a></h4>
<div>
<!-- Дата информационного элемента -->
<div style="margin-bottom: 5px; padding: 3px; border-radius: 5px; background: #ffffff; ">
<xsl:value-of disable-output-escaping="yes" select="item_date"/>
</div>
<h3 style="display: inline;"><xsl:value-of disable-output-escaping="yes" select="item_name"/></h3>
<!-- ========= -->
<!-- Путь к группе -->
<!-- ========= -->
<xsl:apply-templates select="//group[@id=$parent_group_id]" mode="goup_path"/>
<p style="display: inline;">
<!-- Выводим сообщение -->
<xsl:if test="/document/message/node()">
<xsl:value-of disable-output-escaping="yes" select="/document/message"/>
</xsl:if>
</p>
<!-- Фотогафия к информационному элементу -->
<xsl:if test="item_small_image!=''">
<!-- Проверяем задан ли путь к файлу большого изображения -->
<xsl:if test="item_image!=''">
<xsl:variable name="srcpath" select="item_image"/>
<a href="{item_image}" target="_blank" onclick="ShowImgWindow('{item_name}','/{$srcpath}', {item_image/@width}, {item_image/@height}); return false;">
<img align="left" src="{item_small_image}" style="margin-right: 10px; margin-bottom: 10px"/>
</a>
</xsl:if>
<xsl:if test="item_image =''">
<img align="left" src="{item_small_image}" style="margin-right: 10px; margin-bottom: 10px"/>
</xsl:if>
</xsl:if>
<!-- Текст информационного элемента -->
<p>
<xsl:value-of disable-output-escaping="yes" select="item_text"/>
</p>
</div>
<hr />
<!-- Отображение комментариев -->
<xsl:if test="count(item_comments/comment) > 0">
<p class="title">Ответы</p>
<xsl:apply-templates select="item_comments/comment"/>
</xsl:if>
<br />
<!-- Если разрешено отображать формы добавления комментария
1 - Только авторизированным
2 - Всем -->
<xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
<br/>
<div id="ShowAddComment">
<a href="javascript:void(0)" onclick="javascript:cr('AddComment')"><button>Добавить ответ</button></a>
</div><br/>
<div id="AddComment" style="display: none">
<xsl:call-template name="AddCommentForm"></xsl:call-template>
</div>
</xsl:if>
</xsl:template>
<!-- Шаблон вывода добавления комментария -->
<xsl:template name="AddCommentForm">
<xsl:param name="comment_id" select="0"/>
<!-- Заполняем форму -->
<xsl:variable name="subject">
<xsl:if test="/document/form_parent_id/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
<xsl:value-of select="/document/form_subject"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="email">
<xsl:if test="/document/form_user_email/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
<xsl:value-of select="/document/form_user_email"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="text">
<xsl:if test="/document/form_text/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
<xsl:value-of disable-output-escaping="yes" select="/document/form_text"/>
</xsl:if>
</xsl:variable>
<xsl:variable name="name">
<xsl:if test="/document/form_user_name/node() and /document/form_parent_id/node() and /document/form_parent_id= $comment_id">
<xsl:value-of select="/document/form_user_name"/>
</xsl:if>
</xsl:variable>
<div class="comment">
<div class="tl"></div>
<div class="tr"></div>
<div class="bl"></div>
<div class="br"></div>
</div><br/>
<!--Отображение формы добавления комментария-->
<form action="{/document/url}" name="comment_form_0{comment_id}" method="post">
<!-- Авторизированным не показываем -->
<xsl:if test="/document/site_user_id = 0">
<script>
// Функция для отображения лейбла
function ShowLabel ( label, input ) {
if ( document.getElementById( input ).value == '' )
document.getElementById( label ).style.display = '';
}
// Функция для скрытия лейбла
function HideLabel ( label, input ) {
document.getElementById( label ).style.display = 'none';
document.getElementById( input ).focus(); // Если кликали по лейблу, фокус на поле не перейдет. Надо поставить вручную
}
</script>
<br/>
<div style="position:relative;">
<input id="comment_autor_input" class="text" type="text" name="comment_autor" size="70" onfocus="HideLabel('comment_autor_label', 'comment_autor_input');" onblur="ShowLabel('comment_autor_label', 'comment_autor_input');" value="{$name}" />
<label id="comment_autor_label" onClick="HideLabel('comment_autor_label', 'comment_autor_input');" style="position:absolute; left: 2px; color: #909090;">Имя</label>
</div>
<div style="position:relative;">
<input id="email{$comment_id}" type="text" size="70" name="comment_email" value="{$email}"
onfocus="HideLabel('email{$comment_id}_label', 'email{$comment_id}');"
onblur="ShowLabel('email{$comment_id}_label', 'email{$comment_id}'); FieldCheckEmail(this.id)"
onkeyup="FieldCheckEmail(this.id)"
onkeydown="FieldCheckEmail(this.id)" />
<label id="email{$comment_id}_label" onClick="HideLabel('email{$comment_id}_label', 'email{$comment_id}');" style="position:absolute; left: 2px; color: #909090;">Email</label>
<div id="error_email{$comment_id}"></div>
</div>
</xsl:if>
<div style="position:relative;">
<input id="comment_subject_input" class="text" type="text" name="comment_subject" size="70" onfocus="HideLabel('comment_subject_label', 'comment_subject_input');" onblur="ShowLabel('comment_subject_label', 'comment_subject_input');" value="{$subject}" />
<label id="comment_subject_label" onClick="HideLabel('comment_subject_label', 'comment_subject_input');" style="position:absolute; left: 2px; color: #909090;">Тема</label>
</div>
<p>
Текст ответа
<br/>
<textarea name="comment_text" cols="68" rows="5" class="mceEditor"><xsl:value-of select="$text"/></textarea>
</p>
<!--<p>
Оценка
<br/>
<input type="hidden" name="comment_grade" value="0"/>
<xsl:variable name="ul_id">
<xsl:choose>
<xsl:when test="comment_id > 0"><xsl:value-of select="comment_id"/>_stars</xsl:when>
<xsl:otherwise>0_stars</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<ul id="{$ul_id}" class="stars">
<li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}1_star_1"></li>
<li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}2_star_2"></li>
<li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}3_star_3"></li>
<li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}4_star_4"></li>
<li onclick="set_rate(this.id, this.id)" onmouseover="set_rate(this.id, '-1')" onmouseout="set_rate(this.id, 0)" id="{comment_id}5_star_5"></li>
</ul>
</p>-->
<!-- Обработка CAPTCHA -->
<xsl:if test="//captcha_key != 0 and /document/site_user_id = 0">
<p>Контрольные цифры
<sup>
<font color="red">*</font>
</sup></p>
<div style="float: left">
<img id="comment_{$comment_id}" class="image" src="/captcha.php?get_captcha={//captcha_key}{$comment_id}&height=30&width=100" title="Код подтверждения" name="captcha"/>
</div>
<div id="captcha" style="clear:both;">
<img style="border: 0px" src="/hostcmsfiles/images/refresh.gif" /> <a href="javascript:void(0);" onclick="ReNewCaptchaById('comment_{$comment_id}', '{//captcha_key}{$comment_id}', 30); return false;">Показать другое число</a>
</div>
<div style="float: left;margin-top: 5px">
<input type="hidden" name="captcha_key" value="{//captcha_key}{$comment_id}"/>
<input type="text" name="captcha_keystring" size="15"/>
</div>
<div id="captcha" style="clear:both;margin-bottom:10px;">
Введите число, которое указано выше.
</div>
</xsl:if>
<xsl:if test="$comment_id != 0">
<input type="hidden" name="comment_parent_id" value="{comment_id}"/>
</xsl:if>
<p>
<input id="submit_email{$comment_id}" type="submit" name="add_comment" value="Опубликовать"/>
</p>
</form>
</xsl:template>
<!-- ======================================================== -->
<!-- Шаблон выводит рекурсивно ссылки на группы инф. элемента -->
<!-- ======================================================== -->
<xsl:template match="group" mode="goup_path">
<xsl:variable name="parent_id" select="@parent_id"/>
<!-- Выбираем рекурсивно вышестоящую группу -->
<xsl:apply-templates select="//group[@id=$parent_id]" mode="goup_path"/>
<xsl:if test="@parent_id=0">
<a href="{/document/information_system/url}">
<xsl:value-of disable-output-escaping="yes" select="/document/information_system/name"/>
</a>
</xsl:if>
<span class="path_arrow">→</span>
<a href="{/document/information_system/url}{fullpath}">
<xsl:value-of disable-output-escaping="yes" select="name"/>
</a>
</xsl:template>
<!-- Отображение комментариев -->
<xsl:template match="comment">
<div style="margin-right: 10px; margin-bottom: 20px; padding: 3px; border-radius: 10px; width: 100%; background: #e0e0e0;">
<div class="comment_desc" style="margin-bottom: 5px; padding: 3px; border-radius: 5px; background: #ffffff; ">
<xsl:choose>
<!-- Комментарий добавил авторизированный пользователь -->
<xsl:when test="site_user_login/node()">
<a href="/users/info/{site_user_login}/" class="c_u_l">
<xsl:value-of select="site_user_login"/>
</a>
</xsl:when>
<!-- Комментарй добавил неавторизированный пользователь -->
<xsl:otherwise>
<xsl:value-of select="comment_fio"/></xsl:otherwise>
</xsl:choose> · <xsl:value-of select="comment_datetime"/> · <xsl:if
test="/document/show_add_comments/node()
and ((/document/show_add_comments = 1 and /document/site_user_id > 0)
or /document/show_add_comments = 2)"><!--<a href="javascript:cr('cr_{comment_id}');">ответить</a> · --></xsl:if><a href="{/document/item/item_path}#comment{comment_id}" title="ссылка">#</a>
</div>
<!-- Отображаем комментарий, если задан текст или тема комментария -->
<xsl:if test="comment_text != '' or comment_subject != ''">
<a name="comment{comment_id}"></a>
<div class="comment" id="comment{comment_id}">
<div class="tl"></div>
<div class="tr"></div>
<div class="bl"></div>
<div class="br"></div>
<xsl:if test="comment_subject != ''">
<div>
<strong>
<xsl:value-of select="comment_subject"/>
</strong>
</div>
</xsl:if>
<xsl:value-of select="comment_text" disable-output-escaping="yes"/>
<!-- Оценка комментария -->
<xsl:if test="comment_grade != 0">
<div>Оценка:
<xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="comment_grade"/>
<xsl:with-param name="const_grade" select="5"/>
</xsl:call-template>
</div>
</xsl:if>
</div>
<!-- Отображаем только авторизированным пользователям -->
<xsl:if test="/document/show_add_comments/node() and ((/document/show_add_comments = 1 and /document/site_user_id > 0) or /document/show_add_comments = 2)">
<div class="cr" id="cr_{comment_id}">
<xsl:call-template name="AddCommentForm">
<xsl:with-param name="comment_id" select="comment_id"/>
</xsl:call-template>
</div>
</xsl:if>
<!-- Выбираем дочерние комментарии -->
<xsl:if test="count(comment) > 0">
<div class="csd">
<xsl:apply-templates select="comment"/>
</div>
</xsl:if>
</xsl:if></div>
</xsl:template>
<!-- Вывод рейтинга -->
<xsl:template name="show_average_grade">
<xsl:param name="grade" select="0"/>
<xsl:param name="const_grade" select="0"/>
<!-- Чтобы избежать зацикливания -->
<xsl:variable name="current_grade" select="$grade * 1"/>
<xsl:choose>
<!-- Если число целое -->
<xsl:when test="floor($current_grade) = $current_grade and not($const_grade > ceiling($current_grade))">
<xsl:if test="$current_grade - 1 > 0">
<xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="$current_grade - 1"/>
<xsl:with-param name="const_grade" select="$const_grade - 1"/>
</xsl:call-template>
</xsl:if>
<xsl:if test="$current_grade != 0">
<img src="/hostcmsfiles/images/stars_single.gif"/>
</xsl:if>
</xsl:when>
<xsl:when test="$current_grade != 0 and not($const_grade > ceiling($current_grade))">
<xsl:if test="$current_grade - 0.5 > 0">
<xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="$current_grade - 0.5"/>
<xsl:with-param name="const_grade" select="$const_grade - 1"/>
</xsl:call-template>
</xsl:if>
<img src="/hostcmsfiles/images/stars_half.gif"/>
</xsl:when>
<!-- Выводим серые звездочки, пока текущая позиция не дойдет то значения, увеличенного до целого -->
<xsl:otherwise>
<xsl:call-template name="show_average_grade">
<xsl:with-param name="grade" select="$current_grade"/>
<xsl:with-param name="const_grade" select="$const_grade - 1"/>
</xsl:call-template>
<img src="/hostcmsfiles/images/stars_gray.gif"/>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
</xsl:stylesheet>
Причина проблемы в строке:
Уберите её или закомментируйте.
<h4><a href="javascript:history.back()"><button>< <p style="display: inline; text-decoration: none;">Вернуться к вопросам</p></button></a></h4>
Уберите её или закомментируйте.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
о_О Внезапно, да. Лишняя открывающая скобка < откуда-то взялась, хотя эту часть кода я точно не трогал... Да и с демо-сайта заменял же тоже. Всё страньше и страньше.
Ладно, пока всё работает - спасибо)
Ладно, пока всё работает - спасибо)
Пожалуйста.
Вы только что начали читать предложение, чтение которого вы уже заканчиваете.
Авторизация