В некоторых случаях идея не настолько бессмысленна, как кажется;) Да и та ситуация, когда ПС держат в индексе кучу поддоменов, которые отличаются только городом в мета и Н1 может измениться, а сайт долгосрочная инвестиция.
Параметры никак, а отображение в листинге/карточке возможно. Например, есть стоимость доставки до города - ценаВгороде = цена+стоимость доставки. И да, где то вес, а где то цвет.
Пример: такой шаблон элемента листинга
<div data-catid="{{cat_id}}" data-parent="{{parent_id}}" class="row cat_menu_item mb20"> <div class="col-sm-2 col-xs-12"> <a href="{{image}}"><img src="{{thumb}}" alt="{{full_item_name}}, цена {{price}} руб" class="img-responsive img-thumbnail"></a> </div> <div class="col-sm-6 col-xs-12 item-caption"> <a href="{{model_url}}" class="lead"> {{vendor_name}} {{model_name}}</a> - бортовой автомобиль {{D}}, {{G}} л.с., грузоподъемность {{F}} т., платформа объемом {{K}} куб.м. <p>Особенности комплектации: {{P}}</p> </div> <div class="col-sm-4 col-xs-12"> <div class="price" data-price="{{price}}">{{formatted_price}}</div> <p>Стоимость с учетом доставки до {{city_3}}</p> </div> </div> <div> </div>
Покажет следующее в листинге категории
А вот другой шаблон
<div data-catid="{{cat_id}}" data-parent="{{parent_id}}" class="row cat_menu_item mb20"> <div class="col-sm-2 col-xs-12"> <a href="{{image}}"><img src="{{thumb}}" alt="Купить {{vendor_name}} {{model_name}}" class="img-responsive img-thumbnail"></a> </div> <div class="col-sm-6 col-xs-12 item-caption"> <a href="{{model_url}}" class="lead">{{vendor_name}}-{{model_name}}</a> <br>• Спальное место: {{L}}; <br>• колесная формула: {{D}}; <br>• грузоподъемность: {{F}} т.; <br>• объем платформы: {{K}} м3; <br>• ТСУ: {{O}} <br>• Типоразмер шин: {{M}} <br>• Вместимость топливного бока, л: {{N}} </div> <div class="col-sm-4 col-xs-12"> <div class="price">{{formatted_price}}</div> <p>Стоимость с учетом доставки до Самары</p> </div> </div> <div> </div>
По моему, достаточно наглядно. Причем, это еще не все что можно
Я почему в тему вошел, тоже хотелось бы услышать конструктивную критику + идеи какие нибудь по этому поводу.
А Гугл? Кто ж знает, как оно повернется в плане главного поискового генератора трафика через х недель / месяцев / лет.
Сайт, все же, достаточно долговременная инвестиция.
Если подойти с фантазией и должным уровнем аккуратности все будет нормально. Если функционал сайта, конечно, позволит😂 Трудоемко. Слов нет. КолвоПоддоменов * КолвоКатегорий * КолвоШаблоновДляКатегории шаблонов придется сделать.
Немного разверну совсем не новую идею
КолвоШаблоновДляКатегории, как минимум:
- шаблон урл
- тайтл
- дескрипшн
- шаблон листинга
- шаблон элемента листинга
- шаблон карточки (УТП + параметры)
- шаблон сниппетов для подборок
Играет роль массив данных, которые можно подставлять в шаблоны. Это могут быть:
1. какие то сквозные переменные для каждого поддомена (телефон, емайл, адрес, координаты для построения карты, контактное лицо и т.п.)
2. Параметры товара (вес, размер, цвет, цена)
3. Наименования (категория + альтернативные наименования, товар) + падежи, времена.
4-100500. фантазия + возможности КМС
Плюс подборки, + разные шаблоны документа в целом для разных сабдоменов и т.д.
Это, да:(
Я смотрю в строну:
1. Уникальных шаблонов листинга / карточки для разных поддоменов / категорий
2. Возможность уникальной структуры для разных поддоменнов
3. Упрощенное редактирование "Edit-in-place" и динамический подбор контента обвеса ( текс / фото / видео / аналоги / хиты / с этим товаром .. / сквозные блоки / гео данные (карта/маршруты) / и т.д. ),
Очень хорошо, что так. Вот бы и дальше все на Неткатах, ВП и Битриксах оставались 🍿
И мои 5 коп. - тем, кто еще самипис пилит
Поделюсь, к чему пришел. ТЗ так сказать самому себе😂
Без вариантов, но
1. Обработка УРЛов, нет дублю - понятно. + прикрепить раздел каталога к любому статичному урл
сайт.ру/слоны - магазин слонов
сайт.ру/слоны/большие - статичный документ
сайт.ру/отдых/отели - каталог отелей
2. Корректный ласт-модифаед, само собой
3. Тайтл, дескрипшн - 3 уровня управления: дефолт ($pagename - $sectionname - $sitename), шаблон (Купить {{name}} по цене {{price}} в городе {{city}}), напильником (Точный вариант для конкретного документа)
4. Мета - каноникал, некст/преви, ог и т.д. => предусмотреть управление, с учетом и т.д., но это просто - в базе таблица "сквозняк", а в шаблоне
<meta name="description" content="{{description}}"> <meta name="keywords" content="{{keywords}}"> {{meta}} {{ya_metrics_verify}} {{google_metrics_verify}} {{og_image}} {{og_sitename}} {{canUri}}
5. Сайтмап в базе, отгрузка yml и т. п.
6. Кейвордс, но по другому:
CREATE TABLE [kwrds]( [id] VARCHAR(32) PRIMARY KEY NOT NULL UNIQUE, [parent] VARCHAR(32) NOT NULL, [keyword] VARCHAR(512), [word_cnt] INTEGER, [freq] INTEGER, [sfreq] INTEGER, [popular_bigramm] VARCHAR(127), [up] TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
Прикрепление keyword к документу, вместе с теми, что к месту (кластеризация вроде тут называется). Это - постановка задачи для документа. Т.е. делаем наоборот - пляшем от ключа. Механизмы контроля и аналитики (YaXML, это пока просто)
7. Контент всему голова => любой документ это объект из некоторого (в принципе неограниченного) количества блоков текста (справа, слева, основной контент, анонс, до каталога, после каталога, до и перед блоками обвеса) и обвеса - картинки, файлы, видео, хиты товара, аналоги, с этим покупают, просто привязаны к конкретному документу и т.д.
8. Шаблон - для каждого документа может быть свой + наследование по ветке хлебных крошек.
9. Управление поддоменами - каждый поддомен самостоятельный сайт со своей структурой и своими каталогоми
10. Сервисы и юзабилити - фильтры, поиск с автокомплетте, калькуляторы (удобно js к любому конкретному документу) и т.д.
Непростая это работа, притомился писать буквы.. Приложу копи паст - в итоге документ собирается примерно из такой белиберды:
Правильно, сначала поставить задачи, а потом потратить немного денег на ТЗ и время на понимание соответствия его (ТЗ) задачам сайта. https и адаптивный дизайн, это не те вопросы которые должны волновать начиная делать сайт.
Пока руки не доходят заценить noSQL :(
Кто скажет?
Отправил, к примеру GET || POST не суть:
?price['min']=20&price['max']=200&color=black&width['min']=200 .....
Чтобы далеко не ходить, все как у ТС
Параметров на каждую, пусть 10, следовательно, для SQL, в конструкции
item_id INT
prm_id INT
str_value VARCHAR...
num_value INT
20-100 млн будет. Это минус, но выборку за вменяемое кол-во времени можно получить:)
Как в noSQL? Сопоставимо по времени будет? Есть смысл в этом плане - когда item много и надо гибко, а главное, вменяемо по времени.
Если, что то типа:
$dd = " file_put_contents( '{$bbbb}' , '<?php ..... ?>' ) "; echo assert($dd) ? 1:0;
исключено, то можно и assert. Хозяин - барин. Мне просто евал и ассерт не нравятся 🍿
И, тогда, eval как вариант. Может быть даже и лучше, с учетом изменений ассерт в пхп 7.х. 😂
Суть то у этих функций пока одна - выполнение интерпретатором кода в переданной строке.
Стоимость это функция от ТЗ. Ваши 8п. + 3п. это не ТЗ.
Возможности возможностям рознь. И стоимость соответственно☝
Одно дело CNAME * site.ru c добавлением к тайтлу и т.д. поддомена региона. Другое дело собственная структура для каждого поддомена + определение региона пользователя и т.д. и т.п.
Лебедев vs бесплатный шаблон = цены разные
Функционал функционалу рознь. И стоимость соответственно☝
Поэтому и от 1000р (кворк - @media screen and (max-width: 320px) для мобильных устройств 500р + обновить шапку/футер, кворк CNAME * + регион в тайтл и региональный адрес в футер - 500р) до 100500 😂
Да не.. Ищем все %ххх% в шаблоне, перебираем, если есть на ххх условие ($a), разбираем его по &.
Перебираем итог, выдергиваем (preg_match_all('#(.+)(==|>|<)(.+)#u', $mm[2][$key], $mmm);) ключ параметра ($mmm[1][0]), логику $mmm[2][0] (>,< или ==), значение ($mmm[3][0]) и отдаем вместе с массивом параметров товара ($data) _cmpr($k, $logic, $v, $data) для сравнения...
если итоговый $re тру , то заменяем в тексте ($t) %xxx% на $b['xxx']. Все ;)
Тогда все упрощается. Если только какие проверки добавить...
30 минут размялся
как вариант:
$data['price'] = 11; $data['quantity'] = 9; $data['material'] = "шёлк"; $data['coutry'] = "Китай"; #условия $a['premium'] = 'coutry == Китай && price > 10 && material == шёлк'; $a['limited'] = 'price > 8 && quantity < 10'; $b['premium'] = '<b>premium</b>'; $b['limited'] = '<b>limited</b>'; $lgc['&&'] = '&'; $lgc['||'] = '|'; $lgc['AND'] = '&'; $t = ' Рады представить вам новую коллецию! %premium% Трусы разработаны лучшими немецкими инженерами, обладают эффектом памяти и учитывают индивидуальные особенности владельца. %limited%'; preg_match_all('#%([a-z0-9]+)%#u', $t, $m); function _cmpr($k, $logic, $v, $data) { if(!isset($data[$k])) return null; echo "<b>$k , {$data[$k]} $logic $v</b><br>" ; switch ($logic) { case '>': return ($data[$k] > $v); break; case '<': return ($data[$k] < $v); break; case '==': return ($data[$k] == $v); break; } return 0; } if(!empty($m[1])) { foreach($m[1] as $itm) { if(!empty($a[$itm])) { $a[$itm] = '& '. strtr($a[$itm], $lgc); preg_match_all('#(&|\|)([^&\|]*)#u', $a[$itm], $mm); if(!empty($mm[1])) { foreach($mm[1] as $key=>$val) { if(!empty($mm[2][$key])) { echo "<h5>{$val} если логика OR то чуть доработать в плане группировки</h5>"; $val = trim($val); $mm[2][$key] = trim($mm[2][$key]); preg_match_all('#(.+)(==|>|<)(.+)#u', $mm[2][$key], $mmm); if(isset($mmm[3]) && !empty($mmm[3][0])) $re = _cmpr(trim($mmm[1][0]), $mmm[2][0], trim($mmm[3][0]), $data) ? (isset($re) ? $re : 1) : 0; } } $s = isset($re) && $re ? $b[$itm] : ''; $t = str_replace('%'.$itm.'%', $s, $t); echo $re, ' ', $a[$itm], '<br>'; } } unset($re); } } echo '<hr>', $t;
Только над групприровкой OR и AND условий подумать 😕---------- Добавлено 24.04.2018 в 14:56 ----------
Вероятно, для вывода шаблонного куска с целью уникализации карточки например. Ну, я так понял;)