среда, 31 августа 2016 г.

Онлайн размещение документов на сайте

В наше время, когда Интернет широко шагает по стране, компании все чаще создают собственные сайты. Почти на каждом присутствует информация о ценах на продукцию, услуги и т.д., проще говоря – прайсы. Зачастую прайсы сразу сверстаны в html страницу или дается ссылка на их скачивание. В первом случае хорошо, если на сайте установлена CMS и можно редактировать страницы, а если нет? Во втором, нужно закачать прайс по ftp. Оба случая могут явиться камнем преткновения при обновлении прайса на сайте, если нет собственного вебмастера. Да и копирование информации из готового прайса на сайт, может привести к неточностям и ошибками, особенно если прайс не маленький. А это чревато потерей клиентов. Рассмотрим, как упростить размещение прайсов online. Сразу оговорюсь, что рассматривать мощные системы, где CMS сайта взаимодействует с бухгалтерией компании я не буду.


Многим известно, что существует удобный сервис для размещения и редактирования документов — Google Docs. Он позволяет работать с электронами таблицами, а большинство прайсов представлено именно в этом формате. Почему бы не разместить свой основной прайс в Google Docs и не дать ссылку со своего сайта на его просмотр или вообще внедрить код показа в страницу.
Чем это удобно:
  • Можно редактировать документ из любого места, где есть интернет.
  • Можно скачать документ в формате Excel или сразу распечатать. Т.е. практически отпадает необходимость хранить его локально.
  • Можно дать права на редактирование документа только определенным людям (директор, бухгалтер и т.д.), остальным он доступен только по чтению.
  • При необходимости, документ можно легко обновить, выполнив экспорт товаров и цен из бухгалтерской программы в формате Excel, а затем его импорт в Google Docs.
  • Документ на сайте всегда показывается в актуальном состоянии.
Размещаем документ на Google Docs.

Вариант первый – внедрение кода показа документа в свою страницу
  1. Опубликовываем документ как HTML для встраивания в страницу
  2. Вставляем в свою страницу код для встраивания.
  3. Смотрим что получилось
Но что делать если хочется оформить показ прайса в стилистике дизайна сайта?

Вариант второй – вывод документа при помощи PHP

У Google Docs есть возможность публикации документа в формате CSV (содержимое ячеек электронной таблицы, разделенное запятыми). У PHP есть ф-ция разбора CSV – fgetcsv (у меня он работала некорректно с русским текстом, пришлось подключить сторонний класс разбора CSV).
  1. Опубликовываем документ как CSV.
  2. Скачиваем, разбираем и выводим документ на своей странице при помощи PHP скрипта.
  3. Смотрим что получилось.
Проблема может возникнуть, если на хостинге, где находится сайт запрещено allow_url_fopen, т.е. нет возможности открыть файл по URL с Google Docs.

Вариант третий – вывод документа при помощи javascript

Есть замечательный сервис от Yahoo – YQL (Yahoo Query Language). YQL – SQL подобный язык запросов типа SELECT, подробнее тут, а тут можно посмотреть его в действии. Причем результат можно получить в формате json и вывести при помощи javascript.
  1. Опубликовываем документ как CSV.
  2. Строим запрос, в поле запроса вводим select * from csv where url='https://spreadsheets.google.com/pub?hl=ru&hl=ru&key=0AlqBgmTjbqUpdEdtWkJpVEE4Mkt5XzhYWmluZjdoclE&output=csv' and columns='col1,col2,col3' , выбираем формат json и жмем “test”, если все правильно, то отобразится наш документ. А внизу страницы будет URL запроса для использования в своем скрипте.
  3. Пишем javascript для разбора и вывода документа.
  4. Смотрим что получилось.
Минусом такого метода является недоступность текста документа для индексации поисковиками. К плюсам можно отнести уменьшение нагрузки на хостинг, т.к. документ скачивает и разбирает компьютер пользователя.

Исходные коды примеров реализации тут и тут.

Комментарии (31)

  •   
    0
      
    IE 8 вернул ошибку — «Отказано в доступе».
    •     
      0
        
      На какой пример? Если на внедрение в страницу, то там это делается через iframe. Вполне возможно IE что-то отфильтровал или запретил.
      •     
        +1
          
        На вот этот пример:
        shsweb.ru/demo/2011/price/js/
        •     
          0
            
          Посыпаю голову пеплом, забыл удалить отладочный breakpoint.
          •     
            0
              
            А, с выключенным джава-скриптом, вообще не открывается(.

            Было бы гораздо больше пользы, если бы из гугл-доковского прайса можно было (средствами самого гугла) сделать нормальный XHTML-табличный прайс (для его дальнейшей обработки обычными поисковиками и прайс-агрегаторами), а не CSV-полу-фабрикат.

            Ну, и вообще, я мечтаю, чтобы сервис с прайс-листами выдавал их в формате RSS/Atom.
            •     
              0
                
              Для выключенного javascript есть решение на php. Хотя кто его отключает? Большую часть современных сайтов неправильно покажет.
              •     
                0
                  
                Версия с PHP не катит, поскольку требует от публикатора прайса знания PHP, и опять же, нужен рабочий платный хостинг с PHP, причем, с поддержкой загрузки HTTPS-URL

                Эмбедный вариант — самое то, но в и-фрейм нужно пихать не джава-скрипт, а, уже горовую XHTML-таблицу (желательно, не весь прайс одним полотном, а, с пейджером, чтоб можно было листать страницы).
                •     
                  0
                    
                  А, еще джава-скрипт может глючить на КПК и мобильниках.
                  Было бы удобно иметь мобильную версию прайса XHTML
        •   
          0
            
          Про Yahoo Query Language не знал.
          На первый взгляд — это просто счастье какое-то!
          Спасибо.
          •   
            +2
              
            дается ссылка на их скачивание

            О, это вообще FFFFFFFUUUUUUUUUUU!!! Мои глаза наливаются кровью и их застилает пелена!

            Это очень полезная статья, жаль только, что те, к кому это относится — не читают данный ресурс.
            •     
              0
                
              А к кому она относится?
              •     
                +2
                  
                ну обычно прайс-листы в эксельчике выкладывают в указанное CMS'ом или админом место сотрудники далекие от интернетных-сует. Уверен что, большинство не будет парится с выкладыванием файликов в docs. Плюс еще и параноя какая у людей появится, что корп. инфа будет лежать где-то…
                •     
                  –1
                    
                  Не понимаю почему так плохо выкладывать прайс в .xls формате. Обновление прайса занимает минуту, сформировал в 1С сохранил в .xls залил по фтп на сервер, поменял дату прайса на новую. Вот он тебе и актуален.
                  Редактирование прайса онлайн не требуется, для чего мне тогда проделывать все эти действия?
                  Плюсы: пользователь может сам для себя быстренько в excel удалить лишнее, быстро поиском найти нужный товар и распечатать нужные ему ячейки из прайса.
                  Несколько раз прочитал статью но так и не понял чем это лучше кроме того что можно редактировать из любого места прайс.
                  •     
                    0
                      
                    Это типичный подход, когда модель поведения сервиса определяется целиком фразой «разработчику удобно».

                    При этом, факт, что можно просматривать сайт например с iPad'а или с компа где нет excel'а, или с мобильника не приходит в голову. И вообще, я не понимаю, какого лешего я должен что-то скачивать себе на компьютер, когда у другой компании я могу посмотреть все в одной вкладке. Переключение контекстов и другие юзабилити кейсы в действии.

                    Да, вы можете дать две ссылки: скачать прайс и просмотреть, как это сделно в гугл почте. Пользователи оценят точно.
                    •     
                      0
                        
                      Именно так на все 100%. Я вот люблю, когда на сайте сразу видны цены, а не скачивать и потом смотреть. Сайты без цен часто вообще пропускаю.
            •   
              0
                
              спасибо что напомнили про YQL!
              •   
                +4
                  
                В опере 11.10 кроме слова «Загрузка...» больше ничего не загрузилось.
                •     
                  0
                    
                  Посыпаю голову пеплом, забыл удалить отладочный breakpoint.
                  •     
                    0
                      
                    До сих пор «Загрузка...» и ничего более в третьем примере в опере 11.10
                    •     
                      0
                        
                      Починил.
                      •     
                        0
                          
                        Да, работает :)
                •   
                  +2
                    
                  Я так полагаю, можно пойти дальше и при помощи Google Docs редактировать не только прайсы, но и контент (в случае простейших сайтов)

                  Эдакая бесплатная микроCMS на базе Google Docs :)
                  •     
                    +2
                      
                    Именно так, даже подумывал написать об этом :)
                    Один документ — таблица связи url страничек сайта, и соотв. им url документов google + title, description, keywords. И отдельно страницы — документы. Но это скорее чисто спортивный интерес.
                  •   
                    0
                      
                    Отличная идея организации прайсов на сайте, спасибо!
                    Поясните один момент — зачастую заказчик хочет иметь на сайте рядом с прайсом большую кнопку «Скачать прайс», по которой посетитель сайта должен получить документ эксель. Не понял, как сделать такую кнопку, в гуглдокс тоже нет кнопки экспорта…
                    •     
                      +1
                        
                      Зайти в ВАШ документ, вверху справа «Открыть доступ» нажать стрелку вниз и выбрать опубликовать как веб-страницу, а там уже выбрать формат Excel. Полученную ссылку оформить у себя на страничке
                    • НЛО прилетело и опубликовало эту надпись здесь
                      •   
                        +1
                          
                        в мемориз! просто и элегантно
                        •   
                          0
                            
                          Мне кажется или YQL похож на OData (или OData на него)?
                          •   
                            0
                              
                            Хорошее решение.

                            PS. Хром почему-то это предлагает перевести с болгарского.
                            •   
                              0
                                
                              Вы не поверите, но Google использует Google Spreadsheet в качестве базы данных очень часто.

                              Например http://code.google.com/team/ берет из вот этого документа

                              https://spreadsheets.google.com/pub?hl=ru&key=0ArP1IeGHAQ0hdFJxTHRyN0ozTTFyQ2prZG9qZFliRnc

                              Отдача контента и сортирование происходит тоже через яваскрипт.

                              Всё «волшебство» происходит тут http://code.google.com/team/js/gallery.js

                            0 коммент.:

                            Отправить комментарий