زمان جاری: 2012/05/24, 12:20 AM خوش آمدید مهمان گرامی! (ورودعضویت)



عنوان صفحه


ارسال موضوع  ارسال پاسخ 
  • 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
عنوان صفحه
نویسنده پیام
786ali آفلاین
عضو نیمه حرفه ای
**

ارسال‌ها: 135
تاریخ عضویت: Jul 2011
رتبه: 2
تشکر: 197
80 بار تشکر شده در 42 پست
ارسال: #1
Star عنوان صفحه
تگ عنوان یا title در صفحه بسیار مهم است ، حال می خواهیم یک روش ساده برای مدیریت عنوان تمام صفحات را مرور کنیم :

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

تذکر : در کیک 1.3 برای تعریف عنوان هر تابع در کنترلر از کد زیر استفاده می شود (عنوان فرعی) :

کد PHP:
$this->set("title_for_layout"," صفحه "); 


برای ساخت عنوان اصلی به فایل bootstrap.php در /app/config مراجعه و کد زیر را تعریف می کنیم :

کد PHP:
define'WEBSITE_ALL_TITLE'' سایت ' ); 

حال یک element می سازیم با نام دلخواه (در این مثال pagetitles می باشد) و پسوند ctp در مسیر view/elements/ تا بتوانیم در صفحات به راحتی از آن استفاده کنیم :

کد PHP:
<?php if(isset($title_for_layout)){$title " | ".$title_for_layout;}else{$title '';} ?>
<title><?php echo WEBSITE_ALL_TITLE.$title ?></title> 

در این element ابتدا چک می کنیم که آیا عنوان فرعی برای صفحه ایجاد شده یا نه ( و اگر عنوان فرعی در کنترلر تعریف نشده باشد فقط عنوان اصلی برگشت داده می شود ) و سپس نام فرعی و اصلی را با یکدیگر ترکیب می کنیم و جواب را بر می گردانیم .

حال باید این element را در layout خود قرار دهیم :

کد PHP:
<?php echo $this->element('pagetitles'); ?>

کار تمام است فقط کافی است عناوین فرعی را طبق استاندارد کیک در کنترلر ها تعریف کنیم .
2011/12/08 11:01 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : mohsened saleh farhadfery
saleh آفلاین
Administrator
*******

ارسال‌ها: 989
تاریخ عضویت: Dec 2009
رتبه: 12
تشکر: 399
871 بار تشکر شده در 560 پست
ارسال: #2
RE: عنوان صفحه
عالی بود. واقعا ممنون.

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

عملیات هایی مثل مدیریت زبان، مدیریت متا تگ ها ، و ....

به عنوان مثال من قبلا به این صورت استفاده می کردم.
کد PHP:
<?php

/**
 * IrsaComponent
 * 
 * @package   
 * @author portalbook
 * @copyright saleh
 * @version 6/6/2011 5:13:57 AM
 * @access public
 */
class IrsaComponent extends Component
{
    
 
    public 
$Controller;   
    public 
$components = array('Session');
    
  

    
    public function 
initialize($Controller
    {

       
$this->Controller $Controller;
       
       if(isset( 
$this->Controller->request->params['prefix']) ) {
            
$this->prefix =  $this->Controller->request->params['prefix'];
       }                 
       
           
Configure::load('Irsa/'.$this->prefix);

       
$this->initConfig($Controller);
       
    }

 
    public function 
initConfig($Controller) {

      if ( 
$this->config('Irsa.theme') ) {
           
$Controller->viewClass $this->config('Irsa.viewClass');
           
$Controller->theme $this->config('Irsa.theme');
      }
      if ( 
$this->config('Irsa.Langs.default') ) {
            
Configure::write('Config.language'$this->config('Irsa.Langs.default') );
           
      } 
      
           
    }
    
    public function 
beforeRender($controller){
        
        
$this->pageTitle();
    }
    
        
  
    
    

    
/**
     * IrsaComponent::IsAdmin()
     *  Check Prefix Is Admin
     * @return true/false
     */
    
function IsAdmin()
    {
            

        if ( isset( 
$this->Controller->request->params['prefix'] ) )
        {
              
            if (
$this->Controller->request->params['prefix'] == 'admin' || $this->Controller->request->params['admin'] )
            {
                            
                return 
true;
            }
            
        }
        
        return 
false;
    }


    public function 
config($key ) {
        return 
Configure::read($key);
    }


    
/**
     * IrsaComponent::AdminHelper()
     * 
     * @return void
     */
    
function AdminHelper()
    { 
        
//$this->Controller->helpers[]= 'Irsa.Irsa';
//        $this->Controller->helpers[]= 'Irsa.Layout';
        
$this->Controller->helpers[]= 'Paginator';
//        $this->Controller->helpers[]= 'Irsa.IMenu';
 //       $this->Controller->helpers[]= 'Irsa.Sections';
  //      $this->Controller->helpers[]= 'Irsa.ShortCute';
        
return;
    }
    
        
    
/**
     * AppController::IrsaFlassRedirect()
     * 
     * @param mixed $msg
     * @param mixed $url
     * @param string $type  [E,I,S,W]
     * @return void
     */
     
    
public function IrsaFlashRedirect$msg  $url  $type 'I' ) {
       
$CssType = array( 'E' => 'error' 'I' => 'info' 'S' => 'success' 'W' => 'warning'); 
       
$this->Session->setFlash$msg 'flash/inline' , array( 'class' => $CssType[$type] ) );
       
$this->Controller->redirect($url);
    }

    public function 
IrsaFlash$msg  $type 'I' ) {
       
$CssType = array( 'E' => 'error' 'I' => 'info' 'S' => 'success' 'W' => 'warning'); 
       
$this->Session->setFlash$msg 'flash/inline' , array( 'class' => $CssType[$type] ) );
    }


    public function 
pageTitle()
    {  

        
$title = array();

        
           
            
$title[] = (empty($this->Controller->controllerTitle)) ?  $this->Controller->name $this->Controller->controllerTitle  ;
            
$title[] = (empty($this->Controller->actionTitle)) ?  $this->Controller->action $this->Controller->actionTitle;
            
            if(!empty(
$title)){
                
$title implode(' - ',$title);
                
$title =  $this->config('Irsa.title').' > '.$title  ;
                }
            else
                
$title =  $this->config('Irsa.title');                                    
        return 
$this->Controller->set('title_for_layout',$title);
    }
    


و در کنترلرهام
کد PHP:
class ProductsController extends AppController{
    
    public 
$name 'Products';

    public 
$controllerTitle 'محصولات';
     public 
$helpers = array('UploadPack.Upload');
     
     
     
    public function 
admin_index(){
        
$this->actionTitle 'فهرست';
       
// $this->Product->order = array('order desc');
        
$Results $this->Product->find('all');
        
$this->set(compact("Results"));
        
    }
    


حالا همیشه تایتل من از نظر سئو هم اوکی هست : مدیریت ایرسا > محصولات - فهرست
(آخرین تغییر در این ارسال: 2011/12/09 04:04 AM توسط saleh.)
2011/12/09 04:01 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : 786ali farhadfery
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: