ЧПУ - *.html

Статус
В этой теме нельзя размещать новые ответы.
Может есть разница где текст вставлять в common.php ?
 
перечитывая это понял что classCore.php - в 4й версии нет такого файла, все содержится в class.Main.php (который по привычке и правился class Core) - может ли както расположение кода влиять на это?

Добавлено через 23 минуты
Каким макаром требуется называть/переназывать страницы? Или они сами должны перегенерироваться?
 
перечитывая это понял что classCore.php - в 4й версии нет такого файла, все содержится в class.Main.php (который по привычке и правился class Core) - может ли както расположение кода влиять на это?

Добавлено через 23 минуты
Каким макаром требуется называть/переназывать страницы? Или они сами должны перегенерироваться?
Прошу прощения все классы из class.Main.php я раскидал по разным файлам ...

Все верно в классе Core в функции get_block_content(:(

до if ($field == 0) ...

добавить
PHP:
            if ($CONFIG['rewrite_mod'])
            {
              	$block_content = str_replace ('/?&', '/?', $block_content);

            	$pattern = '/<A HREF=["|\']\/[a-z-0-9\/]+(\?[a-z0-9=&]+)/i';
				$replacement = "edit_url";
 				$block_content = preg_replace_callback($pattern, $replacement, $block_content);
            }

это чтоб ссылки вида /news/?action=show&id=45 были переделаны в /news/show_id_45.html ...

А в конце файла common.php нужно добавить:

PHP:
if($CONFIG["rewrite_mod"] && $_GET["mod"] == 1 && $_GET["html"]!=""){

/* для преобразовния show_id_45 в $request_action = show; $request_id = 45 */
	$html = $_GET["html"];
	$html = "action_".substr($html, strpos("/", $html)+1);
	$html = str_replace(".html", "_", $html);

	if(preg_match_all ("/([a-z0-9]+)?_([a-z0-9]+)?_/i", $html, $param)){
		foreach($param[1] AS $key => $value ){
			$tmp = "request_$value";
			$$tmp = $param[2][$key];
			$query_string .= "$value=$key&";
		}
	}
	$html = "";
}

/* А это функция которая произодит замену адресов */

function edit_url($matches){
	
	$url = str_replace(array("?action=", "&", "="), array("", "_", "_"), $matches[1]).".html";

	return str_replace($matches[1], $url, $matches[0]);
}
 
хм все так и было - но опять же 404 ошибка, однако удалось добиться:
Для просмотра ссылки Войди или Зарегистрируйся
но не как не Для просмотра ссылки Войди или Зарегистрируйся
А с вакансиями такой баг в URL:
vacancies.html_field_list&field=24
 
Черт с языком не работал, т.к. в этом нет надобности ...
А если отключить многоязычность, всеравно 404 ...
 
Ух а без многоязычности нет резона работать...
без многоязычности пашет все кроме вакансий...
 
потому что в вакнсиях исползуется action вида XXX_XXX, сейчас посмотрим что можно сделать с мултиязычностью ...

Добавлено через 1 минуту
p.s. только что проверил с мултиязыностью все пашет ...
 
1. common.php
// $_POST и $_GET переменные станут доступны через префикс "request_"
import_request_variables('GP', 'request_');
PHP:
if($CONFIG["rewrite_mod"] && $_GET["mod"] == 1 && $_GET["html"]!=""){
    $html = $_GET["html"];
    $html = "action_".substr($html, strpos("/", $html)+1);
    $html = str_replace(".html", "_", $html);

    if(preg_match_all ("/([a-z0-9]+)?_([a-z0-9]+)?_/i", $html, $param)){
        foreach($param[1] AS $key => $value ){
            $tmp = "request_$value";
            $$tmp = $param[2][$key];
            $query_string .= "$value=$key&";
        }
    }
    $html = "";
}

function edit_url($matches){
    $url = str_replace(array("?action=", "&", "="), array("", "_", "_"), $matches[1]).".html";
    return str_replace($matches[1], $url, $matches[0]);
}
?>



2. Core
if (is_object ($templates))
{
$block_content = $templates->getOutputContent ();
}

PHP:
	if ($CONFIG['rewrite_mod'])
            {
                $block_content = str_replace ('/?&', '/?', $block_content);
                $pattern = '/<A HREF=["|\']\/[a-z-0-9\/]+(\?[a-z0-9=&]+)/i';
                $replacement = "edit_url";
                $block_content = preg_replace_callback($pattern, $replacement, $block_content);
            }
if ($field == 0)
{
$PAGE['main_module_id'] = $module_id;
$PAGE['main_module_name'] = $name;
$PAGE['action'] = $action;
if ($PAGE['modules'][$name]->main_title)
{
$PAGE['title_from_main_module'] = $PAGE['modules'][$name]->main_title;
}


3. .htaccess
DirectoryIndex index.php
Options -Indexes
ErrorDocument 404 /404.php

php_flag magic_quotes_gpc off
php_flag magic_quotes_runtime off
php_flag register_globals off
php_flag allow_call_time_pass_reference on


RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
Код:
RewriteRule ^(rus/|ukr/|blr/|de/|frn/|eng/)?([0-9a-z/-]+)?(/[a-z_0-9]+.html)?$ index.php?lang=$1&link=$2&html=$3&mod=1&query= [NC,QSA,L]


Так?
 
Ну да у меня так ...
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху