1

Тема: создание модуля

Здравствуйте. На сайте стоит несколько тем оформления, их отображение идет в соответствии с сегментами url. (для одного раздела подгружаются одни стили в заголовке, для другого другие).
Возник вопрос. При использовании модулей (например поиска) они все автоматом отображаются с оформлением главной страницы (т.к. стандартный url модуля поиска: site.com/search или например site.com/feedback) - возможно ли добавить в урл дополнительный сегмент, т.е. переписать средствами codeIgniter свой, кастомизированный url

$route['blog/search'] = 'search';

не работает
при разработке своего модуля немного раньше наткнулась на ту же проблему, нужно было передавать параметры также через url
можно было бы реализовать через куки и/или яваскрипт но это не совсем то что нужно

Thumbs up Thumbs down

2

Re: создание модуля

Поднимаю тему, несмотря, что в другой уже попытал счастье http://forum.imagecms.net/viewtopic.php?id=574

Роуты работать по правилам CodeIgniter'а не хотят...

Thumbs up Thumbs down

3 Отредактировано acidguest (06-02-2014 02:56:47)

Re: создание модуля

Я почти не знакома с codeigniter. Но свою проблему с урл решила добавлением такого кода.

public function uristring() {
        $this->index();
        return;
    }

В итоге вместо site.com/search формируется такой урл: site.com/search/uristring

Очень интересный файл для изучения это:
application/modules/core/core.php
тут как раз идет обработка сегментов урл, если что не так - дает 404

На роут igniter'a навешивается функционал imagecms. Как выход - писать свой хук, вероятно.
Мне хватило пока что такого решения и дальше решила пока не лезть, хотя было бы интересно посмотреть валидный вариант работы роута)

Thumbs up Thumbs down

4

Re: создание модуля

Вот, используя Yii Framework, пишу...

'http://<_c:(.*)>.ysro'=>'/sub/index/sub/<_c>',

И все... Ввожу сабдомен, попадаю на нужную функцию контроллера.

Что с ImageCMS-то так сложно и его CI.

Поизучаю хуки, а может разработчик сюда зайдет и укажет простое решение...

Thumbs up Thumbs down

5

Re: создание модуля

Простой пример на ImageCMS

Модуль sub, sub.php

<?php

(defined('BASEPATH')) OR exit('No direct script access allowed');


class Sub extends MY_Controller {

    function __construct()
    {
        parent::__construct();
    }



    public function helloworld() {

        \CMSFactory\assetManager::create()
            ->render('main');
    }

}

В routes.php добавляем строку

$route['sub/hello'] = "sub/helloworld";

Пробуем перейти по ссылке http://ic452/sub/hello

Fatal error: Call to a member function show() on a non-object in I:\OS\domains\IC452\application\modules\CMSFactory\assetManager.php on line 224

Если Пробовать перейти по ссылке http://ic452/sub/helloworld то получаем вывод в .tpl файл, то, что нужно.

А мне нужно использовать короткую ссылку.

Thumbs up Thumbs down

6 Отредактировано acidguest (14-02-2014 22:15:50)

Re: создание модуля

$route['sub/hello'] = "sub/helloworld";

работать не будет

скорее всего потому что в модуле ядра схема вывода страниц жестко прописана. тут:

application/modules/core/core.php

способ роута также зависит от настроек в config.php:

$config['uri_protocol']    = "REQUEST_URI";

Thumbs up Thumbs down