• اطلاعیه ها

    • Morteza

      باهم بسازیم: اطلس ووکامرس و وردپرس   14/07/96

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

یک مشکل در php و آدرس ها

6 پست در این موضوع قرار دارد

سلام و خسته نباشید

یک اسکریپت دارم که از دیتابیس مطالب رو میخونه و نمایش میده اما آدرس ها با عدد نشون داده میشه یعنی : site.ir/page-53954.html

میخوام به جای اعداد عنوان نوشته ها نمایش داده بشه

مطالب رو با این کدذها از دیتابیس میخونه که بر اساس id هست :


<?php
ob_start();
include 'dataload.php';
/********/
ini_set("display_errors","0");
ini_set("register_globals","0");

/********/
$pageid = isset($_GET['pageid'])?intval($_GET['pageid']):'1';

$servername = strtolower($_SERVER['SERVER_NAME']);
$servername = (substr($servername,0,4) == 'www.')?substr($servername,4):$servername;
/*
//visit
$res=mysql_query("update `amar` set `count`=count+1 where `date`='".date("Y-m-d")."' limit 1;");
if(mysql_affected_rows()!=1){
mysql_query("INSERT INTO `amar` (`id`, `date`, `count`, `click`) VALUES (NULL, '".date("Y-m-d")."', '1', '0');");
}
*/
#------
if(preg_match('#([a-z0-9-]+?)\.site\.ir#i', $servername, $blogname)){
if(isset($_GET['id']) ){
$res=mysql_query("select id,username from `feeds` where `id`=(select fid from `news_tmp` where `id`=$_GET[id]) limit 1");
if(mysql_num_rows($res)>0){
list($id,$username)=mysql_fetch_array($res);
if($blogname[1]!=$username){
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://$username.site.ir/page-$_GET[id].html" );
exit;
}
}
}
$username=$blogname[1];
$res=mysql_query("select id,title from `feeds` where `username`='{$blogname[1]}'");
if(mysql_num_rows($res)>0){
list($id,$title)=mysql_fetch_array($res);
$res=mysql_query("select `title`,`text`,`date`,`keywords` from `news_tmp` where `fid`=$id ".(isset($_GET['id'])?"and `id`=$_GET[id] ":'')." /*order by `date` DESC*/");
while($row=mysql_fetch_assoc($res)){
if(isset($_GET['id']))$title=$row['title'];
?>
<div class="post-title">
<div class="post-title-space">
<h1><span lang="fa"><?=$row['title'];?></span></h1>
</div>
<div id="post-content">
<div class="post-content-text">
<div class="style2">
<span lang="fa"><?=$row['text'];?></span>
</div>
<div class="clear"></div>
<div class="clear"></div>
</div>
</div>
<div id="post-footer"></div>
</div>
<?
}
}else{
echo 'user not found in feed.';
}
}
else
{
if(isset($_GET['id']) ){
$res=mysql_query("select id,username from `feeds` where `id`=(select fid from `news_tmp` where `id`=$_GET[id]) limit 1");
if(mysql_num_rows($res)>0){
list($id,$username)=mysql_fetch_array($res);
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://$username.site.ir/page-$_GET[id].html" );
exit;
}
}
$res=mysql_query("select `title`,`id` from `news_tmp` order by `date` DESC limit 200");
if(mysql_num_rows($res)>0){
echo '<ul>';
while($row=mysql_fetch_assoc($res)){
echo "<li><a href=\"page-$row[id].html\" target=\"_blank\">$row[title]</a></li>\n";
}
echo '</ul>';
}
echo 'user not found.';
}
$out_html=ob_get_clean();
include 'tmp.php';
?>

چجوری میتونم کاری کنم که بر اساس title باشه آدرس ها یعنی site.ir/page-onvane-neveshte

جدول های دیتابیس هم اینه :

4b51alrqgnc7.jpg

میشه اینکارو کرد ؟

تشکر

ویرایش شده در توسط beh9am
0

به اشتراک گذاری این پست


لینک به پست

مطالب شما بر اساس شماره آی دی هاشون شناخته شده اگر با عنوان هم لینک بسازید به 404 می خوره و پیغام خطا می ده

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

و در اکشنتون هم باید یک کوئری اجرا کنید تا تمام نامک ها مقایسه بشند و دز صورت تکراری بودن بهش یک عدد اضافه کنه وگرنه پیوندهاتون روی هم قرار می گیرند و در نهایت اگر فرض کنیم ستون نامکهاتون نامش slug باشه در کدتون بجای


page-$row[id].html

باید بگذارید


page-$row[slug].html

و کوئریتون هم اینطوری می شه به عنوان مثال


$res=mysql_query("select `title`,`id` from `news_tmp` order by `date` DESC limit 200");

می شه


$res=mysql_query("select `title`,`slug`,`id` from `news_tmp` order by `date` DESC limit 200");

3

به اشتراک گذاری این پست


لینک به پست

مطالب شما بر اساس شماره آی دی هاشون شناخته شده اگر با عنوان هم لینک بسازید به 404 می خوره و پیغام خطا می ده

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

و در اکشنتون هم باید یک کوئری اجرا کنید تا تمام نامک ها مقایسه بشند و دز صورت تکراری بودن بهش یک عدد اضافه کنه وگرنه پیوندهاتون روی هم قرار می گیرند و در نهایت اگر فرض کنیم ستون نامکهاتون نامش slug باشه در کدتون بجای


page-$row[id].html

باید بگذارید


page-$row[slug].html

و کوئریتون هم اینطوری می شه به عنوان مثال


$res=mysql_query("select `title`,`id` from `news_tmp` order by `date` DESC limit 200");

می شه


$res=mysql_query("select `title`,`slug`,`id` from `news_tmp` order by `date` DESC limit 200");

تشکر جناب فخار

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

فکر کنم راحت ترش این باشه که آیدی + عنوان در url باشه درسته ؟

یعنی الان که اینطوریه :


site.ir/page-53954.html

بشه اینجوری :


site.ir/53954-post-title.html

اینجوری اگر بخوام فقط تغییرات در نوع فراخوانی کافیه ؟

یعنی اینجوری بشه :


page-$row[id]-[title].html

البته گذاشتم اما کار نکرد

0

به اشتراک گذاری این پست


لینک به پست

راستی اینم کدهای htaccess فکر کنم اینا هم باید تغییر کنند


RewriteEngine On
#RewriteBase /
RewriteRule page-([0-9]*).html ./index.php?id=$1 [L]
RewriteRule ^list/(.*)-([0-9]*)\.html$ ./search.php?key=$1&start=$2 [L]
RewriteRule ^list/(.*)\.html$ ./search.php?key=$1 [L]
Rewriterule ^rss.xml ./rss/rss.php
### EXPIRES
# month A2592000, week A604800, day A86400, hour A3600,15 min A900
ExpiresActive On
ExpiresDefault A86400
ExpiresByType image/x-icon A2592000
ExpiresByType application/x-javascript A2592000
ExpiresByType text/css A2592000
ExpiresByType image/gif A604800
ExpiresByType image/png A604800
ExpiresByType image/jpeg A604800
ExpiresByType text/plain A604800
ExpiresByType application/x-shockwave-flash A604800
ExpiresByType video/x-flv A604800
ExpiresByType application/pdf A604800
ExpiresByType text/html A900

0

به اشتراک گذاری این پست


لینک به پست

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

1

به اشتراک گذاری این پست


لینک به پست

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

آهان

تشکر

به همین شکلی که گفتم هم نمیشه ؟

چون گفتید مطالب با آیدی فراخوانی میشه در این چیزی که گفتم id هم در آدرس بار هست فکر کنم باید بشه

الان خودم تونستم با htacceess یه کارایی کنم که ریدایرکت بشه اما 404 میده

0

به اشتراک گذاری این پست


لینک به پست

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری