好!欢迎访问迷津渡口 现在时间是: 天气 °C ~ °C

迷津渡口

越感到迷惑 越接近真理

小指分享-emlog文章预览实现源代码

emlog实现文章预览需要修改源代码,有需要的童鞋注意备份再尝试修改使用~

include/model/log_model.php添加方法获取草稿

/**
 * 前台获取单篇草稿
 */
function getOneLogForHomePreview($blogId) {
        // 和前台获取单篇文章方法一致,就去除了后面的查询条件
	$sql = "SELECT * FROM " . DB_PREFIX . "blog WHERE gid=$blogId";
	$res = $this->db->query($sql);
	$row = $this->db->fetch_array($res);
	if ($row) {
		$logData = array(
			'log_title' => htmlspecialchars($row['title']),
			'timestamp' => $row['date'],
			'date' => $row['date'] + Option::get('timezone') * 3600,
			'logid' => intval($row['gid']),
			'sortid' => intval($row['sortid']),
			'type' => $row['type'],
			'author' => $row['author'],
			'log_content' => rmBreak($row['content']),
			'views' => intval($row['views']),
			'comnum' => intval($row['comnum']),
			'top' => $row['top'],
           		'sortop' => $row['sortop'],
			'attnum' => intval($row['attnum']),
			'allow_remark' => Option::get('iscomment') == 'y' ? $row['allow_remark'] : 'n',
			'password' => $row['password'],
                		'template' => $row['template'],
		);
		return $logData;
	} else {
		return false;
	}
}

include/controller/log_controller.php添加方法输出预览草稿

方法和displayContent一致,就是调用的是model的getOneLogForHomePreview方法。

function displayContentPreview($params) {
	$comment_page = isset($params[4]) && $params[4] == 'comment-page' ? intval($params[5]) : 1;

	$Log_Model = new Log_Model();
	$CACHE = Cache::getInstance();

     	$options_cache = $CACHE->readCache('options');
	extract($options_cache);

	$logid = 0 ;
	if (isset($params[1])) {
		if ($params[1] == 'post') {
			$logid = isset($params[2]) ? intval($params[2]) : 0;
		} elseif (is_numeric($params[1])) {
			$logid = intval($params[1]);
		} else {
			$logalias_cache = $CACHE->readCache('logalias');
			if (!empty($logalias_cache)) {
				$alias = addslashes(urldecode(trim($params[1])));
				$logid = array_search($alias, $logalias_cache);
				if (!$logid) {
					show_404_page();
				}
			}
		}
	}

	$Comment_Model = new Comment_Model();
        
        // 不同之处
	$logData = $Log_Model->getOneLogForHomePreview($logid);
	if ($logData === false) {
		show_404_page();
	}
	extract($logData);

	if (!empty($password)) {
		$postpwd = isset($_POST['logpwd']) ? addslashes(trim($_POST['logpwd'])) : '';
		$cookiepwd = isset($_COOKIE['em_logpwd_'.$logid]) ? addslashes(trim($_COOKIE['em_logpwd_'.$logid])) : '';
		$Log_Model->AuthPassword($postpwd, $cookiepwd, $password, $logid);
	}
	//meta
        switch ($log_title_style) {
            case '0':
                $site_title = $log_title;
                break;
            case '1':
                $site_title = $log_title . ' - ' . $blogname;
                break;
            case '2':
                $site_title = $log_title . ' - ' . $site_title;
                break;
        }
	$site_description = extractHtmlData($log_content, 90);
	$log_cache_tags = $CACHE->readCache('logtags');
	if (!empty($log_cache_tags[$logid])) {
		foreach ($log_cache_tags[$logid] as $value) {
			$site_key .= ','.$value['tagname'];
		}
	}
	//comments
	$verifyCode = ISLOGIN == false && $comment_code == 'y' ? "<img src=\"".BLOG_URL."include/lib/checkcode.php\" align=\"absmiddle\" /><input name=\"imgcode\" type=\"text\" class=\"input\" size=\"5\" tabindex=\"5\" />" : '';
	$ckname = isset($_COOKIE['commentposter']) ? htmlspecialchars(stripslashes($_COOKIE['commentposter'])) : '';
	$ckmail = isset($_COOKIE['postermail']) ? htmlspecialchars($_COOKIE['postermail']) : '';
	$ckurl = isset($_COOKIE['posterurl']) ? htmlspecialchars($_COOKIE['posterurl']) : '';
	$comments = $Comment_Model->getComments(0, $logid, 'n', $comment_page);

	include View::getView('header');
	if ($type == 'blog') {
		$Log_Model->updateViewCount($logid);
		$neighborLog = $Log_Model->neighborLog($timestamp);
                $tb = array();$tb_url = '';//兼容未删除引用模板
		include View::getView('echo_log');
	}elseif ($type == 'page') {
		$Log_Model->updateViewCount($logid);
		$neighborLog = $Log_Model->neighborLog($timestamp);
          	$template = !empty($template) && file_exists(TEMPLATE_PATH . $template . '.php') ? $template : 'page';
		include View::getView($template);
	}
}

include/lib/option.php添加路由规则

在getRoutingTable方法的calendar规则下面添加,位置不能在任何Log_Controller规则后面。

array(
	'model' => 'Log_Controller',
	'method' => 'displayContentPreview',
	'reg_0' => '|^.*/\?(post)=(\d+)(&(comment-page)=(\d+))?(&(logpreview)=1)([\?&].*)?$|',
),

admin/views/add_log.php添加文章预览链接

添加文章页面开始无法获取文章id,只有在保存之后才会获取,点击上传插入标签可触发自动保存或者保存草稿。

本方法使用setInterval方法检测是否能获取id,能获取则修改预览链接为正确链接,此时点击即可预览。

找到

<div class=containertitle><b>写文章</b><span id="msg_2"></span></div>

下面添加

<div id="preview"><a href="#" target="_blank">预览文章</a></div>

找到最下面的<script>标签,在里面添加:

var initPreviewInterval=setInterval("initPreview()",2000);
function initPreview() {
    var logid=document.getElementById('as_logid').value;
    if (logid != -1) {
        var preview=document.getElementById('preview').getElementsByTagName('a')[0];
        var previewlink="<?php echo BLOG_URL; ?>"+'?post='+logid+'&logpreview=1';
        preview.setAttribute('href',previewlink);
        clearInterval(initPreviewInterval);
    }
}

admin/views/edit_log.php添加文章预览链接

编辑文章页面可直接获取文章id,因此直接可获取预览链接:

找到

<div class=containertitle><b><?php if ($isdraft) :?>编辑草稿<?php else:?>编辑文章<?php endif;?></b><span id="msg_2"></span></div><div id="msg"></div>

在下面添加

<div id="preview"><a href="<?php echo BLOG_URL; ?>?post=<?php echo $logid; ?>&logpreview=1" target="_blank">预览文章</a></div>


预览文章完美实现~

点赞7
 标签: emlog emlog文章预览
   支持一下
挤眼 亲亲 咆哮 开心 想想 可怜 糗大了 委屈 哈哈 小声点 右哼哼 左哼哼 疑问 坏笑 赚钱啦 悲伤 耍酷 勾引 厉害 握手 耶 嘻嘻 害羞 鼓掌 馋嘴 抓狂 抱抱 围观 威武 给力
 点赞
 签到
 表情
 图片
 代码
提交评论

清空信息
关闭评论
520.shanxin99.com
 520.shanxin99.com 2018-09-10 21:19回复
#1
招聘兼职推广员,3000元以上/月,无押金、零投资,兼职、专职均可。
招聘对象:空闲多的人员。
职位描述:http://520.shanxin99.com/zp.asp?10
代理加盟注册:http://520.shanxin99.com/zc.asp
我的代理网站:http://520.shanxin99.com


登录网站后台:不用写代码,只要会打字就能做网站。
企业、商户、工作室请免费注册: http://shanxin99.com/zc
官网:www.shanxin99.com
顶部留言底部
 00:00/00:00
我想和你虚度时光 - 花房姑娘(9)
  1. 我想和你虚度时光
  2. 花房姑娘
  3. 恋恋风尘
  4. 我喜爱一切不彻底的事物
  5. 我的心里是满的
  6. Long Way
  7. 给少年的歌
  8. 晴日共剪窗
  9. 天上的月你的脸