簡體   English   中英

使用php在自定義內容中創建動態“閱讀更多”鏈接

[英]Create a dynamic 'Read More' link within custom content using php

希望標題可以解釋我想要完成的一些事情。 所以我有一個自定義的CMS系統,基本上有一個正常的WYSIWYG(tinymce),用戶可以寫他們的博客文章。 我已經查看了“分頁”這篇文章,但我找不到任何過去“你必須自己編寫這些功能”,所以我的第一個想法就是添加兩個textareas,但這不太方便。

如果有一些東西可以添加到所見即所得中,我認為很好:

<span id='break1"></span>

我可以使用php或jquery或其他任何東西將你的代碼轉換為鏈接,然后使用htaccess文件來處理URL的其余部分。

我幾乎沒有關於如何處理這個的想法,所以任何信息,對此的想法將不勝感激。

這是一個'應該做'的例子:

<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit.</p>
<a href="/seo-title/2/">read more</a>
<!-- people would not see this part until the 'read more' link was clicked. -->
<!-- will open a new page NOT just hidden content -->
<p>Duis scelerisque, in tempus ante tortor eget tortor. Donec eu consequat augue.</p>

如果我理解正確,你想在PHP中生成這個並在javascript中處理更多的讀取(特別是jquery)。 我寫了一個你可以構建的基本代碼片段。

<p><?php echo substr(CONTENT,0,255); ?></p>
<?php if (strlen(CONTENT) > 255): ?>
    <a class="readmore">read more</a>
    <p class="more"><?php echo substr(CONTENT,256); ?></p>
<?php endif; ?>

javascript看起來像這樣,快速切換。

var $readmore = $('.readmore');
$readmore.bind('click',function(){
    var $next = $(this).next('p');
    $next[$next.is(':visible') ? 'hide' : 'show']();
});

我在博客上為摘要做的方式是使用評論:

<! - 更多 - >

然后我有一個函數來獲得博客文章的摘要:

$i = strpos($contents, '<!--more-->');

if ($i !== false) {
    $i += strlen('<!--more-->');
    return substr($contents, 0, $i);
}
else return $contents;

我認為邁克爾是正確的,除非我理解你想要在點擊鏈接時創建一個新窗口,所以我認為實現這一目標的最佳方法可能是將帖子ID或其所擁有的任何唯一標識符傳遞給新頁面執行sql查詢以檢索帖子。

這通過get字符串最簡單:

<a href="fullpost.php?id=<?php echo $id; ?>" target="_blank">Read More</a>

然后我們邁克爾的子功能在那里削減你想要削減它的帖子。

您可能想要研究的另一個想法是,如果您希望通過簡短地縮短帖子來增加加載時間,那么您可以考慮將內容中的內容添加到具有動畫下滑或類似內容的隱藏框架中。 這就是我在我的頁面上所做的。

如果您想在新頁面上顯示整個帖子而不僅僅是截止部分,那么只需將它們發送到該頁面並傳遞帖子ID即可執行查詢。

我完全不明白你想做什么...點擊“閱讀更多”鏈接並顯示之前隱藏的第二個p-tag? 那是對的嗎?!

<a href="javascript:void(0);" onclick="jsFunction()">read more</a>

jsFunction()是一個用於顯示p-tag的占位符。 你想用span-element怎么說:-)?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM