Публикация большого каталога продукции

Обсуждение CMS Made Simple в России.

Moderators: iturbay, wdwp

Post Reply
Akram
Forum Members
Forum Members
Posts: 17
Joined: Thu Oct 23, 2008 12:26 pm

Публикация большого каталога продукции

Post by Akram »

Вопрос - как лучше орагнизовать?
каталог уже есть в виде базы (фирма/вид/подвид/модель).
Нужно, чтобы была отдельная страница со списком фирм/видов/подвидов и соответственно отдельная страница под модель. ЧПУ тоже нужно.
Может, кто-то решал аналогичную задачу.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Публикация большого каталога продукции

Post by von-hamster »

Я делал каталог на fluidbusiness.ru c чпу и пр...
Akram
Forum Members
Forum Members
Posts: 17
Joined: Thu Oct 23, 2008 12:26 pm

Re: Публикация большого каталога продукции

Post by Akram »

Поделитесь технологией? Записей, к сожалению, многовато для ручной обработки, да и неудобно это. В одном из проектов http://konto-hleb.ru/prod/ я прикрутил такой каталог аяксом, но плохо это для индексации, так что сейчас решил сделать нормально. количество записей от 10 до 100 внутри категории, т.е. будет еще постраничная разбивка.
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Публикация большого каталога продукции

Post by von-hamster »

Я могу прислать модуль... В принципе, его достаточно просто модифицировать... Однако он был заточен немного под другое... Если интересно - скажи, куда выслать...
Akram
Forum Members
Forum Members
Posts: 17
Joined: Thu Oct 23, 2008 12:26 pm

Re: Публикация большого каталога продукции

Post by Akram »

a-kram а дальше мэйл.ру
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Публикация большого каталога продукции

Post by ZYV »

А может просто зааттачить... чтобы для всех.
unsigned double ZYV;
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Публикация большого каталога продукции

Post by von-hamster »

Переименованый архив.

Модуль очень навороченый, но на его основе можно сделать много (у меня практически все сделано на этой основе - ФАКи, новости, баннеры, каталог ссылок, спец-предложения, менюшки, видео галлерея, словарик...)...

Общий смысл следующий:
есть файлы типа data.что-то.php - это фактически описания таблицы. При установке автоматом пробегается каталог модуля и создает все нужные таблицы по описанию...

Также это описание используется при создании форм...

Но этот модуль я давно не обновлял - там, чтобы изменить описание - нужно либо в ручную добавить поле в БД, либо удалить и установить модуль (естессно с потерей данных)...

Более свежий вариант (там используются те-же принцыпы) - можно посмотреть в модуле простого меню, который я выкладывал в соседней ветке: http://forum.cmsmadesimple.org/index.ph ... #msg128807, но там опять-же не предусмотрен апдейт...

К сожалению сейчас мало времени, чтобы привести эти модули в более менее приличный вид (код, который позволяет менять структуру таблицы, только поправив описание - есть, но используется в несколько другом проекте, не связаном с цмской).

Описание имеет примерно следующий вид:

Code: Select all

// это подключение основной библиотеки
include_once($this->RZ_FNC_PATH . '/lib.data.php');
$db_pref = cms_db_prefix();
// это описание таблицы и некоторых путей для файлов
$type = array();
$type['name'] = 'items';
$type['description'] = $this->Lang($type['name'] . '_s');
$type['table'] = "`{$db_pref}module_fluid_catalog`";
$type['upload_dir'] = '/fb_files';
$type['data'] = array();

// описания полей

// это просто идшник
$type['data']['id'] = init_type('id');


$RZ_field = 'code';                                                               // это имя поля
$type['data'][$RZ_field] = init_type('text');                             // это тип поля, в зависимости от него в форме создается соответствующий элемент и базе тип поля. В данном случае - это varchar  и input text
$type['data'][$RZ_field]['description'] = $this->Lang('code');     // это описание, 
$type['data'][$RZ_field]['validate'] = 'not_empty_s';                 // это валидатор. Он не яваскриптовый!!!

// далее оставляю только примеры полей
// это textarea формы и text в БД
$RZ_field = 'full_description';
$type['data'][$RZ_field] = init_type('textarea');
$type['data'][$RZ_field]['description'] = $this->Lang('full_description');
$type['data'][$RZ_field]['wysiwyg'] = true;

// это select формы и int в БД
$RZ_field = 'developer_id';
$type['data'][$RZ_field] = init_type('select_one_from_type');
$type['data'][$RZ_field]['description'] = $this->Lang('cat_dev_s');
$type['data'][$RZ_field]['items'] = get_select($db, "`{$db_pref}module_fluid_catalog_dev`"); // это выбор элементов из БД

// это file формы и text в БД
$RZ_field = 'preview';
$type['data'][$RZ_field] = init_type('image');
$type['data'][$RZ_field]['description'] = $this->Lang('preview');
$type['data'][$RZ_field]['upload_subdir'] = '/images';                        // поддиректория в которую записывается картинка

// это чекбоксы формы и связаная таблица в БД
$RZ_field = 'includes';
$type['data'][$RZ_field] = init_type('select_multy_from_type');
$type['data'][$RZ_field]['description'] = $this->Lang('cat_includes_s');
$type['data'][$RZ_field]['link_type'] = 'includes';
$type['data'][$RZ_field]['link_table'] = "`{$db_pref}module_fluid_catalog_obj_links`";
$type['data'][$RZ_field]['items'] = get_select($db,   "`{$db_pref}module_fluid_catalog_includes`");

// это text формы и int в БД
$RZ_field = 'temperature_min';
$type['data'][$RZ_field] = init_type('integer');
$type['data'][$RZ_field]['description'] = $this->Lang('temperature_min');
$type['data'][$RZ_field]['default'] = '';
$type['data'][$RZ_field]['validate'] = 'integer_or_null';

// фактически это тот-же select, тока в базе как строка
$RZ_field = 'napor_raz';
$type['data'][$RZ_field] = init_type('select_one_from_type_s');
$type['data'][$RZ_field]['description'] = $this->Lang('napor_raz');
$type['data'][$RZ_field]['items'] = array('м' => 'м', 'бар'=>'бар'); // задание списка с помощью массива
$type['data'][$RZ_field]['default'] = 'м';                                     // значение по умолчанию - можно просто задавать так

// вещественное число
$RZ_field = 'proizvoditelnost';
$type['data'][$RZ_field] = init_type('float');
$type['data'][$RZ_field]['description'] = $this->Lang('proizvoditelnost');
$type['data'][$RZ_field]['default'] = '';
$type['data'][$RZ_field]['validate'] = 'float_or_null';

$RZ_field = 'order';
$type['data'][$RZ_field] = init_type('integer');
$type['data'][$RZ_field]['description'] = $this->Lang('order');
$type['data'][$RZ_field]['validate'] = 'integer';
$type['data'][$RZ_field]['default_type'] = 'function';                       // то-же значение по умолчанию, только задается функцией
$type['data'][$RZ_field]['default'] = 'default_next_order';
$type['data'][$RZ_field]['default_params'] = $type['table'];

// возможность добавления нескольких файлов, которые есть в другом типе
$RZ_field = 'files_link';
$type['data'][$RZ_field] = init_type('links_to_type');
$type['data'][$RZ_field]['description'] = $this->Lang('files');
$type['data'][$RZ_field]['link_type'] = 'files';
$type['data'][$RZ_field]['link_table'] = "`{$db_pref}module_fluid_catalog_obj_links`";
$type['data'][$RZ_field]['obj_table'] = "`{$db_pref}module_fluid_catalog_files`";

// это unixtimestamp в БД
$RZ_field = 'insert_time';
$type['data'][$RZ_field] = init_type('insert_time');
$type['data'][$RZ_field]['description'] = $this->Lang('insert_time');

// чекбокс и int
$RZ_field = 'active';
$type['data'][$RZ_field] = init_type('boolean');
$type['data'][$RZ_field]['description'] = $this->Lang('active');
$type['data'][$RZ_field]['default'] = '1';
?>
Есть еще несколько типов, все можно посмотреть в FB_functions/lib.data.php function init_type($type)

Также важно обратить внимание на Fluid_catalog.module.php

Самое главное - это 'returnid'!!! Нужно подставить ID той страницы, на которой вызывается модуль!!!

Code: Select all

	function SetParameters() {
		$this->RZ_CUR_PATH = dirname(__FILE__);                                                      // это папка модуля
		$this->RZ_FNC_PATH = "{$this->RZ_CUR_PATH}/../FB_functions";                      // это папка к библиотеке
		$this->RZ_TPL_PATH = 'file:' . realpath($this->RZ_FNC_PATH . '/templates');        // это нужно для шаблонов
		$this->RZ_CTPL_PATH = 'file:' . realpath($this->RZ_CUR_PATH . '/templates');      // это тоже

	    $this->CreateParameter('type', 'main', $this->lang('help_albums'));
		// main page for 1 item
		$this->RegisterRoute('%production/(?P<itemid>[0-9]+)$%', array('action' => 'default', 'returnid' => 53));
		// other pages 4 1 item
		$this->RegisterRoute('%production/(?P<itemid>[0-9]+)/(?P<type>[^/]+)$%', array('action' => 'default', 'returnid' => 53));
		// perpage
		$this->RegisterRoute('%production/p(?P<page>[0-9]+)$%', array('action' => 'default', 'returnid' => 53));
		// dilers
		$this->RegisterRoute('%contakts/dillers_list/(?P<itemid>[0-9]+)$%', array('action' => 'show', 'returnid' => 109, 'item_type' => 'diler'));
		// predstav
		$this->RegisterRoute('%contakts/predstavitelstva/(?P<itemid>[0-9]+)$%', array('action' => 'show', 'returnid' => 110, 'item_type' => 'predstav'));
		// service
		$this->RegisterRoute('%contakts/service_centers/(?P<itemid>[0-9]+)$%', array('action' => 'show', 'returnid' => 111, 'item_type' => 'service'));
		// dev_sites
		$this->RegisterRoute('%usefull/developer_sites/p(?P<page>[0-9]+)$%', array('action' => 'show_dev_sites', 'returnid' => 103));
		//print_r($this);
	}
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Публикация большого каталога продукции

Post by von-hamster »

Я посмотрел и вспомнил, что проще наверно будет переделать новости - там есть и категории и основные... И они проще, чем предыдущий каталог... Аттач прилагаю...
Attachments

[The extension txt has been deactivated and can no longer be displayed.]

Akram
Forum Members
Forum Members
Posts: 17
Joined: Thu Oct 23, 2008 12:26 pm

Re: Публикация большого каталога продукции

Post by Akram »

вроде не открывается файлик. можешь перезалить?
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Публикация большого каталога продукции

Post by ZYV »

Всё открывается. Расширение смени.
unsigned double ZYV;
Akram
Forum Members
Forum Members
Posts: 17
Joined: Thu Oct 23, 2008 12:26 pm

Re: Публикация большого каталога продукции

Post by Akram »

Это первое, что я сделал ;)
Скачивается файл размером 19226 байт, убираю txt, получаю битый рар.
ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Публикация большого каталога продукции

Post by ZYV »

Забавно. Я получаю RAR не битый, но пустой. Мои извинения.
unsigned double ZYV;
von-hamster
Power Poster
Power Poster
Posts: 339
Joined: Thu Nov 01, 2007 3:11 pm

Re: Публикация большого каталога продукции

Post by von-hamster »

Извините - ща еще раз попробую...
Attachments

[The extension pdf has been deactivated and can no longer be displayed.]

ZYV
Language Partners
Language Partners
Posts: 868
Joined: Tue Nov 15, 2005 9:08 pm

Re: Публикация большого каталога продукции

Post by ZYV »

Круто, у меня скачалось, спасибо.
unsigned double ZYV;
Akram
Forum Members
Forum Members
Posts: 17
Joined: Thu Oct 23, 2008 12:26 pm

Re: Публикация большого каталога продукции

Post by Akram »

Теперь забрал, спасибо.
Post Reply

Return to “Russian - русский”