PDA

View Full Version : آدرس دهی لینک ها توی این سایت چطور انجام میشه؟



explod_javad
یک شنبه 14 مهر 1387, 23:09 عصر
همه لینک ها با کوئری استرینگ در صفحه دیفالت لود میشن
این هم لینک سایت نمونه.
http://www.yu.ac.ir/Default.aspx?tabid=19
کسی میدونه که چطور به وسیله عددی که در کوئری استرینگ وجود داره به صفحات مورد نظر میشه رفت بدون اینکه آدرس بار ، آدرس صفحه جدید را نشان بدهد.
آیا ممکنه آدرس صفحات در دیتا بیس باشه و tabid ای دی اون سز باشه ؟

اگه اینطوره علت استفاده از این روش چیه ؟
سرعت لود این سایت و سایت سازنده هم خیلی خوبه . چرا ؟

nextplus
سه شنبه 16 مهر 1387, 17:10 عصر
دوست عزیز این نوع صفحات مخصوص مدیریت محتوا و پورتال هاست
روش کار به این صورته که زمان طراحی سایت یکسری صفحات بعنوان کامپوننت برای سایت طراحی میشه که مشخصات این کامپوننت ها رو داخل دیتابیس سایت ایندکس می کنند ، مثلا داخل یک جدول چیزهایی مثل این رو مینویسه
1- name=main - url=mycomponent/main.asp
2- name=news - url=mycomponent/news.asp
3- name=project - url=mycomponent/project.asp
4- name=sitemap - url=mycomponent/sitemap.asp
.
.
حالا که زمان تعریف منوی اصلی و قابل نمایش سایت که می رسه داخل یک جدول دیگه مشخصات صفحات رو بصورت چندین رکود که شامل id و نام نمادین صفحه و نوع صفحه ای که باید لود بشه رو ثبت می کنه
مثال :
id=123
page=news
title=اخبار سایت

وقتی زمان ایجاد منو برای سایت می شه اطلاعات بالا رو از جدول می خونه و با توجه به داده ها لینکها رو میسازه مثلا http://mysite.com/default.asp?pid=123
عدد 123 همون id که داخل جدول ثبت کردیم و چون همه اینها داخل یک صفحه لود می شه default.asp وقتی query وارد صفحه میشه صفحه مادر یا اجرا کننده این عدد را (در بانک) جستجو میکنه و رکورد رو استخراج می کنه ،
خب حالا با داشتن رکوردی که برای ما مشخص می کنه که چه صفحه ای لود بشه کارمون راحته
فقط کافیه تو قسمت متغیر صفحه، صفحه معرفی شده رو include کنیم.

اما چرا سرعت لود این صفحات بهتره: بخاطر اینکه این صفحات فقط توی یک صفحه اجرا می شن و این صفحه شامل دو قسمته - یک قسمت ثابت که منوها و لوگو ها رو نشون میده و یک قسمت خالی یا همون متغیر که بخشیه برای include کردن کامپوننت ها.

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

explod_javad
سه شنبه 16 مهر 1387, 22:52 عصر
nextplus عزیز ، خیلی ممنون از وقتی که گذاشتی.
توضیحات شما کمل بوده و تونستم یه چیزایی بفهمم.

آیا صفحات بصورت فیزیکی وجود دارد و فقط آدرس و مشخصات اون در بانک ذخیره است؟
و اینکه چطور صفحاتی که بصورت فیزیکی وجود دارد را در صفحه اصلی include کنم.
(دستورش چیه ؟ )

ممنون.

nextplus
چهارشنبه 17 مهر 1387, 12:04 عصر
البته نه کامل فیزیکی ،چون یک سری از اون ها با پارامترهای خاص اجرا می شن

دستورش هم <!--#include file="filename"--> هستش

یک مثال : فرض بر اینکه ما یک پوشه بنام component داریم که صفحات فیزیکیمون داخل این پوشه است و صفحه اصلی در ریشه می باشد
این صفحه رو با پارامتر pg=123 اجرا می کنیم ،
در ابتدای کد ما این پارامتر را به بانکی که قبلا توضیح دادم می فرستیم و بعد از اینکه نوع صفحه استخراج شد با یک select case صفحه را include می کنیم
select page
case 1:<!--#include file="component/news.asp"--> 'call news page
case 2:<!--#include file="component/project.asp"--> 'call project page
case 3:<!--#include file="component/sitemap.asp"--> 'call sitemap page
case 4:<!--#include file="component/contact.asp"--> 'call contact page
.
.
.
و اما توضیح در مورد یکسری صفحاتی که تقریبا ویرایشش اصول خاصی نداره و دست خودمون هست که من بهشون میگم صفحات خام
محتوی این صفحات داخل دیتابیس ذخیره میشه که همون کدهای html یا bbcode میتونه باشه
برای این صفحات یک اندیس باید تعریف بشه که باید با همون اندیس صدا بشه و در بانک ذخیره بشه
مثلا ورودی ما بصورت pg=230 و ما بعد از بررسی در بانک صفحه خام یا blank.asp رو include کردیم؛ حالا باید داخل کد همین صفحه خام اندیس 230 رو به بانک بفرستیم و خروجی رو چاپ کنیم ، اینهم میشه صفحه مجازی .

اینم باید بگم در کل این کار اصول خاصی نداره ( حداقل من جایی ندیدم ) و این روشی که خدمتتون عرض کردم روش کار خودمه.

explod_javad
چهارشنبه 17 مهر 1387, 22:34 عصر
صادق جان شرمنده و ممنون.
من توی یک صفحه aspx به اسم MainPageمیخام یه فایل aspx دیگه به اسم News رو include کنم.

خطا که میده اینه ؟!


Server Error in '/Test' Application.
--------------------------------------------------------------------------------

Parser Error
Description: An error occurred during the parsing of a resource required to service this request. Please review the following specific parse error details and modify your source file appropriately.

Parser Error Message: There can be only one 'page' directive.

Source Error:


Line 1: <%@ Page Language="VB" AutoEventWireup="false" CodeFile="News.aspx.vb" Inherits="News" %>
Line 2:
Line 3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


Source File: /Test/news.aspx Line: 1

nextplus
پنج شنبه 18 مهر 1387, 11:43 صبح
چند تا نکته
1 - صفحه ای که include میشه نباید شامل هدر های معرفی باشه
2 - داخل یک فرم که ایجاد کردید نباید یک فرم دیگه ایجاد کنید ، شما با دستور include یک فرم دیگه رو با همون نام form1 فراخوانی میکردید .
3 - زمان include کردن یک فایل دقیقا محتوی فایل صدا شده در فایل اصلی نوشته میشه و بعد اجرا میشه ؛ پس هر کدی که نوشتن مجددش توی یک صفحه ایجاد خطا می کنه رو باید از صفحه های فرعی حذف کنی ، مثل همون هدر ها
4- دوست عزیز اینجا تالار Asp کلاسیکه نه asp.net

ولی به هر حال موضوع تا حدودی عمومیت داشت و میشه ....

من فایلتونو ویرایش کردم و اجرا شو گرفتم ، مشکلی وجود نداره.:چشمک: