Учусь делать компонент

Кто знает подскажите, кто поможет отблагодарю

#1 31 июля 2013 в 16:02
Итак я пытаюсь собрать компонент для партнерской программы по продаже товара. Своего рода витрину.
Попробую сваять ТЗ.
Что есть:
Имеется xml файл структура такая
Который нужно раз в неделю скачивать, обрабатывать и складывать в базу, с проверкой наличия от предыдущей обработки. Если нет в базе, то добавлять. Если есть в базе то пропускать. Если есть в базе, но нет в файле, то удалять.
К этому процессу желательно иметь админку с настройкой периодичности скачивания/чтения файла.
Следующий процесс — это вывод информации из базы.
Собрать шаблон. Вывод категорий и вывод товаров. "Листание" страниц с товарами на аякс.
Все ссылки должны быть не индексируемые.

Так, что сделано.
Стоит инстантцмс 1.10.2, создан компонент соответствующей утилитой, прописана model.php по образу подобию урока по гостевой. В frontend.php пока парсер xml воткнут.

Вопрос 1.
Как обрабатывать 1 процесс? Считывание и складывание в базу понятно, а как проверки?
#2 31 июля 2013 в 17:00

Как обрабатывать 1 процесс?

VopisUVD
Наверно по дате генерации файла:
  1. <yml_catalog date="2013-07-29 13:00">
Куда то записываете это время и если оно совпадает, то не обрабатываете файл.
#3 31 июля 2013 в 18:10


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

Марат
Тут вопрос несколько в другом.
Но это тоже полезная мысль ведь какой смысл обрабатывать файл если он не изменился.
И натолкнуло на мысь...
А если файл изменился то проще все удалить и загрузить заново, правильно?
#4 31 июля 2013 в 18:36

А если файл изменился то проще все удалить и загрузить заново, правильно?

VopisUVD
Полностью не надо переписывать. Если файл не изменился, вообще ничего не трогаем. Если изменился, разбираем, если запись есть, пропускаем, если нет, создаем. Проверить можно по id товара, который приходит в yml.
#5 1 августа 2013 в 00:58


  1.  
  2. $link = "ссылка";
  3. $file = file_get_contents($link);
  4. if ($file){
  5. //генерация имени файла
  6. //регистрация
  7. file_put_contents("/dir/filename", $file);
  8. }
  9.  

Димитриус
Можно по подробнее про эту конструкцию рассказать?
#6 1 августа 2013 в 01:00

Полностью не надо переписывать. Если файл не изменился, вообще ничего не трогаем. Если изменился, разбираем, если запись есть, пропускаем, если нет, создаем. Проверить можно по id товара, который приходит в yml.

Марат
Исчерпывающе теперь с кодом бы разобраться…
#7 1 августа 2013 в 17:39
Есть вот такая статья, в которой описан метод разбора файла xml. Практически там есть все что мне нужно.
Подскажите что и как там поправить чтоб данные складывались в базу данных?
Еще примечание: у меня не файл, а ссылка на другой сайт.
#8 1 августа 2013 в 18:36
Уважаемый VopisUVD.
  1. [quote=VopisUVD]$link = "ссылка";$file = file_get_contents($link);if ($file){ //генерация имени файла //регистрация file_put_contents("/dir/filename", $file);}[/quote]
По вопросу

Можно по подробнее про эту конструкцию рассказать?

Марат
Там все понятно, что открыть, на что заменить, что сохранить.
www.php.su/file_put_contents

Далее последуют вопросы -как организовать логику работы скрипта?
Набить instantshop товарами яндексмаркета? Или другого мага.
Да легко!!! Но! Выхлоп-прибыль в нулевом эквиваленте.Затраты в плюсе +, но это уже не ваша проблема!
Ладно просили бы выгрузку товаров, это понятно.
Вам надо сграбить товары, и забить на свой сайт?
Легко- 50000 за — 5000.
Так есть другие решения.
Опишите СУТЬ ВАШЕГО ЖЕЛАНИЯ!!!!!.
ps//смешно стало от последней моей фразы.
#9 1 августа 2013 в 21:30

Опишите СУТЬ ВАШЕГО ЖЕЛАНИЯ!!!!!.

oll
Суть проста научиться и сделать нужный мне компонент. В php я не разбираюсь я только начинаю учиться из-за необходимости!
Суть моей идеи вам не известна, поэтому про выхлоп — это без пользы делу!

За ссылку спасибо, как то не догадался.

Делаю чисто для себя, поэтому ваша ирония не уместна!
В любом случае благодарствую.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.