رفتن به مطلب

دریافت اطلاعات یک مطلب در یک صفحه دیگر


پست های پیشنهاد شده

در یک سایت اشتراک لینک، هر مطلب ، دارای لینکی هست به منبع این نوشته. ما میخوایم این صفحه سایت منبع درون یک فریم نمایش داده بشه. در واقع یک صفحه مجزا طراحی کنیم ( مانند طراحی یک قالب خاص برای یک page) که از توابع وردپرس هم استفاده کردیم.

حالا ما چگونه باید، اطلاعات این مطلب رو به این صفحه انتقال دهیم . اطلاعاتی مانند عنوان مطلب، و لینک منبع که از طریق یک متاباکس یا زمینه دلخواه به مطلب اضافه کردیم. البته روش ارسال اطلاعات، به غیر از روش get باشه .

این تاپیک، ادامه ای هست بر تاپیک :: ایجاد فریم در سایت خبری

ویرایش شده توسط edenarezo
لینک به ارسال

1. صفحه ای با کدهایی شبیه به

<?php

/*

Template Name: news frame Head

*/

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" dir="rtl">

<head>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />

<title> head</title>

<base target="_top" />

<!-- استایل -->

<link rel="stylesheet" href="<?php bloginfo('template_url'); ?>/style.css" type="text/css" />

<?php wp_head();?>

</head>

<body>

<div class="nav">

<?php if ( !dynamic_sidebar( 'newsframe') ) : ?>

<div class="menu">

<h3>جدیدترین مطالب </h3>

<ul>

<?php

$args = array( 'numberposts' => '5' );

$recent_posts = wp_get_recent_posts( $args );

foreach( $recent_posts as $recent ){

echo '<li><a href="' . get_permalink($recent["ID"]) . '" title="Look '.esc_attr($recent["post_title"]).'" >' . $recent["post_title"].'</a> </li> ';

}

?>

</ul>

</div>

<div class="menu">

<h3>دسته بندی مطالب</h3>

<ul>

<?php wp_list_categories('show_count=1&title_li='); ?>

</ul>

</div>

<?php endif; ?>

</div>

<?php wp_footer(); ?>

</body>

</html>

ایجاد می کنید و با نام دلخواه در پوشه قالب ذخیره می کنید

2. فایل functions.php قالب را باز کنید و این کدها را بهش اضافه کنید


if ( function_exists('register_sidebar') )
register_sidebar( array(
'name' => 'News Frame',
'id' => 'newsframe',
'before_widget' => '<div class="menu">',
'after_widget' => "</div>",
'before_title' => "<h3>",
'after_title' => "</h3>"
));

3. از طریق پیشخوان > برگه ها ایجاد برگه یک برگه با قالب News Frame Head منتشر کنید

4. آدرس صفحه ایجاد شده را در کدهای آموزش بجای آدرس صفحه head.htm می گذارید

5. به پیشخوان > نمایش > ابزارک ها رفته و ابزارک دلخواه را در ستون کناری news frame که به این بخش اضافه گردیده قرار دهید

نکته در کدها یک خط پایین تر از جایی که نوشده شده استایل لینک به استایل قالب است اگر می خواهید شخصی سازی بنمایید یک برگه با پسوند css در قالب قرار دهید و نام آنرا جایگزین نام style.css در کدی که گفته شد بنمایید

از طریق این برگه می توانید استایل دلخواه به برگه اصلی بدهید

لینک به ارسال

خیلی ممنون از جواب شما . می خواستم ببنیم جواب شما ادامه داره یا خیر؟ چون اصل مشکل، که دریافت اطلاعات مطلب بود، باقی موند.

شما یک قالب ایجاد کردید، برای page ها . ما یک پیج با این قالب می سازیم. بعد این پیج می شه src فریم ما . اولین مشکل همین جاست. یعنی بالعکس کاری که شما انجام دادیم. محتوای فریم ما، سایت خارجی باشه و page ما ، بشه صفحه اصلی و نه سورس یک فریم.

روشنتر توضیح بدم. می خواهیم یک page با قالب منحصر به فرد خودش ایجاد کنیم، که درون این پیج یک فریم بزاریم و داخل فریم یک سایت خارجی رو نمایش بدیم. تا اینجا هم باز مشکلی برای طراحی نیست. مشکل اصلی اینه که، عنوان صفحه بشه the_title مطلب مورد نظر ما، و سورس فریم ما بشه، مقداری که درون فیلد متاباکس یا زمینه ای که کاربر وارد کرده.

من قبل از هرچیز از وقتی که شما می زارید و به سوالات ما پاسخ می دید، واقعاً ممنونم.

لینک به ارسال

آموزش را خواندید ؟

ساختار فریم پیج اینجوری

یک صفحه هولدر که کار نگه داری فریم ها را می کنه

شامل حداقل دو فریم

یک صفحه فریم داخلی سایت که محل قرار گرفتن اطلاعاته داخلیه که در یکی از دو فریم دیده می شه

سایت پیوند که در فریم دوم دیده می شه

صفحه ای که در بالا ایجاد کردیم دومین قسمت page frame ماست و چیزی که شما فرمودید سومین بخش

شما چه اطلاعاتی را می خواهید در این صفحه نمایش دهید ؟

این صفحه عین تمام اجزای قالب شما قابلیت های لازم را داره به صفحه header.php برید و کدهای اون رو به صورت کامل به این برگه منتقل کنید یعنی از بعد از


<?php
/*
Template Name: news frame Head
*/
?>

را پاک کنید و کدهای header.php را بگذارید

فقط در صقفحه فریم هم در جایی که


<frameset rows="64,*">

وجود داره بجای 64 مقدار ارتفاع سرصفحه تون بر مبنای پیکسل رو باید قرار بدید که معمولا برایب سر صفحه و منوی خوابیده بخش هیدر روی هم نزدیک 200 پیکسله با چند بار کم و زیاد کردن و رفرش صفحه اندازه دستتون می آد

لینک به ارسال

طبق آموزش شما جلو می ریم. من کارهایی که شما فرمودید رو انجام دادم. حالا با کلیک بروی یکی از لینک ها، صفحه news.php اجرا می شه. خب تا اینجا مطابق آموزش های شما بود. حالا میخوام title صفحه news.php رو از این عنوان تغییر بدیم. "نام سایت شما" . title این صفحه بشه، عنوان مطلبی که اون مقدار لینک رو داشته. به عنوان مثال من یک مطلب در سایتم ایجاد کردم، به نام "آموزش وردپرس با زبانی شیرین". داخل این مطلب یک لینک قرار می دم و آدرس سایت http://forum.wp-parsi.com می دم. حالا روی این لینک کلیک می کنم، صفحه news.php باز می شه. حالا عنوان این صفحه باید بشه : "آموزش وردپرس با زبانی شیرین"

یعنی علاوه بر اینکه شما آدرس منبع رو از طریق متد get ارسال کردید، باید عنوان هم ارسال کنیم.


<a href="<?php bloginfo('template_url'); ?>/news.php?u=<?php echo $link ?>" target="_blank" title="<?php the_title(); ?>">مشاهده خبر </a>

به نظر شما می شه، به جای فرستادن مقدار لینک، ما ID اون مطلب رو بفرستم و اون وقت در صفحه news.php اطلاعات رو بر اساس اون ID از دیتابیس واکشی کنیم؟

لینک به ارسال

ببینید منظورتون از کاربر همون نویسنده ی مطلبه؟

و آیا می خواین نویسنده مطلب، لینک یک صفحه رو در یک باکس وارد کنه و پس از انتشار، محتوای اون لینک درون فریم داخل پست نمایش داده بشه؟

لینک به ارسال

ببینید منظورتون از کاربر همون نویسنده ی مطلبه؟

و آیا می خواین نویسنده مطلب، لینک یک صفحه رو در یک باکس وارد کنه و پس از انتشار، محتوای اون لینک درون فریم داخل پست نمایش داده بشه؟

نه. موضوع در اصل ساخت دو صفحه اختصاصی برای هر مطلب هست . در این تاپیک توضیح دادم

لینک به ارسال

مسئله شما مشاهده اطلاعات یک مطلبه یا نمایش سایت

برای نمایش یک سایت دیگه در صفحه ای که در آدرس بار آدرس سایت شما را داره باید یا از طریق فریم انجام بشه یا آی فریم یا API که برای API شما باید به کدهای اون سایت هم دسترسی داشته باشید تا بشه کلیدی را برای ارتباط دو سایت برقرار کرد

iframe که من فکر می کنم با فریم اشتباه گرفته شده یک پنجره داخل صفحه شما برای نمایش سایت مقصد وا می کنه که از جهات مختلف توانایی های frame را نداره

و frame که چیزی که در آموزش گفته شد

واکشی اطلاعات از دیتابیس کار ساده ایه و همه جا شدنیه ولی در این مورد چه کار آیی می تونه داشته باشه؟

اما اگر مشکلتون با متد get است می شه اینکار را با متد post هم کرد که یک ایراد داره اون هم اینکه اگر صفحه در مرورگر باز بمانه و کاربر بخواد با رفرش از اطلاعات جدید خیر آگاه بشه نمی تونه

برای اینکار باید

کدهای صفحه news.php شبیه کدهای زیر بشند


<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>Untitled 2</title>
</head>
<?php if(isset($_REQUEST['myLink'])) :?>
<?php $myLink = $_REQUEST['myLink'];?>
<frameset rows="200,*">
<frame name="header" noresize="noresize" scrolling="no" src="http://yourdomain.com/?p=101">
<frame name="main" src="<?php echo $myLink;?> ">
<noframes>
<body>
متن برای وقتیکه نمایشگر از فریم پشتیبانی نمی کنه
</body>
</noframes>
</frameset>
<?php else : ?>
<body>
کدهای دلخواه برای مواقعی که صفحه بدون لینک مبدا باز می شه
</body>
<?php endif;?>
</html>

و کدهای فراخوانی جای لینکی که شما در پست قبلی نوشتید


<form action="<?php bloginfo('template_url'); ?>/news.php" method="post">
<input name="Submit1" type="submit" value="مشاهده خبر در سایت مرجع " /><input name="myLink" type="hidden" value="<?php echo $link ?>"/></form>

لینک به ارسال

خب من فکر کنم سوالم رو بد توضیح دادم که برداشت شما از اون اشتباه شده.

ببنید، من در پنل ادمین وردپرس، در قسمت افزودن نوشته، یک متاباکس اضافه کردم، که کاربر می تونه لینک سایت مرجع هم اونجا وارد کنه. وقتی مطلب منتشر می شه، زیر مطلب ، این لینک سایت منبع هم هست. حالا خواننده مطلب، با کلیک بر روی اون لینک به سایت منبع فرستاده می شه.

حالا ما می خوایم با کلیک بر روی این لینک، مخاطب به یکی از صفحات داخلی خود سایت ما ارسال بشه، که صفحه اون سایت منبع رو داخل یک فریم نمایش می ده.

خب، اسم این صفحه داخلی رو می زاریم news.php . حالا این صفحه باید مقدار لینک و عنوان صفحه رو داشته باشه که ما مقدار لینک رو از طریق متد get بهش ارسال کردیم و ....

خب من کلن متوجه شدم که باید چکار کنم.

واکشی اطلاعات بر اساس ID هم برای همین بود.

لینک به ارسال

برای عنوان هم می شه یک فیلد hidden دیگه ساخت و ارسالش کرد

می شه هم news.php را به عنوان یک قالب ساخت (مثل صفحه head) و با استفقاده از انتشار برگه ها استخراجش کردولی در فرم ارسال هم باید action به آدرس جدید تغییر کنه در اینصورت می تونید تمام اطلاعات وردپرس را در اون بخونید ولی چون این برگه ذاتا توان نمایش چیزی جز لینک و تایتل رو نداره فکر نکنم لزومی داشته باشه

لینک به ارسال

من توی این صفحه news.php نمی تونم، این دستورات رو اجرا کنم و fatal error می ده. دستور get_post

اینبار اومدم از طریق همون فرم، ID اون مطلب رو ارسال کنم که در صفحه news.php اطلاعاتم رو واکشی کنم، ولی Call to undefined function get_post()

نمی دونم علتش چیه؟!

لینک به ارسال

چیزی که می خواهید با این متد ارسال کنید این اسلوب کلیش هست


ADDRESS/?u=LINK&t=TITLE

ADDRESS

LINK

TITLE

متغیر هایی هستند که تغییر می کنند

و برایب فراخوانی


<?php echo $_GET['u']; ?>

در php کوچکی و بزرگی حروف و تمامی علائم مهمند و نباید حذف شوند یا تغییر کنند

در ضمن برای اینکه در صفحه ارور نبینید حتما از


<?php if(isset($_GET['t'])) :?>
کدهای صفحه
<?php endif;?>

استفاده کنید

لینک به ارسال

در حالت طبیعی پیوندتون به ادامه مطلب


<?php the_permalink() ?>

است حالا در برگه ایندکستون اون کد را پیدا کنید و بجاش بنویسید


<?php bloginfo('template_url'); ?>/news.php?u=<?php $news_permalink = get_post_meta($post->ID, 'news_permalink', true); echo $news_permalink; ?>

لینک به ارسال
  • 3 ماه بعد...

سلام دوستان ، راستش من این آموزش رو خوندم ولی دقیقا متوجه نشدن ...

من از افزونه FEEDWORDPRESS استفاده کردم

این تابع رو در انتهای خبر قرار دادم :


منبع : <a href="<?php echo $syndication_permalink;?>"><?php echo $syndication_source; ?> </a><br />

یک صفحه به نام IFRAIM.php در قالب ایجاد و محتوایت را به این صورت قرار دادم :


<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<title>پايگاه فرهنگي و اطلاع رساني ذابين</title>
</head>
<?php if(isset($_GET['u'])) : ?>
<?php $url= $_GET['u'] ;?>
<frameset rows="64,*">
<frame name="header" noresize="noresize" scrolling="no" src="head.html">
<frame name="main" src="<?php echo $url;?>">
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</body>
</noframes>
</frameset>
<?php else : ?>
<body>
<script type="text/javascript">
<!--
window.location="http://www.zabbin.ir/ "
//-->
</script>
</body>
<?php endif;?>
</html>

حالا من این کد رو دقیقا کجا قرار بدم :


<?php if(get_post_custom_values('syndication_permalink ')) : ?>
<a href="<?php bloginfo('template_url'); ?>/IFRAIM.php?u=<?php $syndication_permalink
= get_post_meta($post->ID, 'syndication_permalink ', true); echo $syndication_permalink
; ?>">مشاهده خبر</a>
<?php endif;?>

یه سوال دیگه ؛ اگه ما این مراحل رو انجام بدیم بعد از کلیک روی تیتر خبر متن اصلی میاد یا اینکه داخل مطلب میره و از اونجا باید روی لینک "متن کامل خبر" کلیک کنیم تا متن اصلی باز بشه !؟

لینک به ارسال
حالا من این کد رو دقیقا کجا قرار بدم :
ذ هرجایی که قرار هست به خبر لینک بدید

مثلا حلقه پست

یه سوال دیگه ؛ اگه ما این مراحل رو انجام بدیم بعد از کلیک روی تیتر خبر متن اصلی میاد یا اینکه داخل مطلب میره و از اونجا باید روی لینک "متن کامل خبر" کلیک کنیم تا متن اصلی باز بشه !؟

بستگی داره کجا استفاده کنید

اگر در حلقه اول استفاده کنید مستقیم نمایش داده میشه

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...