Skip to main content

URL Friendly en Open Real State

You are here:
← All Topics

Eliminación de sufijo property en propiedades.

En su configuración original, Open Real State (en adelante ORS) asume que todas las propiedades publicadas tendrán un sufijo property en la url de cada detalle de propiedad y no admite uso de slash en la url personalizada.

Para la modificación de esta característica deben ser intervenidos dos componentes base:

  • archivo /protected/modules/seo/models/SeoFriendlyUrl.php
  • archivo /protected/components/CustomUrlManager.php

Modificaciones en SeoFriendlyUrl.php

Código Original:

    private static $_prefixUrlArray = array(
        'Apartment' => 'property/',
        'EntriesCategory' => '',
        'Entries' => '',
        'Article' => 'faq/',
        'InfoPages' => 'page/',
        'ApartmentObjType' => '',
        'City' => '',
        'ApartmentCity' => '',
    );

Código Modificado:

    private static $_prefixUrlArray = array(
        'Apartment' => 'venta/',
        'EntriesCategory' => '',
        'Entries' => '',
        'Article' => 'faq/',
        'InfoPages' => 'page/',
        'ApartmentObjType' => '',
        'City' => '',
        'ApartmentCity' => '',
    );

Modificación de rules para la clase SeoFriendlyUrl

Se requiere incorporar el slash en el patrón que verifica la action de guardar de la url personalizada en los distintos módulos

Modificaciones en CustomUrlManager.php

Código Original:

        $rulesLangTwo = array(
            '/entries' => 'entries/main/index',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>' => 'entries/main/index',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<tag:[\w\s,]' => 'entries/main/index',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<id:\d+>' => 'entries/main/view',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'entries/main/view',
            '/faq' => 'articles/main/index',
            '/faq/<id:\d+>' => 'articles/main/view',
            '/faq/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'articles/main/view',
            '/contact-us' => 'contactform/main/index',
            '/specialoffers' => 'specialoffers/main/index',
            '/sitemap' => 'sitemap/main/index',
            '/reviews' => 'reviews/main/index',
            '/reviews/add' => 'reviews/main/add',
            '/guestad/add' => 'guestad/main/create',
            '/page/<id:\d+>' => 'infopages/main/view',
            '/page/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'infopages/main/view',
            '/search' => 'quicksearch/main/mainsearch',
            '/comparisonList' => 'comparisonList/main/index',
            '/complain/add' => 'apartmentsComplain/main/complain',
            '/booking/add' => 'booking/main/bookingform',
            '/booking/request' => 'booking/main/mainform',
            '/usercpanel' => 'usercpanel/main/index',
            '/usercpanel/data' => 'usercpanel/main/data',
            '/usercpanel/changepwd' => 'usercpanel/main/changepassword',
            '/usercpanel/tariffplans' => 'tariffPlans/main/index',
            '/usercpanel/payments' => 'usercpanel/main/payments',
            '/usercpanel/balance' => 'usercpanel/main/balance',
            '/usercpanel/bookingtable' => 'bookingtable/main/index',
            '/usercpanel/bookingtable/my' => 'bookingtable/main/my',
            '/usercpanel/bookingtable/payforbooking' => 'paidservices/main/payForBooking',
            '/usercpanel/comments' => 'comments/main/commentsuserlist',
            '/userlistings' => 'userads/main/index',
            '/userlistings/create' => 'userads/main/create',
            '/userlistings/edit' => 'userads/main/update',
            '/userlistings/delete' => 'userads/main/delete',
            '/userlistings/savecoords' => 'userads/main/savecoords',
            '/userlistings/activate' => 'userads/main/activate',
            '/userlistings/clone' => 'userads/main/clone',
            '/users/view' => '/users/main/view',
            '/users/viewall' => 'users/main/search',
            '/users/alllistings' => 'apartments/main/alllistings',
            '/apartments/sendEmail' => 'apartments/main/sendEmail',
            '/apartments/viewDetailsViewsStats' => 'apartments/main/viewDetailsViewsStats',
            '/mailbox' => 'messages/main/index',
            '/mailbox/send' => 'messages/main/sendform',
            '/mailbox/read' => 'messages/main/read',
            '/mailbox/delete' => 'messages/main/delete',
            '/mailbox/deleteMessage' => 'messages/main/deleteMessage',
            '/messages/downloadFile' => 'messages/main/downloadFile',
            '/service-<serviceId:\d+>' => 'quicksearch/main/mainsearch',
            '/property/downloadDocument' => 'apartments/main/downloadDocument',
            '/property/renameDocument' => 'apartments/main/renameDocument',
            '/property/deleteDocument' => 'apartments/main/deleteDocument',
            '/property/<id:\d+>' => 'apartments/main/view',
            '/property/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'apartments/main/view',
            '/<controller:(quicksearch|specialoffers)>/main/index' => '<controller>/main/index',
            '/<_m>/<_c>/<_a>*' => '<_m>/<_c>/<_a>',
            '/<_c>/<_a>*' => '<_c>/<_a>',
            '/<_c>' => '<_c>',
        );

Código Modificado: Modificación de todos los elementos que empiezan con /property y que apuntan a apartments/main, estableciendo como prefijo /venta. Adicionalmente, se incorpora cambio en los caracteres admitidos para que la url personalizada pueda contener slash en los módulos de apartments y también de entries:

/venta/<url:[-a-zA-Z0-9_+\/\.]{1,255}>
/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<url:[-a-zA-Z0-9_+\/\.]{1,255}>

Por supuesto, el caracter debe ser escapado (back slash, luego slash).

También debe modificarse la identificación de urls para las entradas de una categoría

        $rulesLangTwo = array(
            '/entries' => 'entries/main/index',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>' => 'entries/main/index',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<tag:[\w\s,]' => 'entries/main/index',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<id:\d+>' => 'entries/main/view',
            '/entries/<catUrlName:[-a-zA-Z0-9_+\.]{1,255}>/<url:[-a-zA-Z0-9_+\/\.]{1,255}>' => 'entries/main/view',
            '/faq' => 'articles/main/index',
            '/faq/<id:\d+>' => 'articles/main/view',
            '/faq/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'articles/main/view',
            '/contact-us' => 'contactform/main/index',
            '/specialoffers' => 'specialoffers/main/index',
            '/sitemap' => 'sitemap/main/index',
            '/reviews' => 'reviews/main/index',
            '/reviews/add' => 'reviews/main/add',
            '/guestad/add' => 'guestad/main/create',
            '/page/<id:\d+>' => 'infopages/main/view',
            '/page/<url:[-a-zA-Z0-9_+\.]{1,255}>' => 'infopages/main/view',
            '/search' => 'quicksearch/main/mainsearch',
            '/comparisonList' => 'comparisonList/main/index',
            '/complain/add' => 'apartmentsComplain/main/complain',
            '/booking/add' => 'booking/main/bookingform',
            '/booking/request' => 'booking/main/mainform',
            '/usercpanel' => 'usercpanel/main/index',
            '/usercpanel/data' => 'usercpanel/main/data',
            '/usercpanel/changepwd' => 'usercpanel/main/changepassword',
            '/usercpanel/tariffplans' => 'tariffPlans/main/index',
            '/usercpanel/payments' => 'usercpanel/main/payments',
            '/usercpanel/balance' => 'usercpanel/main/balance',
            '/usercpanel/bookingtable' => 'bookingtable/main/index',
            '/usercpanel/bookingtable/my' => 'bookingtable/main/my',
            '/usercpanel/bookingtable/payforbooking' => 'paidservices/main/payForBooking',
            '/usercpanel/comments' => 'comments/main/commentsuserlist',
            '/userlistings' => 'userads/main/index',
            '/userlistings/create' => 'userads/main/create',
            '/userlistings/edit' => 'userads/main/update',
            '/userlistings/delete' => 'userads/main/delete',
            '/userlistings/savecoords' => 'userads/main/savecoords',
            '/userlistings/activate' => 'userads/main/activate',
            '/userlistings/clone' => 'userads/main/clone',
            '/users/view' => '/users/main/view',
            '/users/viewall' => 'users/main/search',
            '/users/alllistings' => 'apartments/main/alllistings',
            '/apartments/sendEmail' => 'apartments/main/sendEmail',
            '/apartments/viewDetailsViewsStats' => 'apartments/main/viewDetailsViewsStats',
            '/mailbox' => 'messages/main/index',
            '/mailbox/send' => 'messages/main/sendform',
            '/mailbox/read' => 'messages/main/read',
            '/mailbox/delete' => 'messages/main/delete',
            '/mailbox/deleteMessage' => 'messages/main/deleteMessage',
            '/messages/downloadFile' => 'messages/main/downloadFile',
            '/service-<serviceId:\d+>' => 'quicksearch/main/mainsearch',
            '/venta/downloadDocument' => 'apartments/main/downloadDocument',
            '/venta/renameDocument' => 'apartments/main/renameDocument',
            '/venta/deleteDocument' => 'apartments/main/deleteDocument',
            '/venta/<id:\d+>' => 'apartments/main/view',
            '/venta/<url:[-a-zA-Z0-9_+\/\.]{1,255}>' => 'apartments/main/view',
            '/<controller:(quicksearch|specialoffers)>/main/index' => '<controller>/main/index',
            '/<_m>/<_c>/<_a>*' => '<_m>/<_c>/<_a>',
            '/<_c>/<_a>*' => '<_c>/<_a>',
            '/<_c>' => '<_c>',
        );

Referencias:

https://forum.yiiframework.com/t/how-to-make-url-seo-friendly/66620/5
https://www.yiiframework.com/doc/guide/1.1/en/topics.url