Emlog调用附件第一张图片和正文第一张图片的方法 emlog

现在制作主题,喜欢在首页放上图片展示或图文形式,在emlog主题制作中要如何才能实现这种效果?

下面介绍了几种常用的方法,抛砖引玉,大家一起共同探导一下。

1、直接读取附件图片

原理:这种方法就是直接判断附件的类型,并获取第一张图片的信息;如果没有图片附件,则显示默认图片或随机图片。

方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。


<?php
//获取文章缩略图,先是自定义指定,然后是查找附件图片,最后是随机图片
function mrxn_fjimg($logid){
 $db = MySql::getInstance();
$thum_pic = EMLOG_ROOT.'/thumpic/'.$logid.'.jpg';
if (is_file($thum_pic)) {
$thum_url = BLOG_URL.'thumpic/'.$logid.'.jpg'; 
}else{
$sqlimg = "SELECT * FROM ".DB_PREFIX."attachment WHERE blogid=".$logid." AND (`filepath` LIKE '%jpg' OR `filepath` LIKE '%gif' OR `filepath` LIKE '%png') ORDER BY `aid` ASC LIMIT 0,1";
//    die($sql);
$img = $db->query($sqlimg);
while($roww = $db->fetch_array($img)){
$thum_url=BLOG_URL.substr($roww['filepath'],3,strlen($roww['filepath']));
}if (empty($thum_url)) {
srand((double)microtime()*1000000); 
$randval   =   rand(0,9); 
$thum_url = BLOG_URL.'content/templates/mrxn/images/mrxn_net/'.$randval.'.jpg';} //随机图片路径
}echo $thum_url;}
?>


然后在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码:

<img src="<?php mrxn_fjimg($value['logid']); ?>" >

优缺点:优点:上传图片无论是否插入了正文,都可以读取第一张显示。

缺点:一是只能读取上传的第一张图片。

2.读取正文的第一张图片

原理:直接从正文代码——包括注释代码——中获取第一张图片的信息;如果正文中没有图片,则显示默认图片或者随机图片。

方法:先将获取附件图片的方法定义成一个函数,放在模板文件module.php中(代码如下),位置随便。





<?php
//获取文章中第一张图片,如果没有就调用随机图片
function mrxn_zwimg($str){
preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $str, $match);
if(!empty($match[1])){echo $match[1][0];}else{
echo TEMPLATE_URL . 'images/mrxn_net_wzimg/'.rand(1,20).'.jpg'; //随机图片路径及图片命名1.jpg……20.jpg
}}
?>
在你需要的地方,emlog一般是在log_list.php(当然也可以在你自己的文件)相应的地方插入下面代码: <img src="<?php mrxn_zwimg($value['content']); ?>"



以下代码为调用正文第一张图片,没有图片则自定义,也可以空白,直接放在你要log_list.php对应位置即可。


<?php $imgsrc = preg_match_all("|<img[^>]+src=\"([^>\"]+)\"?[^>]*>|is", $value['content'], $img);$imgsrc = !empty($img[1]) ? $img[1][0] : ''; ?><?php if($imgsrc): ?><img src="<?php echo $imgsrc; ?>"><?php else: ?><img src="<?php echo TEMPLATE_URL;?>images/news.jpg" alt="暂无图片" /><?php endif; ?>






admin 发布于  2015-7-26 03:27 

修改emlog后台登录路径的方法 emlog

emlog后台登录地址的目录名称默认为admin,并且官方没有提供自定义后台登录入口名字的功能,这多少让我们觉得有些不安全,毕竟暴露一个网站的后台不是一件安全的事,今天就给您说下修改方法,增加一下网站的安全性。
虽然我们进入后台的地址是/admin,但其实真实的地址还是/admin/index.php。那么就先从这个文件开始下手,打开这/admin /index.php这个文件后,看到第7行require_once 'globals.php';这一句,也就是说在index.php运行之前会先加载globals.php这个文件,由文件路径可以看出这个文件是处于 当前文件夹中,找到并打开它。发现它又加载了一文件,是根目录的init.php。先不管它,先来看下面的,第9行
define('TEMPLATE_PATH', EMLOG_ROOT.'/admin/views/');
定义了一个后台模板路径的常量,这个路径经过登录接口目录,所以我们把它修改成你想要的名称,比如修改成我的ID,即
define('TEMPLATE_PATH', EMLOG_ROOT.'/mrxn/views/');
现在先不预览,因为可能还有没有修改的地方,免得会报错。继续往下看。
登录验证,没什么问题。退出,这个让我想到了平时点退出的时候,地址是/admin?action=logout,这里可以看到,它是在admin上加了一个logout的动作,所以我仔细看了一下它,但是没看出可以修改的地方。
那么我们开始看刚才引入的那个文件:init.php。打开这个文件。
由这个文件开头的注释:全局项加载,我们了解到,从现在开始,要开始大规模加载东西了,我想,如果下面还有需要修改的地方的,那修改会变得很麻烦,所以我 就此先打住,先测试一下,以现在的修改,有没有成功的可能性。我先是把后台登录的文件夹名称改成admin1,然后打开浏览器输入 http://localhost/admin1,打开后台入口,没有任何错误,接着输入账号密码登录,没有报错,我试着进行了各项操作,包括写日志等 等,没有出现异常,也就是说后台登录入口的修改至此成功。

总结一下,其实就两步:
1、修改根目录下admin的名称
2、admin/globals.php这个文件的第9行后面admin/views/中的admin改成你要的名称。
3、千万不要用记事本来修改核心文件,否则后果很严重。


修改Emlog后台默认列表显示条数

在include/model/log_model.php文件中找到

$limit = "LIMIT $start_limit, " . $perpage_num;

大概在147行的样子,改为

$limit = "LIMIT $start_limit, " . 1000;

其中1000表示现在所显示的条数



admin 发布于  2015-7-25 19:14 

emlog文章浏览数在规定的时间内算一次修改方法 emlog

文章浏览数在规定的时间内算一次修改方法(感谢EM开发QQ群@土著人宁巴)



找到include/controller/log_controller.php 大概102中



$Log_Model->updateViewCount($logid);



改为(其中86400为时间,单位为秒)就可以搞定了。





if(time()-intval($COOKIE['viewtime'.$logid])>86400){

$LogModel->updateViewCount($logid);

setcookie('viewtime
'.$logid,time());

}



另外附上按点击数排列文章的方法





找到include/controller/log_controller.php 大概19中



$sqlSegment ='ORDER BY top DESC ,date DESC';



top改为views即可。。



本人把方法分享给大家,希望对大家所帮助。



admin 发布于  2015-7-24 10:50 

EMLOG实现图片防盗链的方法(伪静态实现) emlog

用于防范emlog附件图片被其它网站盗链,本代码来源于em论坛,由qiukong编辑撰写,测试可正常运行,现再次分享给大伙,代码如下:


RewriteEngine on
RewriteBase /content
RewriteCond %{HTTP_REFERER} !^$ [NC]
RewriteCond %{HTTP_REFERER} !mrxn.net [NC]
RewriteCond %{HTTP_REFERER} !so.com [NC]
RewriteCond %{HTTP_REFERER} !soso.com [NC]
RewriteCond %{HTTP_REFERER} !sogou.com [NC]
RewriteCond %{HTTP_REFERER} !baidu.com [NC]
RewriteCond %{HTTP_REFERER} !bing.com [NC]
RewriteCond %{HTTP_REFERER} !google.com [NC]
RewriteRule .*\.(jpg|jpeg|png|bmp|gif)$ https://mrxn.net/daotu.gif [R,NC,L]

    在你的主机根目录新建文件.htaccess,加入上面的内容。(如果开启了伪静态已经有.htaccess,就把2~4行粘贴到</ifmodule>前面即可)

然后代码要进行一些修改,其中“mrxn.net”改为你的网站域名,“https://mrxn.net/daotu.gif”改成盗链网站显示的图片

该代码可防止content目录一切图片被盗链,如模板、附件等等。当然,你也可以增加可以使用图片的站,比如,你增加一个emlog.net 就是论坛.


RewriteCond %{HTTP_REFERER} !emlog.net [NC] 即可让图片在emlog论坛正确显示.




admin 发布于  2015-7-23 11:28 

Emlog实现最新头条文章标题加摘要显示代码 emlog

最新置顶头条文章标题加摘要显示的效果,把以下代码复制到module.php里面,如需调用分类置顶文章请把top='y'改为sortop='y'即可


<?php
//首页置顶头条,不带图片
function sheli_zdLog() {
$db = MySql::getInstance();
$sql = "SELECT gid,title,content,date FROM ".DB_PREFIX."blog WHERE type='blog' and top='y' ORDER BY `top` DESC ,`date` DESC LIMIT 0,1";
$list = $db->query($sql);
while($row = $db->fetch_array($list)){
//$row['content'] = htmlspecialchars($row['content']);
$row['content'] = strip_tags($row['content']);?>
<h1><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>" target="_blank"><?php echo $row['title']; ?></a></h1>
<span class="note"><?php echo mb_substr($row['content'],0,85,'utf-8'); ?>...</span><a href="<?php echo Url::log($row['gid']); ?>" target="_blank">阅读全文>></a>    
<?php } ?>
<?php } ?>



如果需要带图片请使用下面代码放入module.php中,如需调用首页置顶文章请把sortop='y'改为top='y'即可



<?php //分类置顶头条,带图片
function sheli_zdLog(){ $db = MySql::getInstance(); $sql = $db->query ("SELECT * FROM ".DB_PREFIX."blog inner join ".DB_PREFIX."sort WHERE hide='n' AND type='blog' AND sortop='y' AND sortid=sid order by date DESC limit 0,5"); while($row = $db->fetch_array($sql)){ if (!empty($row['excerpt'])){ preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $row['excerpt'], $match); if(empty($match[0][0])) { preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $row['content'], $match); } }else{ preg_match_all("/\<img.*?src\=\"(.*?)\"[^>]*>/i", $row['content'], $match); } $logpost = !empty($row['excerpt']) ? $row['excerpt'] : ''.$row['content'].''; $num = rand(1,3); $img = isset($match[0][0]) ? $match[0][0] : '<img src="'.TEMPLATE_URL.'images/shuyong_net/'.$num.'.jpg">'; $date = gmdate('Y年m月d日', $row['date']); $content = strip_tags($logpost,''); $content = mb_substr($content,0,250,'utf-8');$comment = ($row['comnum'] != 0) ? '被吐槽<span>'.$row['comnum'].'</span>次' : '暂无吐槽'; $gid = $row['gid']; $tag = $db -> query("SELECT * FROM ".DB_PREFIX."tag WHERE gid LIKE '%,$gid,%'"); $out .='
<div class="flash_img2">
<div class="hdp_img"><a href="'.Url::log($row['gid']).'" title="'.$row['title'].'"   >'.$img.'</a></div>
<div class="hdp"><h4><a href="'.Url::log($row['gid']).'" title="'.$row['title'].'">'.$row['title'].'</a></h4>
<h5>日期:'.$date.'      分类:<a href="'.Url::sort($row['sortid']).'" title="查看 '.$row['sortname'].' 中的全部文章" rel="category tag">'.$row['sortname'].'</a>     共被围观 '.$row['views'].' 次    '.$comment.'</h5> 
<h6>'.$content.'...</h6></div></div>
'; } echo $out; }?>


以上未提供css代码,请自行折腾


admin 发布于  2015-7-22 23:35 

Emlog按天数时间调用热门文章列表 emlog

Emlog按天数时间调用随机热门文章列表

把以下代码复制到模板目录下的module.php里面,其中30*24*60*60中的30为天数,可自行修改

<?php
//30天按点击率排行文章
function sheli_hotlog($log_num) {
$db = MySql::getInstance();
$time = time();
$sql = "SELECT gid,title FROM ".DB_PREFIX."blog WHERE type='blog' AND date > $time - 30*24*60*60 ORDER BY `views` DESC LIMIT 0,$log_num";
$list = $db->query($sql);
while($row = $db->fetch_array($list)){ ?>
<li><a href="<?php echo Url::log($row['gid']); ?>" title="<?php echo $row['title']; ?>"><?php echo $row['title']; ?></a></li>
<?php } ?>
<?php } ?>

在需要的调用的地方输入<?php sheli_hotlog(10);?>调用,其中10为调用的数量。



admin 发布于  2015-7-22 12:15 

emlog插件 ---- SyntaxHighlighter 代码高亮2.2更新 emlog

此款emlog插件有以下功能:

  • 代码高亮(包含十几种常见代码自动高了着色);
  • pre标签自动换行(妈妈再也不用担心我的代码过长显示不全了-_-|);
  • 可复制,点击一下即可复制代码到剪贴板,方便使用;
  • 可新窗口查看代码,进行其他操作;
  • 可打印(貌似没啥用 -_-|)
  • 暂时就这么多.

有如下不足:

由于emlog 5.1.0版本采用KindEditor新版本,不支持原来的方法,因此不再支持5.1.0及以下版本

如果你的文章页或者是css中对pre标签有空值作用,可能会有bug显示.可自行调试解决,或者联系我,我会尽力帮你解决.

兼容性不是太好,如果安装后发现不能正常使用,请检查是否是某款插件冲突导致.

使用方法:

第一步:通过后台插件安装地址,上传安装插件,如果失败(一般是空间不支持)

请解压后用FTP上传至  网站根目录/content/plugins/ 路径下

第二步:在插件设置页面刷新,激活即可

<?php
/**
 * Confirms that the activation key that is sent in an email after a user signs
 * up for a new blog matches the key for that user and then displays confirmation.
 *
 * @package WordPress
 */

define( 'WP_INSTALLING', true );

/** Sets up the WordPress Environment. */
require( dirname(__FILE__) . '/wp-load.php' );

require( dirname( __FILE__ ) . '/wp-blog-header.php' );

if ( !is_multisite() ) {
    wp_redirect( site_url( '/wp-login.php?action=register' ) );
    die();
}

if ( is_object( $wp_object_cache ) )
    $wp_object_cache->cache_enabled = false;

// Fix for page title
$wp_query->is_404 = false;

/**
 * Fires before the Site Activation page is loaded.
 *
 * @since 3.0.0
 */
do_action( 'activate_header' );

/**
 * Adds an action hook specific to this page that fires on wp_head
 *
 * @since MU
 */
function do_activate_header() {
    /**
     * Fires before the Site Activation page is loaded, but on the wp_head action.
     *
     * @since 3.0.0
     */
    do_action( 'activate_wp_head' );
}
add_action( 'wp_head', 'do_activate_header' );

/**
 * Loads styles specific to this page.
 *
 * @since MU
 */
function wpmu_activate_stylesheet() {
    ?>
    <style type="text/css">
        form { margin-top: 2em; }
        #submit, #key { width: 90%; font-size: 24px; }
        #language { margin-top: .5em; }
        .error { background: #f66; }
        span.h3 { padding: 0 8px; font-size: 1.3em; font-family: "Lucida Grande", Verdana, Arial, "Bitstream Vera Sans", sans-serif; font-weight: bold; color: #333; }
    </style>
    <?php
}
add_action( 'wp_head', 'wpmu_activate_stylesheet' );

get_header();
?>



插件下载:et_highlighter51.zip 备份链接:http://pan.baidu.com/s/1jGvqycI

欢迎大家下载使用,转载请注明出处,谢谢. Powered By Mrxn  https://mrxn.net

标签: 代码 php emlog

admin 发布于  2015-7-22 01:30 

emlog教程--为网页添加动态背景 (背景轮播) emlog

以前文章 最近发现一个插件所以重新更新下本文

插件名称: jquery.backstretch.js

下面是 示例代码:

设置网页背景:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>全屏背景</title>
    <script src="http://api.asilu.com/cdn/jquery.js,jquery.backstretch.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$.backstretch('http://api.asilu.com/cdn/img/bg/444.jpg');
</script>
</body>
</html>
多张张图片切换:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>全屏背景切换</title>
    <script src="http://api.asilu.com/cdn/jquery.js,jquery.backstretch.min.js" type="text/javascript"></script>
</head>
<body>
<script type="text/javascript">
$.backstretch([
        'http://api.asilu.com/cdn/img/bg/444.jpg',
        'http://api.asilu.com/cdn/img/bg/445.jpg',
        'http://api.asilu.com/cdn/img/bg/446.jpg',
        'http://api.asilu.com/cdn/img/bg/447.jpg',
        'http://api.asilu.com/cdn/img/bg/448.jpg'
    ], {
        fade : 1000, // 动画时长
        duration : 2000 // 切换延时
});
</script>
</body>
</html>
该代码实现了, 背景图片的切换,带有切换效果的
第一个版本 切换效果用到了 jQuery 的动画,这个版本果断放弃 不需要 jQuery切换动画由CSS设置

具体代码如下
CSS 样式
JS 代码
HTML 就一个 div#bg简单实用

<meta http-equiv="Content-Type"content="text/html; charset=UTF-8"/>
<style>
div#bg {
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  z-index: -10;
  background-position: center 0;
  background-repeat: no-repeat;
  background-attachment: fixed;
  background-size: cover;
  -webkit-background-size: cover;
  -o-background-size: cover;
  zoom: 1;

  opacity:1;
  transition: opacity 1s linear;
  -moz-transition: opacity 1s linear;
  -webkit-transition: opacity 1s linear;
  -o-transition: opacity 1s linear;
}
</style>
<h1><a href="http://gouji.org/?post=317">代码出处</a></h1>
<div id="bg"></div>
<script>
// 定义图片路径 {num} 为 可变的图片序号
var bgImgUrl = 'http://api.asilu.com/cdn/img/bg/{num}.jpg', bgNum,
    bgImgArr = [],
    bgDiv = document.getElementById("bg");
// 组合数组 此处 200 为 图开始序号 结束 210
for (var i=200; i <= 210; i++){
  bgImgArr.push(bgImgUrl.replace('{num}', i));
}
setBGimg();
function setBGimg(d){
  if(!bgNum || bgNum > bgImgArr.length) bgNum = 0;
  bgDiv.style.opacity = .001;
  setTimeout(function(){
    bgDiv.style.backgroundImage = 'url('+ bgImgArr[bgNum] +')';
    bgDiv.style.opacity = 1;
  }, 1000);
  bgNum++;
  if(typeof d == 'undefined') 
    setInterval(function(){setBGimg(true);}, 6000);
    // 上一行的 6000 是背景图片自动切换时间(单位 毫秒)
}
</script>
原文为简爱博客,地址:http://www.gouji.org/?post=317


admin 发布于  2015-7-20 21:23 

想装逼?提升逼格?自慰?戳进来-Mrxn教你让文章浏览数随机增加 emlog

如题:想装逼?提升逼格?自慰?戳进来-Mrxn教你让文章浏览数随机增加

之前在论坛看过这种帖子,还有人求助...

看了一下各位给出的答案就是夹固定的数量.我想这么装逼不是很爽,不舒服呀.别人一看就知道了.你每次刷新网页增加的都是一样的.-_-|

今天我看自己也前的文章的时候发现了这篇文章:让emlog侧边栏显示彩色标签,随机显示标签,数量多少有你控制

于是就想到了这个.rand()php随机函数  于是就有了如下的装逼姿势:

/**
     * 增加阅读次数
     *
     * @param int $blogId
     */
    function updateViewCount($blogId) {
        $vnum=rand(1,7);
        $this->db->query("UPDATE " . DB_PREFIX . "blog SET views=views+'$vnum' WHERE gid=$blogId");
    }
友情提示:装逼有风险.请自行买保险!

这样修改了 include/mode/log_model.php 的第 302行 后,装逼姿势就优雅多了,有木有,rand(1,7)可以自己随便修改的.

总地来说.就装逼,然并卵!自慰吧.骚年!   Mrxn writed 2015/07/20


admin 发布于  2015-7-20 17:00 

Emlog教程:实现Tag汇总单独页面的方法 emlog

这个Tag汇总页面的方法并不难,先在你的根目录下新建一个PHP文件(比如就叫tags.php),然后把如下代码放到文件中就好了:

<?php
//tag汇总页面
require_once 'init.php';
define('TEMPLATE_PATH', TPLS_PATH.Option::get('nonce_templet').'/');
$CACHE = Cache::getInstance();
$options_cache = $CACHE->readCache('options');
extract($options_cache);
$navibar = unserialize($navibar);
$curpage = CURPAGE_HOME;
$site_title = '标签 - '.$blogname;
$site_key = '关键词';
$site_description = '描述';
include View::getView('header');
?>
<div id="tags">
<?php global $CACHE;$tag_cache = $CACHE->readCache('tags');?>
<h2><a href="<?php echo $log_url; ?>"><?php echo $log_title; ?></a></h2>
<?php foreach($tag_cache as $value): ?>
<span style="font-size:<?php echo $value['fontsize']; ?>pt; line-height:30px;"><a href="<?php echo Url::tag($value['tagurl']); ?>" title="<?php echo $value['usenum']; ?> 篇日志"><?php echo $value['tagname']; ?></a></span><?php endforeach; ?>
</div>
</body>
<style type="text/css">
#tags{max-width:1000px; margin:auto;}
</style>
</html>
这里必须给大家说清楚,如果你只是把这个代码贴上去可能并不一定能正常显示,还需要配置你的css,建议你也参考模板的css写上去,这样可能比较美观。 保存到PHP文件之后,你通过http://你的域名/tags.php就能访问了.


标签: emlog

admin 发布于  2015-7-20 12:08