Публикация большого каталога продукции
Публикация большого каталога продукции
Вопрос - как лучше орагнизовать?
каталог уже есть в виде базы (фирма/вид/подвид/модель).
Нужно, чтобы была отдельная страница со списком фирм/видов/подвидов и соответственно отдельная страница под модель. ЧПУ тоже нужно.
Может, кто-то решал аналогичную задачу.
каталог уже есть в виде базы (фирма/вид/подвид/модель).
Нужно, чтобы была отдельная страница со списком фирм/видов/подвидов и соответственно отдельная страница под модель. ЧПУ тоже нужно.
Может, кто-то решал аналогичную задачу.
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Публикация большого каталога продукции
Я делал каталог на fluidbusiness.ru c чпу и пр...
Re: Публикация большого каталога продукции
Поделитесь технологией? Записей, к сожалению, многовато для ручной обработки, да и неудобно это. В одном из проектов http://konto-hleb.ru/prod/ я прикрутил такой каталог аяксом, но плохо это для индексации, так что сейчас решил сделать нормально. количество записей от 10 до 100 внутри категории, т.е. будет еще постраничная разбивка.
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Публикация большого каталога продукции
Я могу прислать модуль... В принципе, его достаточно просто модифицировать... Однако он был заточен немного под другое... Если интересно - скажи, куда выслать...
Re: Публикация большого каталога продукции
a-kram а дальше мэйл.ру
Re: Публикация большого каталога продукции
А может просто зааттачить... чтобы для всех.
unsigned double ZYV;
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Публикация большого каталога продукции
Переименованый архив.
Модуль очень навороченый, но на его основе можно сделать много (у меня практически все сделано на этой основе - ФАКи, новости, баннеры, каталог ссылок, спец-предложения, менюшки, видео галлерея, словарик...)...
Общий смысл следующий:
есть файлы типа data.что-то.php - это фактически описания таблицы. При установке автоматом пробегается каталог модуля и создает все нужные таблицы по описанию...
Также это описание используется при создании форм...
Но этот модуль я давно не обновлял - там, чтобы изменить описание - нужно либо в ручную добавить поле в БД, либо удалить и установить модуль (естессно с потерей данных)...
Более свежий вариант (там используются те-же принцыпы) - можно посмотреть в модуле простого меню, который я выкладывал в соседней ветке: http://forum.cmsmadesimple.org/index.ph ... #msg128807, но там опять-же не предусмотрен апдейт...
К сожалению сейчас мало времени, чтобы привести эти модули в более менее приличный вид (код, который позволяет менять структуру таблицы, только поправив описание - есть, но используется в несколько другом проекте, не связаном с цмской).
Описание имеет примерно следующий вид:
Есть еще несколько типов, все можно посмотреть в FB_functions/lib.data.php function init_type($type)
Также важно обратить внимание на Fluid_catalog.module.php
Самое главное - это 'returnid'!!! Нужно подставить ID той страницы, на которой вызывается модуль!!!
Модуль очень навороченый, но на его основе можно сделать много (у меня практически все сделано на этой основе - ФАКи, новости, баннеры, каталог ссылок, спец-предложения, менюшки, видео галлерея, словарик...)...
Общий смысл следующий:
есть файлы типа 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';
?>
Также важно обратить внимание на 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.]
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Публикация большого каталога продукции
Я посмотрел и вспомнил, что проще наверно будет переделать новости - там есть и категории и основные... И они проще, чем предыдущий каталог... Аттач прилагаю...
- Attachments
-
[The extension txt has been deactivated and can no longer be displayed.]
Re: Публикация большого каталога продукции
вроде не открывается файлик. можешь перезалить?
Re: Публикация большого каталога продукции
Это первое, что я сделал
Скачивается файл размером 19226 байт, убираю txt, получаю битый рар.

Скачивается файл размером 19226 байт, убираю txt, получаю битый рар.
Re: Публикация большого каталога продукции
Забавно. Я получаю RAR не битый, но пустой. Мои извинения.
unsigned double ZYV;
-
- Power Poster
- Posts: 339
- Joined: Thu Nov 01, 2007 3:11 pm
Re: Публикация большого каталога продукции
Извините - ща еще раз попробую...
- Attachments
-
[The extension pdf has been deactivated and can no longer be displayed.]
Re: Публикация большого каталога продукции
Теперь забрал, спасибо.