Шаблон+ajax = вопросы

В списке блогов blog_list.tpl поменял оформление количества читателей, но при подключении/отключении к блогу (на этой же странице со списком всех блогов) количество юзеров тут же меняется и офомление куда то исчезает. Нашел корни в js:

function ajaxJoinLeaveBlog(obj,idBlog) {   
	obj=$(obj);
	JsHttpRequest.query(
    	'POST '+DIR_WEB_ROOT+'/include/ajax/joinLeaveBlog.php',
        { idBlog: idBlog, security_ls_key: LIVESTREET_SECURITY_KEY },
        function(result, errors) {
        	if (!result) {
                msgErrorBox.alert('Error','Please try again later');
        	}
            if (result.bStateError) {
            	msgErrorBox.alert(result.sMsgTitle,result.sMsg);
            } else {
            	msgNoticeBox.alert(result.sMsgTitle,result.sMsg);
            	if (obj)  {
            		obj.getParent().removeClass('active');
            		if (result.bState) {
            			obj.getParent().addClass('active');
            		}
            		divCount=$('blog_user_count_'+idBlog);
            		if (divCount) {
            			divCount.set('text',result.iCountUser);
            		}
            	}
            }
        },
        true
    );
}

Но от того, что я прочитал это все, так ничего умного в голову и не пришло. Как сделать так, чтобы после срабатывании кнопки подключения/отключения к блогу оформление динамически меняющегося блока с количеством читателей оставалось прежним?

4 комментария

avatar
Тут всё просто.
Подмена старого числа пользователей на новое производится вот здесь

divCount=$('blog_user_count_'+idBlog);
     if (divCount) {
         divCount.set('text',result.iCountUser);
     }

Заменяется текст внутри вот этой ячейки в шаблоне:
<td id="blog_user_count_{$oBlog->getId()}" class="readers">{$oBlog->getCountUser()}</td>


Если ты поменял css ячейки или ещё что-то добавил, то тебе нужно менять только место с числом. Возьми число в span и для этого тэга присвой уникальный id:
<td class="readers"><span id="blog_user_count_{$oBlog->getId()}">{$oBlog->getCountUser()}</span></td>

Иными словами в ячейке с кол-вом пользователей применяй хоть какое форматирование, главное — это подменять последний контейнер с числом. И не забудь убрать уникальный id из ячейки td c количеством пользователей.
avatar
Спасибо большое за ответ! я конечно еще раз 30 прочитаю его и попробую вникнуть, но вот смотри, такой код у меня сейчас:

<td id="blog_user_count_{$oBlog->getId()}" class="readers-count">
<div>
<span>{$oBlog->getCountUser()}</span>
<em>читатели</em>
</div>
</td>


Если я правильно тебя понял, то нужно сделать так:
<td class="readers-count">
<div id="blog_user_count_{$oBlog->getId()}">
<span>{$oBlog->getCountUser()}</span>
<em>читатели</em>
</div>
</td>

Т.е. чтобы заменялся весь див. потому что если я сделаю
<span id="blog_user_count_{$oBlog->getId()}">
то число изменится, а остальная верстка полетит.
avatar
Нет, все-таки правильный вариант:
<span id="blog_user_count_{$oBlog->getId()}">


Спасибо!
avatar
Такой вопрос еще по синтаксису смарти.

Как мне задать условие: {если класс=1}бла бла{else}бла бла бла{/if}

Вот я не знаю, как именно первую часть прописать правильно.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.