Ответить Новая тема Новый опрос 
 Подгрузка данных аяксом
Gudridge
Cпециалист
Сообщений: 115
Откуда: Москва
Регистрация: 06-07-2011


16-06-2015 19:02
Подскажите как осущетвить, чтобы в исходном коде страницы был только
Код:
<div id="tags"></div>
а сами теги подгружались аяксом.
Я пытаюсь скрыть теги при помощи ajax, создаю файл hidetags.js в нём размещаю код
Код:
$(document).ready(function() {
  $("#tags").load("http://http://site.ru/modules/blocktags/tags.php");
});

далее в файле site.ru/themes/тема/modules/blocktags/blocktags.tpl вставляю
Код:
<div id="tags"></div>

а всё содержимое из site.ru/themes/тема/modules/blocktags/blocktags.tpl
Код:
<!-- Block tags module -->
<div id="tags_block_left" class="block tags_block">
  <p class="title_block">
    {l s='Tags' mod='blocktags'}
  </p>
  <div class="block_content">
    {if $tags}
      {foreach from=$tags item=tag name=myLoop}
        <a
        class
="{$tag.class} {if $smarty.foreach.myLoop.last}last_item{elseif $smarty.foreach.myLoop.first}first_item{else}item{/if}"
        href="{$link->getPageLink('search', true, NULL, "tag={$tag.name|urlencode}")|escape:'html':'UTF-8'}"
        title="{l s='More about' mod='blocktags'} {$tag.name|escape:'html':'UTF-8'}"
        >
          {$tag.name|escape:'html':'UTF-8'}
        </a>
      {/foreach}
    {else}
      {l s='No tags specified yet' mod='blocktags'}
    {/if}
  </div>
</div>
<!-- /Block tags module -->

вставляю в tags.php который грузится аяксом
проблема в том что на выходе получаю
Код:
{L S='TAGS' MOD='BLOCKTAGS'}
{if $tags} {foreach from=$tags item=tag name=myLoop} {$tag.name|escape:'html':'UTF-8'} {/foreach} {else} {l s='No tags specified yet' mod='blocktags'} {/if}

Снимок.JPG - Размер файла16.49KB (Нажмите для увеличения)


Сообщение отредактировано Gudridge 16-06-2015 15:03 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


16-06-2015 20:53
1. Откройте файл /modules/blocktags/blocktags.php
после:
Код:
$this->context->controller->addCSS(($this->_path).'blocktags.css', 'all');

добавьте:
Код:
$this->context->controller->addJS(($this->_path).'blocktags.js');

2. В директории /modules/blocktags/ создайте файл blocktags.js c кодом:
Код:
$(document).ready(function(){
    if ($('#tags').length > 0)
    {
        $.get(baseDir + 'modules/blocktags/ajax.php', {ajax: true}, function(data){
            $('#tags').html(data);
        });
    }
});


3. В файле /modules/blocktags/blocktags.php метод hookLeftColumn замените на:
Код:
function hookLeftColumn($params, $ajax = false)
{
    if ($ajax)
    {
        $tags = Tag::getMainTags((int)($params['cookie']->id_lang), (int)(Configuration::get('BLOCKTAGS_NBR')));

        $max = -1;
        $min = -1;
        foreach ($tags as $tag)
        {
            if ($tag['times'] > $max)
                $max = $tag['times'];
            if ($tag['times'] < $min || $min == -1)
                $min = $tag['times'];
        }
        
        if ($min == $max)
            $coef = $max;
        else
        {
            $coef = (BLOCKTAGS_MAX_LEVEL - 1) / ($max - $min);
        }
        
        if (!sizeof($tags))
            return false;
        foreach ($tags AS &$tag)
            $tag['class'] = 'tag_level'.(int)(($tag['times'] - $min) * $coef + 1);

        $this->context->smarty->assign('ajax', true);
        $this->context->smarty->assign('tags', $tags);
        return $this->context->smarty->fetch($this->local_path . 'blocktags.tpl');
    }

    return $this->display(__FILE__, 'blocktags.tpl');
}


4. Откройте файл /modules/blocktags/blocktags.tpl, весь код удалите и добавьте:
Код:
{if isset($ajax) && $ajax}
  <p class="title_block">{l s='Tags' mod='blocktags'}</p>
  <div class="block_content">
    {if $tags}
      {foreach from=$tags item=tag name=myLoop}
        <a class="{$tag.class} {if $smarty.foreach.myLoop.last}last_item{elseif $smarty.foreach.myLoop.first}first_item{else}item{/if}" href="{$link->getPageLink('search', true, NULL, "tag={$tag.name|urlencode}")|escape:'html':'UTF-8'}" title="{l s='More about' mod='blocktags'} {$tag.name|escape:'html':'UTF-8'}">{$tag.name|escape:'html':'UTF-8'}</a>
      {/foreach}
    {else}
        {l s='No tags specified yet' mod='blocktags'}
    {/if}
  </div>
{else}
    <div id="tags"></div>
{/if}


5. В директории /modules/blocktags/ создайте файл ajax.php c кодом:
Код:
<?php

include(dirname(__FILE__).'/../../config/config.inc.php');
include(dirname(__FILE__).'/../../init.php');
include(dirname(__FILE__).'/blocktags.php');

$tags = new BlockTags();
die($tags->hookLeftColumn(array('cookie' => Context::getContext()->cookie), true));
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Gudridge
Cпециалист
Сообщений: 115
Откуда: Москва
Регистрация: 06-07-2011


17-06-2015 14:15
Благодарю за быстрый ответ. Пытаюсь по аналогии сделать с блоком ссылок в футере и мой аккаунт не получается
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос