Jump to content

Как не отображать код в заданном url


Recommended Posts

Помогите с php кодом вывода, пожалуйста.

 

Вывожу код в футере, отвечающий за сокращение постов.

Все работает.

Но при просмотре полной новости, она тоже сокращена, что не совсем практично, нужно нажать на кнопку, чтобы развернуть пост.

 

Как заставить отображаться код в футере на всех страницах кроме

/story/

/story/1

/story/2 и т.д.?

 

Спасибо.

Link to post
Share on other sites

Пробовал сделать так:

<?php if ($_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'] == $_SERVER["HTTP_HOST"].'/story/'.$_SERVER['REQUEST_URI']) {
echo 'Таблица';
}
?>

и так

<?php
function insert_my_content($c) {
    $content = '<h1>Hello World!</h1>';
    return $c . $content;
}
if (preg_match('/story/'.$_SERVER['REQUEST_URI'])) {
    add_filter('the_conten', 'insert_my_content');
} 
?>

вообще нет реакции.

 

А так работает но в обратную сторону, т.е. отображает Таблица на странице /story/

<?php if ($_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'] == $_SERVER["HTTP_HOST"].'/story/') {
echo 'Таблица';
}
?>

1. только на странице /story/, /story/1, /story/2 и т.д. не отображается.

2. должно быть все на оборот, заданный текст должен не выводиться в код вообще на страницах  /story/...

при этом выводиться на остальных страницах сайта    :angry:

 

В общем как кажется иду в верном направлении, если кто в курсе, что нужно дописать, помогите, пожалуйста.

 

этот код отвечает за вывод id новости, цифры после /story/...

<?php echo ($sk['story']['id']); ?>
 
Так, тоже не работает 
<?php if ($_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'] == $_SERVER["HTTP_HOST"].'/story/<?php echo ($sk["story"]["id"]); ?>') {
echo 'Таблица';
}
?>
Link to post
Share on other sites

@sofcase, подскажите, как выполнить echo, внутри echo?

<?php
if (preg_match('/\/story\/\d*?$/i', $_SERVER['REQUEST_URI'])) {
echo ''; 
} else {
echo '

                    <button onclick="javascript:window.location=\'http://site.ru/story/<?php echo $sk[\'story\'][\'id\'];?>\'">
                        <span>Read more...</span>
                    </button>
					
';
}
?> 

 Спасибо!

Link to post
Share on other sites
  • VIP

 

 


подскажите, как выполнить echo, внутри echo
<?php
if (preg_match('/\/story\/\d*?$/i', $_SERVER['REQUEST_URI'])) {
echo ''; 
}else {?>
    <button onclick="javascript:window.location=\'http://site.ru/story/<?php echo $sk['story']['id']; ?>\'">
        <span>Read more...</span>
    </button>
<?
}
?>

Чуть подправил в меру своих знаний. А у вас эта строчка правильно написана?

<button onclick="javascript:window.location=\'http://site.ru/story/<?php echo $sk[\'story\'][\'id\'];?>\'">
Link to post
Share on other sites

 

 


А у вас эта строчка правильно написана?
сомневаюсь   :)

работаю исключительно методом тыка.

Спасибо, скрипт вроде отобразил то, что хотелось, в той строчке вроде ошибка есть но главное что появился в ней id, далее методом тыка попробую разобраться.

 

Еще с одной проблемой столкнулся.

Вывожу jQuery в конце страницы, отвечающий за закрытие и раскрытия по нажатию - длинного контента, т.е. огромный контент сокращается до 2-3 строк, хочу прочесть, жму кнопку и контент открывается без перезагрузок.

 

А проблема в том, что сайт имеет кнопку подгрузки новых постов   :)

Вот эти самые посты уже не улавливают jQuery - ну это как я понял, может я и не прав.

jQuery работает один раз, размещается в самом низу страницы (я так прочел), и видимо при загрузке новых постов, т.к. jQuery уже выполнен, длинные посты не сокращаются   :(

 

Весь день на это потратил и ничего в итоге, не с места не сдвинулся. 

 

Этот jQuery код я и пытаюсь вывести в коде выше, чтобы на страницах просмотра полной новости /story/ контент не сокращался как на главной, т.е. jQuery везде, кроме /story/

хех   :(

Link to post
Share on other sites
  • VIP

Сложно что-то сказать, не видя пациента. Кстати, так у вас реализовано в рубрике или на главной странице? Это я к тому, если у Вас так сделано, то много дублей получится.

Link to post
Share on other sites

Рублик нет, jQuery в футере.

Сейчас только подумал о том, что в jQuery есть div отвечающий за сокращение, ведь на /story/ можно просто сменить div, как вариант - возможно, ну и пусть лишняя нагрузка, лишний - не нужный код в футере.

А вот с подгрузкой новых постов проблема.

Куда я только за весь день не вставлял это jQuery так и не смог добиться нужного результата.

вот сам  jQuery

<script type="text/javascript">
        jQuery(".text-wrapper").each(function(){
	var review_full = jQuery(this).html();
	var review = review_full;

	if( review.length > 300 )
	{
		review = review.substring(0, 300);
		jQuery(this).html( review + \'<div class="read_more" align="center" style="cursor:pointer">...See more...</div>\' );
	}
	jQuery(this).append(\'<div class="full_text" style="display: none;">\' + review_full + \'</div>\');
});
        jQuery(".read_more").click(function(){
	jQuery(this).parent().html( jQuery(this).parent().find(".full_text").html() );
});
</script>

<div class="text-wrapper">куча контента</div>

 

Код подгрузки дополнительных постов

<div class="stories-container">
сами посты
        <div class="stories-wrapper">
            <?php
            $stories = SK_getStories();
            
            if (is_array($stories) && count($stories) > 0) {
                
                foreach($stories as $sk['story']) {
                    echo SK_getPage('story/content');
                }
            }
            ?>
        </div>
подгрузка дополнительных постов
        <div align="center">
            <div class="load-btn" onclick="SK_loadOldStories();">
                <i class="icon-reorder progress-icon hide"></i>
                <?php
                echo $lang['view_previous_posts_label'];
                ?>
            </div>
        </div>
    </div>
Link to post
Share on other sites
  • VIP

 

 


Сейчас только подумал о том, что в jQuery есть div отвечающий за сокращение, ведь на /story/ можно просто сменить div, как вариант - возможно, ну и пусть лишняя нагрузка, лишний - не нужный код в футере.

Так у Вас есть код, который на story может отображать или не отображать что-либо. В этот код и этот jQuery поставьте, если не ходите грузить  :) 

Link to post
Share on other sites

В общем, в целом по топику проблема решена, мне удалось спрятать и вывести код там где нужно, всем спасибо!

Но теперь проблема еще более не решаемая встала http://talk.pr-cy.ru/topic/13792-kak-ne-otobrazhat-kod-v-zadannom-url/#entry162148

Как добиться взаимодействия jQuery с подгружаемыми постами?

Помогите, пожалуйста, если кто-то сталкивался с этой проблемой.

Link to post
Share on other sites
Нашел js файл в котором прописан код вызова функции onclick="SK_loadOldStories();" отвечающей за подгрузку нового контента,
код кнопки
        <div align="center">
            <div class="load-btn" onclick="SK_loadOldStories();">
                <i class="icon-reorder progress-icon hide"></i>
                <?php
                echo $lang['view_previous_posts_label'];
                ?>
            </div>
        </div>
Видимо самое из простейших решений, вставить в данный код, мой jQuery код.
По логике, он (jQuery код) видимо будет обновляться в момент нажатия на кнопку "Смотреть предыдущие посты", то что и требуется.
 
Это сам js код в котором я и обнаружил onclick="SK_loadOldStories();"
начало js
// Фильтр историй
function SK_filterStories(type, timeline_id) {
    main_wrapper = $('.story-filters-wrapper');
    filter_wrapper = main_wrapper.find('.' + type + '-wrapper');
    stories_wrapper = $('.stories-container');
    
    SK_progressIconLoader(filter_wrapper);
    
    sendData = new Object();
    sendData.t = 'post';
    sendData.a = 'filter';
    sendData.type = type;
    
    if (typeof(timeline_id) != "undefined") {
        sendData.timeline_id = timeline_id;
        stories_wrapper.attr('data-story-timeline', timeline_id);
    }
    
    stories_wrapper.attr('data-story-type', type)
        .find('.stories-wrapper').html('')
        .end()
        .find('.load-btn').fadeOut('fast');
    
    $.get(SK_source(), sendData, function (data) {
        
        if (data.status == 200) {
            stories_wrapper
                .find('.stories-wrapper')
                    .html(data.html)
                .end()
                .find('.load-btn')
                    .fadeIn('fast').attr('onclick','SK_loadOldStories();').html('<i class="icon-reorder progress-icon hide"></i> Смотреть предыдущие посты');
        }
        
        main_wrapper.find('.filter-active').removeClass('filter-active');
        filter_wrapper.addClass('filter-active');
        
        SK_progressIconLoader(filter_wrapper);
        
    });
}

далее другой js..........

 

конец js

// Загрузка старых историй
function SK_loadOldStories() {
    body_wrapper = $('.stories-container');
    button_wrapper = $('.stories-container').find('.load-btn');
    
    SK_progressIconLoader(button_wrapper);
    
    outgoing_data = new Object();
    outgoing_data.t = 'post';
    outgoing_data.a = 'filter';
    
    if ( typeof(body_wrapper.attr('data-story-type')) == "string" ) {
        outgoing_data.type = body_wrapper.attr('data-story-type');
    }
    
    if ( typeof(body_wrapper.attr('data-story-timeline')) =="string" ) {
        outgoing_data.timeline_id = body_wrapper.attr('data-story-timeline');
    }
    
    if ($('.story-wrapper').length > 0) {
        outgoing_data.after_id = $('.story-wrapper:last').attr('data-story-id');
    }
    
    $.get(SK_source(), outgoing_data, function (data) {
        
        if (data.status == 200 ) {
            $('.stories-wrapper').append(data.html);
        } else {
            button_wrapper.text('No more posts to show').removeAttr('onclick');
        }
        
        SK_progressIconLoader(button_wrapper);
        
    });
}

Пробовал вставить свой jQuery код в приведенный выше js, в разных местах, либо вообще кнопка загрузки старых постов не работает, либо посты сокращаются на главной но при загрузке старых постов не сокращаются   :(

либо работает интересным образом, главная загружается - посты не сокращены, жму на кнопку "Смотреть предыдущие посты", в момент подгрузки предыдущих постов, сокращаются ранее загруженные при старте страницы и работают, но вновь загруженные не сокращены!

Если второй раз нажму на кнопку "Смотреть предыдущие посты", произойдет все тоже самое, но сокращенные посты, те что были загружены при старте страницы, уже не раскрываются... 

 

Помогите, пожалуйста, корректно вставить мой jQuery код в приведенный выше js, чтобы по нажатию на кнопку "Смотреть предыдущие посты", появлялись не только старые посты но и обновлялся мой jQuery код.

 

p.s. если я конечно прав во всем этом механизме... и мой jQuery код действительно можно сюда вставить.

 

Мой jQuery код

jQuery(".text-wrapper").each(function(){
	var review_full = jQuery(this).html();
	var review = review_full;

	if( review.length > 500 )
	{
		review = review.substring(0, 500);
		jQuery(this).html( review + '<div class="read_more" align="center" style="cursor:pointer"> РАЗВЕРНУТЬ...</div>' );
	}
	jQuery(this).append('<div class="full_text" style="display: none;">' + review_full + '</div>');
});

jQuery(".read_more").click(function(){
	jQuery(this).parent().html( jQuery(this).parent().find(".full_text").html() );
});

Спасибо!

Link to post
Share on other sites
  • 1 month later...

@sofcase, @campusboy, помогите дополнить или исправить вторую строку в коде ниже

 

 

<?php

if (preg_match('/\/story\/\d*?$/i', $_SERVER['REQUEST_URI'])) {
echo '
                    <abbr class="space6">·</abbr>
 
                    <button onclick="history.back()">
                        <i class="icon-refresh progress-icon"></i> 
                        <span>Back...</span>
                    </button>
'; 
}else {?>
                    <abbr class="space6">·</abbr>
 
                    <button href="/story/<?php echo $sk['story']['id'];?>" data-href="?tab1=story&id=<?php echo $sk['story']['id'];?>">
                        <i class="icon-refresh progress-icon"></i> 
                        <span><?php echo $lang['post_message']; ?></span>
                    </button>
<?
}
?>

 

столкнулся с проблемой, при Ajax переходам по страницам, код во второй строке не срабатывает (отлично работает без Ajax), т.к. при Ajax переходах используется data-href  (я так думаю...)

в .htaccess строка выглядит так

RewriteRule ^story/([^\/]+)(\/|)$  index.php?tab1=story&id=$1 [NC,QSA]
Код (script) внутри всех страниц 
historyurl = historyurl.replace(/\?tab1=story&id=([0-9]+)$/i, 'https://site.ru/story/$1');
 
Спасибо!
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...