1. Задавайте здесь вопросы о коде, которые не подходят в другие разделы, такие как:
    Дизайн > Верстка
    PHP > Как сделать на PHP
    Скрыть объявление

При открытии/закрытии блоков страница загружается сначала

Тема в разделе "Web Coding", создана пользователем MvKozyrev, 19 янв 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. MvKozyrev

    MvKozyrev Постоялец

    Регистр.:
    5 май 2007
    Сообщения:
    135
    Симпатии:
    70
    Значит, подправляю RSS-агрегатор. Добавил скрытие/открытие каналов. Проблема в том, что при этом происходит перенос на начало страницы (т.е. вся страница сдвигается к началу). А хочется сохранить ту позицию, на которой находишься. Как сделать?

    Вот код:
    PHP:
    function dasher_display_rss($beforeall='<td valign="top">',$afterall='</td>',$before='<div class="wrap">',$after="</div>",$beforefeed='<ul>',$afterfeed='</ul>',$beforeitem='<li>',$afteritem='</li>',$beforeheader='<h3>',$afterheader='</h3>') {
        global 
    $dasher_options;
        
    $feeds explode('|',$dasher_options['feeds_to_display']);
        if (
    count($feeds 0)) {
            echo 
    $beforeall "\n";
            include_once (
    ABSPATH WPINC '/rss.php');
            echo 
    '<h3>Лента новостей (RSS)</h3>';
            foreach ((array)
    $feeds as $feed) {
                
    $rss = @fetch_rss($feed);
                if ( isset(
    $rss->items) && != count($rss->items) ) {
        echo 
    '
        <h3><a target=_blank href="' 
    $rss->channel['link'] . '">' $rss->channel['title'] . '</a></h3>
        <a id="options_'
    .$feed.'_show" href="#" onClick="document.getElementById(\'options_'.$feed.'\').style.display=\'\'; this.style.display=\'none\'" style="display:none;"><small>[Показать]</small></a>
        <div id="options_'
    .$feed.'">
        <a href="#" onClick="document.getElementById(\'options_'
    .$feed.'\').style.display=\'none\'; document.getElementById(\'options_'.$feed.'_show\').style.display=\'\'"><small>[Скрыть]</small><br /><br /></a>

        '
    ;

        
    $rss->items array_slice($rss->items010);
        foreach (
    $rss->items as $item ) {
            echo 
    "<a target=_blank href='" wp_filter_kses($item['link']) . "'>" wp_specialchars($item['title']) . "</a> — ";
            
    printf(__('%s ago'), human_time_diff(strtotime($item['pubdate'], time() ) ) );
            echo 
    "<br />\n<p>" $item['description'] . "</p>\n";
        }
        echo 
    '</div>';
    }
            }
            echo 
    $afterall "\n";
        }
    }
     
  2. Vio

    Vio Создатель

    Регистр.:
    28 май 2007
    Сообщения:
    34
    Симпатии:
    2
    href="#" поменяй на href="javascript://" например
     
    MvKozyrev нравится это.
  3. MvKozyrev

    MvKozyrev Постоялец

    Регистр.:
    5 май 2007
    Сообщения:
    135
    Симпатии:
    70
    Заработало! И всего делов-то?!

    Sorry за флуд, но работает! Мать его, работает! И всего-то делов было. А я уже боялся, что начнут ajax'ы советовать :)

    ЗЫ. Нажал спасибку. В свете последних событий - стараюсь не забывать.

    ЗЗЫ. Такие восторги потому, что сначала насобирал в ленту 10 RSS каналов - получилась длиннющая простыня - читать невозможно. Долго искал по Нету, как сделать простое скрытие/раскрытие. Но тот, вариант (проблемный), что получился просто не имел смысла, т.к. если при 10 каналах происходил перенос на начало страницы, то найти нужное место представлялось весьма проблематичным. А сейчас - самое то, что надо. Уже 10 минут сижу и как дурак играюсь :)
     
Статус темы:
Закрыта.