1 (2014-04-18 02:24:20 отредактировано oxana)

Тема: Каталог на GS: быть или не быть?

Доброго здоровьица, коллеги smile

Решила сделать доброе дело для тех, кто, так же как и я некоторое время назад, мучается вопросом: стоит создавать каталог на GS или нет. Делюсь приобретенным в боевых условиях опытом.
Передо мной стояла задача пересобрать сайт, работавший на CMS с базой данных, на GS.
Кому интересно, предыстория вопроса здесь: http://forum.getsimplecms.ru/viewtopic.php?pid=266#p266
В итоге все получилось,
сайт пока висит не на своем домене, но вот-вот переедет на ПМЖ, так что еще 3-4 дня можно посмотреть, что было: simeizrent.com и что из этого получилось: simeizrent.natyazhnov.com

Upd: Все, переехали. Теперь только то, что получилось: http://simeizrent.com/

Итак, что я имею сказать по вопросу темы. Все зависит от того, какой именно каталог вам нужен. Если это простой каталог,  без поиска с фильтрами, без возможности оформить заказ с сайта и просматривать заказы в админке, без необходимости видеть в админке этот же каталог не в виде заголовков страниц, а сразу со всей нужной информацией (например, цена, доступность для заказа, еще какие-нибудь опции), то делать такой каталог на GS можно и нужно!

Вам понадобятся плагины:

  • I18n - для многоуровневого меню

  • I18n Search - для показа продуктов в зависимости от категории

  • I18n Special Pages - для создания самих категорий и страниц самих продуктов

  • I18n Gallery - для галереи, если она нужна

  • Dynamic Pages - если понадобится вставлять в страницу компоненты с php (у меня их штук 6, кажется)

Большая часть времени уйдет на изучение вышеописанных плагинов (очень советую посетить с этой целью сайт их автора http://mvlcek.bplaced.net/, даже с неважным знанием английского с переводчиком и большим желанием разобраться можно). Зато когда разберетесь, создавать-выводить категории-подкатегории будете как пирожки печь!

В моем же случае оказалось недостаточно изучить описание плагинов. Когда я уперлась в невозможность реализовать нужные функции, пришлось идти учить PHP, javascript, JQuery и API Google maps до кучи. В итоге провозилась с сайтом  неприлично долго, но зато, как говорится, приобрела бесценный опыт smile

Расскажу поподробнее что именно не получилось сделать возможностями GS и плагинов.

1. Автоматическое создание миниатюры для показа в анонсе на главной.

Анонсы на главной - это результаты поиска специальных страниц. Для создания миниатюры в результатах поиска спец.страниц есть замечательная функция get_special_field_image(), которая создает какую вам нужно миниатюру, НО... код на вкладке плагина "поиск" у меня используется на странице "жилье", а там размер миниатюры и спец. поля совсем не те, что мне нужны в анонсах на главной. Выход - создавать свой компонент для отображения анонсов. А в компоненте get_special_field_image() не прокатит, там совсем по-другому выводятся поля, и картинку можно вывести только в полном размере. Решила проблему так: нашла в коде плагина функцию, уменьшающую картинки, скопировала ее в предварительно созданный в папке темы файл functions.php и пропускаю изображения через эту функцию.

2.Поиск с фильтрами.

Плагин I18n Search предлагает в качестве формы поиска один-единственный инпут, куда пользователь будет вводить запрос. И все. В моем случае это вообще не вариант, т.к. чтобы, например, найти жилье категории "дом" с ценой от 300грн с интернетом, кондиционером и не далее 15 минут от моря, ему пришлось бы вводить в поле формы строку :
"дом 300 internet condition distanсe". Можете себе представить такого продвинутого пользователя cool ? Я - нет.
Поэтому форму с нужными полями написала сама, а для вывода результатов поиска использовала опять-же компонент. Но не простой, а волшебный ))) Здесь уже без знания PHP никак. В нем проверяется, какие поля с какими значениями прилетели из формы, и в зависимости от этого подставляются нужные теги в строку

get_i18n_search_results( array('tags'=> вот сюда) ); 

3.В настройках полей спец. страниц отсутствует возможность сделать чекбокс индексируемым.

Зачем нужен чекбокс? Для любой характеристики продукта, которую можно определить только 2мя значениями (да/нет) чекбокс - самая удобная вещь. Например: показать страницу в анонсе? Действует ли акция на товар? В моем случае опции "интернет", "кондиционер" и т.д. тоже определяются чекбоксами. Конечно, тот же эффект вы получите, если придумаете для каждой из этих опций свой тег, и составите подробную инструкцию для хозяина сайта (или для себя, если сайт ваш), какие теги в каких случаях надо вбивать в поле "ключевые слова", при этом не ошибившись ни в одной букве. Думаю, наполнять сайт будет не очень увлекательно, особенно если тегов будет 5-6, а продуктов около 100.
А с помощью чекбокса такие параметры отмечаются легко и быстро.
В общем, я подумала :"не боги горшки обжигают", и полезла в код плагина.
Там оказалось все не так страшно, понадобилось внести небольшие дополнения, и все чекбоксы стали индексироваться!

4. Форма бронирования.

Из плагинов для создания форм мне не подошел ни один.
Во-первых, окно должно быть модальным, в плагинах я такого не встречала.
Во-вторых, присутствуют специфические поля с календариками (даты прибытия-выезда), их тоже в плагинах нет.
В-третьих, форма должна отправляться без перезагрузки, Ajax'ом, иначе некрасиво.
И, самое главное, заявки должны попадать в админку (так надо), а все плагины только отсылают письма на почту.

Саму форму сделала с помощью JQuery и плагинов к ней для отправки форм по Ajax и валидации
А вот для попадания заказов в админку использовала плагин Feedback Lite, правда, его пришлось сильно переделать, подстраивая его под свою форму.

5. Каталог в админке

Еще одна нужная для администратора сайта, но не совсем очевидная для разработчика вещь, которую пока, насколько мне известно, никакими плагинами не реализовать.
В админке мы можем видеть струтуру меню, то бишь одновременно только заголовки страниц.
Чтобы увидеть характеристики продуктов, нужно открывать каждую страницу, что неудобно.
Зачем нужен каталог в админке, если он есть на самом сайте? Отвечаю: затем, что некоторые поля спец. страниц могут быть предназначены только для администратора, но не для посетителей.
В моем случае это поле "Контакты владельца жилья".  Плюс к этому, во "внутреннем" каталоге рядом с каждым объектом недвижимости должны отображаться поступившие заявки на бронирование с возможностью их править и удалять. Для этих целей пришлось ручками писать дополнительную страницу в админке.

6. Карты

Для каждого объекта жилья нужно было добавить возможность показать расположение на карте
Для добавления карт на сайт внутри GS есть две возможности: использовать плагин (не помню название, типа googlemap) или плагин для WYSIWYG-редактора (в редакторе появится кнопочка для вставки карты)
Но мне ни тот ни другой не подошли, т.к. в них требуется вводить адрес объекта, а надо было сделать так, чтобы расположение просто отмечалось маркером без всяких адресов. Вариант создавать карты на самом гуглмэпс и вставлять код оказался очень неудобным при большом количестве объектов, нужна была карта в админке.
В общем, для такой задачи готового решения тоже не нашлось, пришлось изучать API Gogle maps и продолжать изголяться над кодом I18n Special Pages, чтобы в нем появилась возможность добавить новый тип поля - карту.
Зато теперь - красота: один клик - и маркер на карте, флажок в чекбокс "опубликовать карту" - и карта на сайте.

Итого

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

ЗЫ. Надеюсь, мой "отчет" будет кому-нибудь полезен при выборе CMS.
Буду благодарна за комментарии и конструктивную критику по моей работе.

Поделиться

2

Re: Каталог на GS: быть или не быть?

замечательный сайт получился, я рад, что вы увлечены GetSimple CMS настолько, что решились на такое количество переделок smile, конечно для каталогов есть большое количество готовых CMS... в свете последних событий: до сентября цены в гривнах продержаться? может соберусь в Крым с дочкой

Поддержать GetSimple CMS по-русски ЯДом

Сайт olsv64

Поделиться

3

Re: Каталог на GS: быть или не быть?

Олег, спасибо за лестную оценку!
Но дело не увлеченности GetSimple, а просто-напросто в отсутствии опыта, я не работала ни с одной другой CMS, кроме GetSimple. И когда, потратив прилично времени на изучение нужных плагинов, создание шаблона, компонентов, страниц и проч. поняла, что не все нужные функции можно реализовать, передо мной встал выбор: либо бросать GetSimple и искать что-то более подходящее (опять же тратить кучу времени на изучение возможностей других СMS. При этом не факт, что удалось бы найти такую, чтобы удовлетворяла всем моим запросам), либо учить PHP и ковырять код GetSimple. Наименьшим из зол мне показался второй вариант.

На самом деле  на основе  Special Pages  сделать плагин  для подобного каталога  для опытного программиста, думаю, не сложно. Вы вроде писали, что Angryboy работает над плагином каталога.  Может, у него получится сделать что-то подобное.

Насчет цен не могу ничего сказать, я сама в подмосковье живу. Спрошу у хозяина сайта, но, думаю, он тоже навряд ли знает. Это будет зависеть от того, как долго гривна будет в обращении в Крыму. Он сейчас спрашивает владельцев жилья, в чем цены указывать, и для некоторых есть и в рублях и в гривнах (можно увидеть на вкладке "жилье" или на страницах подробного описания в блоке "цены по сезонам"). Мне лично кажется, к сентябрю все на рубли перейдут.

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

Поделиться

4 (2014-05-23 17:08:20 отредактировано seaent)

Re: Каталог на GS: быть или не быть?

C интересом ознакомился с результатом работы. Думаю что создать каталог в принципе реально, но скорее это будет очень "тяжелое" решение.

В идеале я вижу решение в виде чего-то вроде Zoo для Joomla, но это скорее SKK. Чтобы были объединены решения типа CustomFields и плагинов настроек для вывода категорий + меню.

У меня каталог для магазина выглядит так:
http://timemuseum.ru/index/collection/

Реализация аналогична
I18n
I18n Search
I18n Special Pages
I18n Gallery

Поиск реализован на тэгах и i18n search - ничего необычного. Правда код обрабатывается в template.php

Поделиться

5

Re: Каталог на GS: быть или не быть?

seaent пишет:

...решение в виде чего-то вроде Zoo для Joomla, но это скорее SKK

Просветите, пожалуйста, что такое SKK? Честно гуглила, но там вылазят либо какие-то катрюли, либо словацкая крона, либо северо-крымский канал )))
Еще так, для общего развития интересно, каким образом у вас код поиска обрабатывается в template.php? Он ведь нужен только на странице с результатами поиска. У меня компонент с обработчиком только в нее и вставлен, вместо обычного (% searchresults %).

Поделиться

6

Re: Каталог на GS: быть или не быть?

oxana пишет:
seaent пишет:

...решение в виде чего-то вроде Zoo для Joomla, но это скорее SKK

Еще так, для общего развития интересно, каким образом у вас код поиска обрабатывается в template.php? Он ведь нужен только на странице с результатами поиска. У меня компонент с обработчиком только в нее и вставлен, вместо обычного (% searchresults %).

Описался имелся в виду CKK - Content Construction Kit. Оригинал этого термина у Друпалеров.
В принципе Zoo второй ветки, с которой работал, очень похоже на SpecialPages - только идеология несколько другая - разработчик может создавать собственные поля (e-mail, datepicker и etc ) и представления, т.е. для одной и той же информации возможны различные варианты показа: (грубо: таблица, список; справа свойства слева картинка и наоборот).

Код поиска обрабатывается в самом шаблоне, т.к. этот шаблон используется только на этой странице.

<?php


if (isset($_POST['set'])){
    $addtags="";
    $_POST['manufactura'] = "all";
    $_POST['price'] = "all";
}else{
    if ($_POST['manufactura'] == "all"){}else{    $addtags .= $_POST['manufactura']." ";}
    if ($_POST['price'] == 'priceG-All'){}else{        $addtags .= $_POST['price']." ";}
    if ($_POST['razmer'] == 'diameter-all'){}else{        $addtags .= $_POST['razmer']." ";}
    if ($_POST['circle'] == 'circle-all'){}else{        $addtags .= $_POST['circle']." ";}
    if ($_POST['corpus'] == 'corpus-all'){}else{        $addtags .= $_POST['corpus']." ";}
     
}

//echo $addtags;
get_i18n_search_results(array('tags'=>'_special_clock '.$addtags, 
                                    'showDate'=>0, 
                                    'max'=>150, 
                                    'i18n'=>0, 
                                    'lang'=>'ru', 
                                    'numWords'=>'0', 
                                    'order'=>'url',
                                    'showLanguage'=>0,
                                    'HEADER'=>'')); ?>

Меню слева уже генерируется по тэгам группы мануфактура через компонент.

Поделиться

7

Re: Каталог на GS: быть или не быть?

Однозначно - быть smile
Теперь и с корзиной заказов smile
http://forum.getsimplecms.ru/viewtopic.php?id=362

Поделиться

8

Re: Каталог на GS: быть или не быть?

oxana пишет:

Расскажу поподробнее что именно не получилось сделать возможностями GS и плагинов.

1. Автоматическое создание миниатюры для показа в анонсе на главной.

Анонсы на главной - это результаты поиска специальных страниц. Для создания миниатюры в результатах поиска спец.страниц есть замечательная функция get_special_field_image(), которая создает какую вам нужно миниатюру, НО... код на вкладке плагина "поиск" у меня используется на странице "жилье", а там размер миниатюры и спец. поля совсем не те, что мне нужны в анонсах на главной. Выход - создавать свой компонент для отображения анонсов. А в компоненте get_special_field_image() не прокатит, там совсем по-другому выводятся поля, и картинку можно вывести только в полном размере. Решила проблему так: нашла в коде плагина функцию, уменьшающую картинки, скопировала ее в предварительно созданный в папке темы файл functions.php и пропускаю изображения через эту функцию.

Проблема с выводом картинки в анонсе у меня еще усугубилась тем, что get_special_field_image() не хотел ни в какую масштабировать картинку в размер. Я эту беду на тот момент так и не победил. Вышел из положения вот как: в поле поиска спецстраницы для отображения картинки вбил следующий код:

<div class="content-layout-row">
         <img class="anonspict"
         src="<?php get_special_field('statpict','',false); ?>"
         alt=""
         title="<?php get_special_field('title','',false); ?>"  />
</div>

задал стиль:

.anonspict
{

   width: 100px;
   height: 75px;
   float: left;
   margin: 0px 12px 0px 0px;
   border: 1px solid #c5c5c5; 
   padding: 1px; 
   background: #ffffff; 
   
}

На этом сайте не нужно было выводить анонсы разного вида на разных страницах, но через if else можно организовать вывод нужного вида анонса на нужной странице.
А за статью - отдельное спасибо, очень познавательно.

Поделиться

9

Re: Каталог на GS: быть или не быть?

get_special_field_image() не хотел ни в какую масштабировать картинку в размер.

Странно. У меня с масштабированием при использовании этой функции ни разу проблем не было.

Вышел из положения вот как: в поле поиска спецстраницы для отображения картинки вбил следующий код:...
задал стиль:....

То, что стилями картинке можно задать любой размер, это понятно. У меня так и было, пока над сайтом еще велась работа. Но выпускать такое безобразие в жизнь уж очень не хотелось. Там же 9 картинок, и каждая из них в полном размере весит больше, чем 9 миниатюр вместе взятых!

На этом сайте не нужно было выводить анонсы разного вида на разных страницах, но через if else можно организовать вывод нужного вида анонса на нужной странице.

До меня это тоже дошло некоторое время спустя. Этот маневр описал на форуме Олег. Было очень обидно, что убила кучу времени на то, что можно было решить элементарно. Если бы тогда кто-нибудь подсказал.... Правда, я и не спрашивала. Привыкла, что на этом сайте почти все задачи были слишком нестандартные, чтобы рассчитывать на чью-то помощь.
А пост править было уже лениво )))

Поделиться

10 (2015-02-27 00:53:29 отредактировано Terminus)

Re: Каталог на GS: быть или не быть?

oxana пишет:

То, что стилями картинке можно задать любой размер, это понятно. У меня так и было, пока над сайтом еще велась работа. Но выпускать такое безобразие в жизнь уж очень не хотелось. Там же 9 картинок, и каждая из них в полном размере весит больше, чем 9 миниатюр вместе взятых!

У меня эти же картинки, что в анонсе - и в самой статье были с масштабированием через фенцибокс, вот я и не заморачивался smile

А при использовании get_special_field_image() какой механизм, в анонс подгружается не основная картинка, а ее миниатюра указанных параметров? Или масштабированная миниатюра, создаваемая GS?

ЗЫ. Мысль возникла... При использовании для отображения в анонсе картинки по моему варианту, дабы избежать загрузки большой картинки (к примеру, если пользователь просматривает только страницу с анонсами статей), можно было в спецстранице добавить поле для выбора миниатюры картинки, и в коде анонса указывать имя не поля основной картинки, а поля миниатюры.  В анонс подгружалась бы миниатюра, и безобразия в жизни бы не было smile Век живи, век учись, всё равно дураком помрешь...

Поделиться

11 (2015-02-27 20:51:47 отредактировано oxana)

Re: Каталог на GS: быть или не быть?

Terminus пишет:

А при использовании get_special_field_image() какой механизм, в анонс подгружается не основная картинка, а ее миниатюра указанных параметров? Или масштабированная миниатюра, создаваемая GS?

Если чесно, я не совсем понимаю, почему вы разделили вопросы "или". Я бы ответила утвердительно на оба.
В составе плагина I18n Special Pages есть файлик pic.php, он умеет создавать миниатюры изображений нужных размеров при обращении к нему. Разумеется, речь идет о настоящих миниатюрах, а не об иллюзии, создаваемой с помощью css. Какое взять исходное изображение и каких размеров миниатюру создать, он узнает из параметров в своем адресе (то, что идет после знака вопроса).
Вот, смотрите: http://simeizrent.com/plugins/i18n_spec … _6873-.jpg
W -это ширина, h - высота, с=1 - обрезка изображерия в случае, если при заданных размерах будут нарушены пропорции, р - путь к оригиналу. Попробуйте изменить в адресе значения высоты и ширины и перезагрузите страницу, и вы получите вновьсозданную миниатюру других размеров. Вот через этот файл и создает миниатбры функция  get_special_field_image().

Terminus пишет:

ЗЫ. Мысль возникла... При использовании для отображения в анонсе картинки по моему варианту, дабы избежать загрузки большой картинки (к примеру, если пользователь просматривает только страницу с анонсами статей), можно было в спецстранице добавить поле для выбора миниатюры картинки, и в коде анонса указывать имя не поля основной картинки, а поля миниатюры.  В анонс подгружалась бы миниатюра, и безобразия в жизни бы не было smile Век живи, век учись, всё равно дураком помрешь...

Можно и так, конечно. Но это вносит ряд неудобств в дальнейшую работу с сайтом.
1.  Вашему заказчику (или вам, если сайт для себя) придется заполнять лишнее поле. Если страниц десяток-два, может, оно и не смертельно, но если счет идет на сотни, это значительная потеря времени. К тому, заполняя много страниц, можно запутаться и ошибиться при выборе оригиналов и миниатюр.
2.  Если вам по каким-то дизайнерским соображениям понадобится увеличить/уменьшить миниатюры, вам придется пересоздавать их заново и переписывать их адреса в спецполях, в то время как в функции get_special_field_image() для этого достаточно изменить 2 цифры.
3.  Что вы будете делать, если для разных страниц вам нужны разные миниатюры (как у меня, например: в анонсах на главной - один, а на странице с результатами поиска - другой)? Создавать два поля для миниатюр разных размеров? Это только усугубит неудобства из п.1, к тому же, если я ничего не путаю, в GS нельзя создавать несколько миниатюр разных размеров автоматически.

Поделиться

12

Re: Каталог на GS: быть или не быть?

oxana пишет:

Если чесно, я не совсем понимаю, почему вы разделили вопросы "или"

get_special_field_image() масштабирует в свой размер, размер миниатюры, что создает GS, указывается в gsconfig.php, я имел ввиду эти два варианта. Но вопрос уже неактуален, вы всё касаемо его подробно описали smile

oxana пишет:

Можно и так, конечно. Но это вносит ряд неудобств в дальнейшую работу с сайтом.
1.  Вашему заказчику (или вам, если сайт для себя) придется заполнять лишнее поле. Если страниц десяток-два, может, оно и не смертельно, но если счет идет на сотни, это значительная потеря времени. К тому, заполняя много страниц, можно запутаться и ошибиться при выборе оригиналов и миниатюр.
2.  Если вам по каким-то дизайнерским соображениям понадобится увеличить/уменьшить миниатюры, вам придется пересоздавать их заново и переписывать их адреса в спецполях, в то время как в функции get_special_field_image() для этого достаточно изменить 2 цифры.
3.  Что вы будете делать, если для разных страниц вам нужны разные миниатюры (как у меня, например: в анонсах на главной - один, а на странице с результатами поиска - другой)? Создавать два поля для миниатюр разных размеров? Это только усугубит неудобства из п.1, к тому же, если я ничего не путаю, в GS нельзя создавать несколько миниатюр разных размеров автоматически.

В ваших доводах есть резон, безусловно. Но при условии, что обрезка в get_special_field_image() работает. В предыдушем проекте я не смог этого добиться, в текущем еще не пробовал. Насчет предложения по подгрузке миниатюры - я имел ввиду, что в анонс подгружалась бы не картинка большого размера, которая масштабировалась бы стилем, а миниатюра, которая масштабировалась бы стилем. Экономия трафика налицо.
Но масштабирование посредством get_special_field_image() безусловно предпочтительней. Я вообще не сторонник каких-то изгибонов и костылей, если есть возможность все сделать, используя штатные средства.

Поделиться