Показаны сообщения с ярлыком Framework. Показать все сообщения
Показаны сообщения с ярлыком Framework. Показать все сообщения

четверг, 18 марта 2010 г.

Magento. Задать и получить Product QTY

Стоит следующая задача:

Задать и получить Product QTY.

Сначала попробовал сделать это через $product->getQty();

Но как оказалось все данные что связанные с Inventory хранятся в другой модели. Поэтому делаем так:

   $stock = Mage::getModel('cataloginventory/stock_item')->loadByProduct($productId); 
   $stock->getQty(); // получаем QTY
   $stock->setQty(1); // задаем QTY
   $stock->save(); // Обязательно сохранись, если были внесены изменения

Собственно вот.

вторник, 22 декабря 2009 г.

Youtube API, Поиск по видео

Вот столкнулся недавно с задачей, поиска видео на Youtube из моего приложения.

Как оказалось задача проста. В Youtube Api с использованием PHP все вызовы идут с использованием Zend Framewokr.

Вот собственно функция для поиска видео:

function searchAndPrint($searchTerms)
{
  $yt = new Zend_Gdata_YouTube(); 
  $query = $yt->newVideoQuery();
  $query->setOrderBy('viewCount');
  $query->setRacy('include');
  $query->setVideoQuery($searchTerms);
  $videoFeed = $yt->getVideoFeed($query);
  printVideoFeed($videoFeed, 'Search results for: ' . $searchTerms);
}

Где функция вывода на экран (printVideoFeed):

function printVideoFeed($videoFeed, $displayTitle = null) 
{
  $count = 1;
  if ($displayTitle === null) {
    $displayTitle = $videoFeed->title->text;
  }
  echo '

' . $displayTitle . "

\n"; echo "
\n";
  foreach ($videoFeed as $videoEntry) {
    echo 'Entry # ' . $count . "\n";
    printVideoEntry($videoEntry);
    echo "\n";
    $count++;
  }
  echo "
\n"; }
 
 
function printVideoEntry($videoEntry, $tabs = "") 
{
  // the videoEntry object contains many helper functions that access the underlying mediaGroup object
  echo $tabs . 'Video: ' . $videoEntry->getVideoTitle() . "\n";
  echo $tabs . "\tDescription: " . $videoEntry->getVideoDescription() . "\n";
  echo $tabs . "\tCategory: " . $videoEntry->getVideoCategory() . "\n";
  echo $tabs . "\tTags: " . implode(", ", $videoEntry->getVideoTags()) . "\n";
  echo $tabs . "\tWatch page: " . $videoEntry->getVideoWatchPageUrl() . "\n";
  echo $tabs . "\tFlash Player Url: " . $videoEntry->getFlashPlayerUrl() . "\n";
  echo $tabs . "\tDuration: " . $videoEntry->getVideoDuration() . "\n";
  echo $tabs . "\tView count: " . $videoEntry->getVideoViewCount() . "\n";
  echo $tabs . "\tRating: " . $videoEntry->getVideoRatingInfo() . "\n";
  echo $tabs . "\tGeo Location: " . $videoEntry->getVideoGeoLocation() . "\n";
  
  // see the paragraph above this function for more information on the 'mediaGroup' object
  // here we are using the mediaGroup object directly to its 'Mobile RSTP link' child
 foreach ($videoEntry->mediaGroup->content as $content) {
    if ($content->type === "video/3gpp") {
      echo $tabs . "\tMobile RTSP link: " . $content->url . "\n";
    }
  }
  
  echo $tabs . "\tThumbnails:\n";
  $videoThumbnails = $videoEntry->getVideoThumbnails();

  foreach($videoThumbnails as $videoThumbnail) {
    echo $tabs . "\t\t" . $videoThumbnail['time'] . " - " . $videoThumbnail['url'];
    echo " height=" . $videoThumbnail['height'];
    echo " width=" . $videoThumbnail['width'];
    echo "\n";
  }
} 

Вот собственно и все. А дальше уже оформляйте вывод как вам нравится:). Удачи

вторник, 21 июля 2009 г.

Magento - создание своего модуля

Если Вам необходимо создать в Magento собственный модуль, и Вы никогда этого не делали до этого, я рекомендую воспользоваться утилиткой 'Module creator'. Которую можно скачать здесь.


Также на этой страничке есть и английская документация по ее работе.


Я опишу ее работу.

1) Скачиваем модуль с сайта
2) Копируем програму к себе на сервер и запускем index.php файл.

Видим перед собой:

Здесь мы вводим:

Namespace: Имя Вашей компании*
Module: Название модуля*
Magento Directory: директория где расположен установленный magento магазин.
Design: название темы, которую должен использовать модуль (по-умолчанию 'default')

* - совет: писать названия в таком формате: Xxxxxxx. (первый символ большой, остальные маленькие, и использовать только символы [A-Z])

Все, жмем 'create' и создаем модуль.

Созданый модуль (модели, контроллеры), будет находиться по-адресу:

/code/local/Название компании/Название модуля

Http адрес модуля, будет:

http://your-site/your-module-name

понедельник, 15 июня 2009 г.

Подмена родного контроллера (controller) в Magento своим.

Напишу как подменить родной контроллер в Magento, своим, без изменения родного кода магазина.

На примере подмены контроллера для корзины.

1.Сначала нужно создать непосредственно файлы модуля

1. Magento/app/code/local/MyNameSpace/MyModule/etc/config.xml
2. Magento/app/code/local/MyNameSpace/MyModule/controllers/Checkout/CartController.php
3. Magento/app/etc/modules/MyNameSpace_All.xml


2. Cоздаем /etc/config.xml в нашем модуле



  1. <?xml version="1.0"?>
  2. <config>
  3. <modules>
  4. <MyNameSpace_MyModule>
  5. <version>0.1.0</version>
  6. </MyNameSpace_MyModule>
  7. </modules>
  8. <global>
  9. <rewrite>
  10. <!-- Это имя класса для Вашего контроллера -->
  11. <mynamespace_mymodule_checkout_cart>
  12. <from><![CDATA[#^/checkout/cart/#]]></from>
  13. <!-- Путь к родному контроллеру который требуется подменить
  14. to - путь к нашему контрллеру
  15. -->
  16. <to>/mymodule/checkout_cart/</to>
  17. </mynamespace_mymodule_checkout_cart>
  18. </rewrite>
  19. </global>
  20. <!--
  21. Если Вы хотите переписать admin контроллер, то нужно написать admin вместо frontend
  22. -->
  23. <frontend>
  24. <routers>
  25. <mynamespace_mymodule>
  26. <use>standard</use>
  27. <args>
  28. <module>MyNameSpace_MyModule</module>
  29. <frontName>mymodule</frontName>
  30. </args>
  31. </mynamespace_mymodule>
  32. </routers>
  33. </frontend>
  34. </config>

3. Изменение /app/code/local/MyNameSpace/MyModule/controllers/Checkout/CartController.php

Это наш контролер


2. # Controllers are not autoloaded so we will have to do it manually:
3. require_once 'Mage/Checkout/controllers/CartController.php';
4. class MyNameSpace_MyModule_Checkout_CartController extends Mage_Checkout_CartController
5. {
6. # Overloaded indexAction
7. public function indexAction()
8. {
9. # Just to make sure
10. error_log('Yes, I did it!');
11. parent::indexAction();
12. }
13.}


4. Создаем конфиг файл, чтобы наш модуль активировался /app/etc/modules/MyNameSpace_All.xml


  1. <?xml version="1.0"?>
  2. <config>
  3. <modules>
  4. <MyNameSpace_MyModule>
  5. <active>true</active>
  6. <codePool>local</codePool>
  7. </MyNameSpace_MyModule>
  8. </modules>
  9. </config>



5. И последнее модифицирование файла, для того чтобы все блоки в родном контроллере, адекватно работали и в нашем созданом
Magento/app/design/frontend/[myinterface]/[mytheme]/layout/checkout.xml


  1. <mynamespace_mymodule_checkout_cart_index>
  2. <update handle="checkout_cart_index"/>
  3. </mynamespace_mymodule_checkout_cart_index>



Вот собственно и все, после всех манипуляций, все должно заработать

понедельник, 13 октября 2008 г.

CodeIgniter - работа с шаблонами

По просьбе Виктора, напишу как он работает с шаблонами.
А происходит єто очень и очень просто.

1) Мы создаем нужный нас HTML код и сохраняем его в папке views (отображения).
2) Как уже описывалось ранее это полностью объектно ориентированный фреймворк. Следовательно, в нужном месте нашего класса мы просто напросто подключаем наш HTML файл следующим образом

$this->load->view("otobragenie",$data)

Где otobragenie название Вашего файла.
А $data - ассоциативный массив.
Для примера:

$data['alex']="123";
$data['test']="1234";

Который в Вашем шаблоне будет доступный в виде

$alex и $test

Что очень хорошо, фреймворк дает полную свободу, т.е. на странице с HTML кодом можно свободно использовать PHP.

Если Вы предпочитаете использовать теги принятые в шаблонизаторах (например { и } ) то в CodeIgniter существует свой класс Template Parser

среда, 1 октября 2008 г.

Фреймворк CodeIgniter

Вот по совету хорошего друга решил посмотреть что это за штука такая, и как оказалось совет был хороший:)

Цитата:

CodeIgniter обладает рядом значительных плюсов перед другими веб-фреймворками, например:

  • используется модель MVC (Модель-Отображение-Контроллер), хорошо зарекомендовавшая себя при разработке приложений самой разной направленности;
  • поддерживается множество баз данных (MySQL, PostgreSQL, MSSQL, SQLite, Oracle);
  • отлично написанная документация с примерами позволит быстро освоить фреймворк;
  • CodeIgniter очень быстр в работе. Его считают эталоном скорости генерации страниц;

Начав изучать мне очень понравилась сама структура Фреймворка.

Для примера:

1) Строка адреса записывается в виде:
http://127.0.0.1/admin/admin_pages/test/id/id1/string
Где admin_pages - название класса, совпадающее с названием файла
test - любая функция в єтом классе
id/id1/string - параметры, которые принимает указанная ранее функция.

Вобщем очень удобно и понятно.

2) Отделение HTML кода от ПХП.
3) И что очень мне понравилось, что он не привязывает программиста к свои правилам, а наоборот дает полную свободу.

Русский сайт:
http://www.code-igniter.ru/