Version Notes
Product Feed Improvements :
- Up to 60% Faster Feed Upload for larger stores.
- Include all product categories in feed.
Download this release
Release Info
| Developer | Jordan Rogers-Smith |
| Extension | Facebook_Ads_Toolbox |
| Version | 2.1.18 |
| Comparing to | |
| See all releases | |
Code changes from version 2.1.17 to 2.1.18
- app/code/community/Facebook/AdsToolbox/Block/Adminhtml/Diaindex.php +1 -0
- app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeed.php +49 -40
- app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedSamples.php +1 -0
- app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedTSV.php +1 -19
- app/code/community/Facebook/AdsToolbox/Model/Observer.php +0 -3
- app/code/community/Facebook/AdsToolbox/etc/config.xml +1 -1
- package.xml +8 -10
app/code/community/Facebook/AdsToolbox/Block/Adminhtml/Diaindex.php
CHANGED
|
@@ -84,6 +84,7 @@ class Facebook_AdsToolbox_Block_Adminhtml_Diaindex
|
|
| 84 |
|
| 85 |
public function getTotalVisibleProducts() {
|
| 86 |
return Mage::getModel('catalog/product')->getCollection()
|
|
|
|
| 87 |
->addAttributeToFilter('visibility',
|
| 88 |
array(
|
| 89 |
'neq' =>
|
| 84 |
|
| 85 |
public function getTotalVisibleProducts() {
|
| 86 |
return Mage::getModel('catalog/product')->getCollection()
|
| 87 |
+
->addStoreFilter(FacebookAdsToolbox::getDefaultStoreId())
|
| 88 |
->addAttributeToFilter('visibility',
|
| 89 |
array(
|
| 90 |
'neq' =>
|
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeed.php
CHANGED
|
@@ -256,6 +256,36 @@ class FacebookProductFeed {
|
|
| 256 |
return strip_tags(html_entity_decode(($attr_value)));
|
| 257 |
}
|
| 258 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 259 |
public function save() {
|
| 260 |
$io = new Varien_Io_File();
|
| 261 |
$feed_file_path =
|
|
@@ -271,6 +301,9 @@ class FacebookProductFeed {
|
|
| 271 |
$feed_file_path));
|
| 272 |
}
|
| 273 |
|
|
|
|
|
|
|
|
|
|
| 274 |
$io->streamOpen($this->getFileName());
|
| 275 |
self::log('going to generate file:'.$this->getFileName());
|
| 276 |
|
|
@@ -278,17 +311,7 @@ class FacebookProductFeed {
|
|
| 278 |
|
| 279 |
$store_id = FacebookAdsToolbox::getDefaultStoreId();
|
| 280 |
$collection = Mage::getModel('catalog/product')->getCollection()
|
| 281 |
-
->addStoreFilter($store_id)
|
| 282 |
-
->addAttributeToFilter('visibility',
|
| 283 |
-
array(
|
| 284 |
-
'neq' =>
|
| 285 |
-
Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
|
| 286 |
-
))
|
| 287 |
-
->addAttributeToFilter('status',
|
| 288 |
-
array(
|
| 289 |
-
'eq' =>
|
| 290 |
-
Mage_Catalog_Model_Product_Status::STATUS_ENABLED
|
| 291 |
-
));
|
| 292 |
|
| 293 |
$total_number_of_products = $collection->getSize();
|
| 294 |
unset($collection);
|
|
@@ -314,10 +337,7 @@ class FacebookProductFeed {
|
|
| 314 |
$store_id = FacebookAdsToolbox::getDefaultStoreId();
|
| 315 |
|
| 316 |
if ($should_log) {
|
| 317 |
-
self::log(
|
| 318 |
-
sprintf(
|
| 319 |
-
'About to begin writing %d products',
|
| 320 |
-
$total_number_of_products));
|
| 321 |
}
|
| 322 |
|
| 323 |
$time_limit = (int) ini_get('max_execution_time');
|
|
@@ -345,25 +365,18 @@ class FacebookProductFeed {
|
|
| 345 |
$products = Mage::getModel('catalog/product')->getCollection()
|
| 346 |
->addAttributeToSelect('*')
|
| 347 |
->addStoreFilter($store_id)
|
| 348 |
-
->addAttributeToFilter('visibility',
|
| 349 |
-
array(
|
| 350 |
-
'neq' =>
|
| 351 |
-
Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE
|
| 352 |
-
))
|
| 353 |
-
->addAttributeToFilter('status',
|
| 354 |
-
array(
|
| 355 |
-
'eq' =>
|
| 356 |
-
Mage_Catalog_Model_Product_Status::STATUS_ENABLED
|
| 357 |
-
))
|
| 358 |
->setPageSize($batch_max)
|
| 359 |
->setCurPage($count / $batch_max + 1)
|
| 360 |
->addUrlRewrite();
|
| 361 |
|
| 362 |
foreach ($products as $product) {
|
| 363 |
try {
|
| 364 |
-
$product->
|
| 365 |
-
|
| 366 |
-
|
|
|
|
|
|
|
|
|
|
| 367 |
} catch (\Exception $e) {
|
| 368 |
$exception_count++;
|
| 369 |
// Don't overload the logs, log the first 3 exceptions.
|
|
@@ -401,6 +414,7 @@ class FacebookProductFeed {
|
|
| 401 |
$collection = Mage::getModel('catalog/product')->getCollection();
|
| 402 |
$total_number_of_products = $collection->getSize();
|
| 403 |
unset($collection);
|
|
|
|
| 404 |
|
| 405 |
$num_samples =
|
| 406 |
($total_number_of_products <= 500) ? $total_number_of_products : 500;
|
|
@@ -655,18 +669,13 @@ class FacebookProductFeed {
|
|
| 655 |
}
|
| 656 |
|
| 657 |
private function getCategoryPath($product) {
|
| 658 |
-
$
|
| 659 |
-
$
|
| 660 |
-
|
| 661 |
-
|
| 662 |
-
|
| 663 |
-
|
| 664 |
-
&& $category->getName() != 'Default Category') {
|
| 665 |
-
$category_string = ($category_string) ?
|
| 666 |
-
$category->getName()." > ".$category_string :
|
| 667 |
-
$category->getName();
|
| 668 |
-
$category = $category->getParentCategory();
|
| 669 |
}
|
| 670 |
-
return $
|
| 671 |
}
|
| 672 |
}
|
| 256 |
return strip_tags(html_entity_decode(($attr_value)));
|
| 257 |
}
|
| 258 |
|
| 259 |
+
// Generates a map of the form : 4 => "Root > Mens > Shoes"
|
| 260 |
+
private function generateCategoryNameMap() {
|
| 261 |
+
$categories = Mage::getModel('catalog/category')->getCollection()
|
| 262 |
+
->addAttributeToSelect('id')
|
| 263 |
+
->addAttributeToSelect('name')
|
| 264 |
+
->addAttributeToSelect('path')
|
| 265 |
+
->addAttributeToSelect('is_active')
|
| 266 |
+
->addAttributeToFilter('is_active', 1);
|
| 267 |
+
$name = array();
|
| 268 |
+
$breadcrumb = array();
|
| 269 |
+
foreach ($categories as $category)
|
| 270 |
+
{
|
| 271 |
+
$entity_id = $category->getId();
|
| 272 |
+
$name[$entity_id] = $category->getName();
|
| 273 |
+
$breadcrumb[$entity_id] = $category->getPath();
|
| 274 |
+
}
|
| 275 |
+
// Converts the product category paths to human readable form.
|
| 276 |
+
// e.g. "1/2/3" => "Root > Mens > Shoes"
|
| 277 |
+
foreach ($name as $id => $value)
|
| 278 |
+
{
|
| 279 |
+
$breadcrumb[$id] = implode(" > ", array_filter(array_map(
|
| 280 |
+
function ($inner_id) use (&$name) {
|
| 281 |
+
return isset($name[$inner_id]) ? $name[$inner_id] : null;
|
| 282 |
+
},
|
| 283 |
+
explode("/", $breadcrumb[$id])
|
| 284 |
+
)));
|
| 285 |
+
}
|
| 286 |
+
return $breadcrumb;
|
| 287 |
+
}
|
| 288 |
+
|
| 289 |
public function save() {
|
| 290 |
$io = new Varien_Io_File();
|
| 291 |
$feed_file_path =
|
| 301 |
$feed_file_path));
|
| 302 |
}
|
| 303 |
|
| 304 |
+
self::log('Generating Categories');
|
| 305 |
+
$this->categoryNameMap = $this->generateCategoryNameMap();
|
| 306 |
+
|
| 307 |
$io->streamOpen($this->getFileName());
|
| 308 |
self::log('going to generate file:'.$this->getFileName());
|
| 309 |
|
| 311 |
|
| 312 |
$store_id = FacebookAdsToolbox::getDefaultStoreId();
|
| 313 |
$collection = Mage::getModel('catalog/product')->getCollection()
|
| 314 |
+
->addStoreFilter($store_id);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 315 |
|
| 316 |
$total_number_of_products = $collection->getSize();
|
| 317 |
unset($collection);
|
| 337 |
$store_id = FacebookAdsToolbox::getDefaultStoreId();
|
| 338 |
|
| 339 |
if ($should_log) {
|
| 340 |
+
self::log(sprintf('About to begin writing %d products',$total_number_of_products));
|
|
|
|
|
|
|
|
|
|
| 341 |
}
|
| 342 |
|
| 343 |
$time_limit = (int) ini_get('max_execution_time');
|
| 365 |
$products = Mage::getModel('catalog/product')->getCollection()
|
| 366 |
->addAttributeToSelect('*')
|
| 367 |
->addStoreFilter($store_id)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 368 |
->setPageSize($batch_max)
|
| 369 |
->setCurPage($count / $batch_max + 1)
|
| 370 |
->addUrlRewrite();
|
| 371 |
|
| 372 |
foreach ($products as $product) {
|
| 373 |
try {
|
| 374 |
+
if ($product->getVisibility() != Mage_Catalog_Model_Product_Visibility::VISIBILITY_NOT_VISIBLE &&
|
| 375 |
+
$product->getStatus() != Mage_Catalog_Model_Product_Status::STATUS_DISABLED) {
|
| 376 |
+
$product->setStoreId($store_id);
|
| 377 |
+
$e = $this->buildProductEntry($product);
|
| 378 |
+
$io->streamWrite($e."\n");
|
| 379 |
+
}
|
| 380 |
} catch (\Exception $e) {
|
| 381 |
$exception_count++;
|
| 382 |
// Don't overload the logs, log the first 3 exceptions.
|
| 414 |
$collection = Mage::getModel('catalog/product')->getCollection();
|
| 415 |
$total_number_of_products = $collection->getSize();
|
| 416 |
unset($collection);
|
| 417 |
+
$this->categoryNameMap = array();
|
| 418 |
|
| 419 |
$num_samples =
|
| 420 |
($total_number_of_products <= 500) ? $total_number_of_products : 500;
|
| 669 |
}
|
| 670 |
|
| 671 |
private function getCategoryPath($product) {
|
| 672 |
+
$category_names = array();
|
| 673 |
+
$category_ids = $product->getCategoryIds();
|
| 674 |
+
foreach ($category_ids as $category_id) {
|
| 675 |
+
if (array_key_exists($category_id, $this->categoryNameMap)) {
|
| 676 |
+
$category_names[] = $this->categoryNameMap[$category_id];
|
| 677 |
+
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 678 |
}
|
| 679 |
+
return implode(" | ", $category_names);
|
| 680 |
}
|
| 681 |
}
|
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedSamples.php
CHANGED
|
@@ -25,6 +25,7 @@ class FacebookProductFeedSamples extends FacebookProductFeed {
|
|
| 25 |
public function generate() {
|
| 26 |
$MAX = 12;
|
| 27 |
$this->conversion_needed = false;
|
|
|
|
| 28 |
|
| 29 |
$results = array();
|
| 30 |
|
| 25 |
public function generate() {
|
| 26 |
$MAX = 12;
|
| 27 |
$this->conversion_needed = false;
|
| 28 |
+
$this->categoryNameMap = array();
|
| 29 |
|
| 30 |
$results = array();
|
| 31 |
|
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedTSV.php
CHANGED
|
@@ -29,20 +29,6 @@ class FacebookProductFeedTSV extends FacebookProductFeed {
|
|
| 29 |
// ref: https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
|
| 30 |
const TSV_HEADER = "id\ttitle\tdescription\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tshort_description\tproduct_type\tgoogle_product_category";
|
| 31 |
|
| 32 |
-
function __construct() {
|
| 33 |
-
$this->quote_chars = array(
|
| 34 |
-
chr(145),
|
| 35 |
-
chr(146),
|
| 36 |
-
chr(147),
|
| 37 |
-
chr(148),
|
| 38 |
-
"\xe2\x80\x98",
|
| 39 |
-
"\xe2\x80\x99",
|
| 40 |
-
"\xe2\x80\x9c",
|
| 41 |
-
"\xe2\x80\x9d",
|
| 42 |
-
);
|
| 43 |
-
$this->replacement_chars = array("'", "'", '"', '"', "'", "'", '"', '"');
|
| 44 |
-
}
|
| 45 |
-
|
| 46 |
protected function tsvescape($t) {
|
| 47 |
// replace newlines as TSV does not allow multi-line value
|
| 48 |
return str_replace(array("\r", "\n", " ", "\t"), ' ', $t);
|
|
@@ -71,11 +57,7 @@ class FacebookProductFeedTSV extends FacebookProductFeed {
|
|
| 71 |
|
| 72 |
protected function buildProductEntry($product) {
|
| 73 |
$items = parent::buildProductEntry($product);
|
| 74 |
-
|
| 75 |
-
return str_replace(
|
| 76 |
-
$this->quote_chars,
|
| 77 |
-
$this->replacement_chars,
|
| 78 |
-
$imploded_str);
|
| 79 |
}
|
| 80 |
|
| 81 |
}
|
| 29 |
// ref: https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
|
| 30 |
const TSV_HEADER = "id\ttitle\tdescription\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tshort_description\tproduct_type\tgoogle_product_category";
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
protected function tsvescape($t) {
|
| 33 |
// replace newlines as TSV does not allow multi-line value
|
| 34 |
return str_replace(array("\r", "\n", " ", "\t"), ' ', $t);
|
| 57 |
|
| 58 |
protected function buildProductEntry($product) {
|
| 59 |
$items = parent::buildProductEntry($product);
|
| 60 |
+
return implode("\t", array_values($items));
|
|
|
|
|
|
|
|
|
|
|
|
|
| 61 |
}
|
| 62 |
|
| 63 |
}
|
app/code/community/Facebook/AdsToolbox/Model/Observer.php
CHANGED
|
@@ -133,9 +133,6 @@ class Facebook_AdsToolbox_Model_Observer {
|
|
| 133 |
FacebookProductFeed::log(sprintf(
|
| 134 |
'Caught exception: %s. %s', $e->getMessage(), $e->getTraceAsString()
|
| 135 |
));
|
| 136 |
-
if ($supportzip) {
|
| 137 |
-
$feed->saveGZip();
|
| 138 |
-
}
|
| 139 |
if ($throwException) {
|
| 140 |
throw $e;
|
| 141 |
}
|
| 133 |
FacebookProductFeed::log(sprintf(
|
| 134 |
'Caught exception: %s. %s', $e->getMessage(), $e->getTraceAsString()
|
| 135 |
));
|
|
|
|
|
|
|
|
|
|
| 136 |
if ($throwException) {
|
| 137 |
throw $e;
|
| 138 |
}
|
app/code/community/Facebook/AdsToolbox/etc/config.xml
CHANGED
|
@@ -2,7 +2,7 @@
|
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<Facebook_AdsToolbox>
|
| 5 |
-
<version>2.1.
|
| 6 |
</Facebook_AdsToolbox>
|
| 7 |
</modules>
|
| 8 |
<global>
|
| 2 |
<config>
|
| 3 |
<modules>
|
| 4 |
<Facebook_AdsToolbox>
|
| 5 |
+
<version>2.1.18</version>
|
| 6 |
</Facebook_AdsToolbox>
|
| 7 |
</modules>
|
| 8 |
<global>
|
package.xml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Facebook_Ads_Toolbox</name>
|
| 4 |
-
<version>2.1.
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="https://raw.githubusercontent.com/fbsamples/audience-network-support/master/LICENSE">Facebook License</license>
|
| 7 |
<channel>community</channel>
|
|
@@ -59,15 +59,13 @@ _Installation Instructions_
|
|
| 59 |

|
| 60 |
Additional FAQ
|
| 61 |
https://www.facebook.com/help/532749253576163</description>
|
| 62 |
-
<notes>Product Feed Improvements
|
| 63 |
-
-
|
| 64 |
-
-
|
| 65 |
-
-
|
| 66 |
-
-
|
| 67 |
-
<
|
| 68 |
-
<
|
| 69 |
-
<time>18:31:32</time>
|
| 70 |
-
<contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="2e31117ad8e7b4e3ecf1e235277142ed"/><dir name="Adminhtml"><file name="Diaindex.php" hash="672bbe77bd2abcaae483d0ecd83a7fbd"/><file name="Feedindex.php" hash="86450e134bcfd4e30b94de3c29d6c101"/><file name="Pixelindex.php" hash="055c1d64fa60ec3909dd9d317392424d"/></dir><file name="Head.php" hash="8e392b70af8647013a9c15c0528ade73"/><file name="InitiateCheckout.php" hash="2ea5eeba2a53336d67081063b570082f"/><file name="Purchase.php" hash="10bd19d5d1687b8967fc1c4b91410e39"/><file name="Search.php" hash="a06d6ba96455beaed85c617ec758258a"/><file name="ViewCategory.php" hash="ecb02aa4085ba56baedf6fde729b4b79"/><file name="ViewContent.php" hash="a079a5a593a7faf389067177057db2a8"/><file name="common.php" hash="651e50d3f2a3d9f681a026fe10790109"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="7cdf49bb103cb92c0d3af23a1b271e0f"/><file name="FacebookProductFeedSamples.php" hash="56d006dc2cca6ca2e88e9ccae60d274a"/><file name="FacebookProductFeedTSV.php" hash="ceb913121be7465957b7c48fe5a9a297"/><file name="FacebookProductFeedXML.php" hash="c8ba195a0e85182b8541bd1a655e02d5"/><file name="Observer.php" hash="299a0d315d9ee0e8cb26c0eef3f8e23e"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FbfeedController.php" hash="0d7960608bcde90dd3d65a89e0c21692"/><file name="FbfeedlogController.php" hash="3b94fd3429ecf877cb54af173340a326"/><file name="FbmainController.php" hash="60eca5932835fca49fd0ca39b9ec7880"/><file name="FbpixelController.php" hash="f00c250878671e6e4957239ddd952476"/><file name="FbregenController.php" hash="1837e42c7e6d4d9c77bb386732d08e28"/></dir><file name="DebugController.php" hash="4d1219b72175e8b19d6fd6b3b59c7e8f"/><file name="ProductfeedController.php" hash="08e388ead90067721fb6718cac0779dd"/></dir><dir name="etc"><file name="adminhtml.xml" hash="be7e9a1dfc20ca73654c8e4ac557e4c9"/><file name="config.xml" hash="9f4e495205091aec49cb5d1a14685b6f"/></dir><dir name="lib"><file name="fb.php" hash="3cec6abe3ad61fba09ca9f510434ba56"/></dir></dir><file name="LICENSE" hash="4e3837b373e2371aeb3317bc8d245ad6"/><file name="PATENTS" hash="7eb20d51ce76c08c2e6c939674e75c93"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="facebookadstoolbox.xml" hash="cd8d60f293f5d1b5925efe01c7e48af7"/></dir><dir name="template"><dir name="facebookadstoolbox"><file name="addtocart.phtml" hash="c1a930b7c09e75f0d9746cba611e3c76"/><file name="head.phtml" hash="f70e26f4f4ee523a17a84ec577fdfde3"/><file name="initiate_checkout.phtml" hash="676e97512a1653bb3965c7171594db98"/><file name="purchase.phtml" hash="1a0383a64698a9d4c2131afc69762fc6"/><file name="search.phtml" hash="35d58ba1a53f73f715c81d2011a9a2d7"/><file name="viewcategory.phtml" hash="857d720f35a902f6ec86e34d5c88f203"/><file name="viewcontent.phtml" hash="55f054f759b06537376774ccbe6dddbe"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="facebookadstoolbox.xml" hash="5974bb612e16c7b7eff07ef06eddebda"/></dir><dir name="template"><dir name="facebookadstoolbox"><file name="dia_index.phtml" hash="839af71b1454571a41243e24cecc84ec"/><file name="feed_index.phtml" hash="157e56ef40e56378bcd07284162fb439"/><file name="pixel_index.phtml" hash="0b8e1171703bfb27ce5c768c6e79dc81"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Adminhtml"><file name="dia.js" hash="9ac2e2030268bcdc33c430f21a6b357b"/><file name="feed.js" hash="134fbbb334e0d2422b77435dc105ebf5"/><dir name="lib"><file name="react-dom.min.js" hash="80dd76fff4872e658666dec43913360c"/><file name="react.min.js" hash="c3207f7bf39699d4279ba404ea55f163"/></dir><file name="pixel.js" hash="916afd85272d48e3b34c8f2a9f4db38a"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Facebook_AdsToolbox.xml" hash="164bc795b6911c5b0a6ca357a56f38cc"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="css"><dir name="Adminhtml"><file name="dia.css" hash="201b2a78305d44d6eeebbf67231e7767"/><file name="feed.css" hash="2763caa9c8f3b9b21f85a59915d39157"/><file name="pixel.css" hash="8b143487fcc4a902c0e44de8e2af6eef"/></dir></dir><dir name="images"><dir name="Adminhtml"><file name="buttonbg.png" hash="09adbacda0d592a215277230c48df285"/><file name="fbicons.png" hash="8f1b559a279a3785f1b2492a79f518d8"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
|
| 71 |
<compatible/>
|
| 72 |
<dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
|
| 73 |
</package>
|
| 1 |
<?xml version="1.0"?>
|
| 2 |
<package>
|
| 3 |
<name>Facebook_Ads_Toolbox</name>
|
| 4 |
+
<version>2.1.18</version>
|
| 5 |
<stability>stable</stability>
|
| 6 |
<license uri="https://raw.githubusercontent.com/fbsamples/audience-network-support/master/LICENSE">Facebook License</license>
|
| 7 |
<channel>community</channel>
|
| 59 |

|
| 60 |
Additional FAQ
|
| 61 |
https://www.facebook.com/help/532749253576163</description>
|
| 62 |
+
<notes>Product Feed Improvements : 
|
| 63 |
+
- Up to 60% Faster Feed Upload for larger stores.
|
| 64 |
+
- Include all product categories in feed.</notes>
|
| 65 |
+
<authors><author><name>Jordan Rogers-Smith</name><user>jordanrs</user><email>jordanrs@fb.com</email></author><author><name>Yu Li</name><user>liyuhk</user><email>liyuhk@fb.com</email></author><author><name>Dmitri Dranishnikov</name><user>dmitrid</user><email>dmitrid@fb.com</email></author><author><name>Adam Hoff</name><user>ahoff</user><email>ahoff@fb.com</email></author><author><name>Xia Wu</name><user>xiawuthu</user><email>xiawuthu@fb.com</email></author></authors>
|
| 66 |
+
<date>2017-01-13</date>
|
| 67 |
+
<time>02:27:14</time>
|
| 68 |
+
<contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="2e31117ad8e7b4e3ecf1e235277142ed"/><dir name="Adminhtml"><file name="Diaindex.php" hash="fc55e6bbd898a7842e6ebe087339ec1f"/><file name="Feedindex.php" hash="86450e134bcfd4e30b94de3c29d6c101"/><file name="Pixelindex.php" hash="055c1d64fa60ec3909dd9d317392424d"/></dir><file name="Head.php" hash="8e392b70af8647013a9c15c0528ade73"/><file name="InitiateCheckout.php" hash="2ea5eeba2a53336d67081063b570082f"/><file name="Purchase.php" hash="10bd19d5d1687b8967fc1c4b91410e39"/><file name="Search.php" hash="a06d6ba96455beaed85c617ec758258a"/><file name="ViewCategory.php" hash="ecb02aa4085ba56baedf6fde729b4b79"/><file name="ViewContent.php" hash="a079a5a593a7faf389067177057db2a8"/><file name="common.php" hash="651e50d3f2a3d9f681a026fe10790109"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="45fd15c1cf82252687a794a36204f83c"/><file name="FacebookProductFeedSamples.php" hash="378be26e8b2a5719f2634ffda4f37b29"/><file name="FacebookProductFeedTSV.php" hash="4391132b3f69b32e534a7a5aa21b779f"/><file name="FacebookProductFeedXML.php" hash="c8ba195a0e85182b8541bd1a655e02d5"/><file name="Observer.php" hash="0578b59a4818792201ffbeb61a731eb0"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FbfeedController.php" hash="0d7960608bcde90dd3d65a89e0c21692"/><file name="FbfeedlogController.php" hash="3b94fd3429ecf877cb54af173340a326"/><file name="FbmainController.php" hash="60eca5932835fca49fd0ca39b9ec7880"/><file name="FbpixelController.php" hash="f00c250878671e6e4957239ddd952476"/><file name="FbregenController.php" hash="1837e42c7e6d4d9c77bb386732d08e28"/></dir><file name="DebugController.php" hash="4d1219b72175e8b19d6fd6b3b59c7e8f"/><file name="ProductfeedController.php" hash="08e388ead90067721fb6718cac0779dd"/></dir><dir name="etc"><file name="adminhtml.xml" hash="be7e9a1dfc20ca73654c8e4ac557e4c9"/><file name="config.xml" hash="86e25ab0a37f914292a60b46b00c4f97"/></dir><dir name="lib"><file name="fb.php" hash="3cec6abe3ad61fba09ca9f510434ba56"/></dir></dir><file name="LICENSE" hash="4e3837b373e2371aeb3317bc8d245ad6"/><file name="PATENTS" hash="7eb20d51ce76c08c2e6c939674e75c93"/></dir></dir></target><target name="magedesign"><dir name="frontend"><dir name="base"><dir name="default"><dir name="layout"><file name="facebookadstoolbox.xml" hash="cd8d60f293f5d1b5925efe01c7e48af7"/></dir><dir name="template"><dir name="facebookadstoolbox"><file name="addtocart.phtml" hash="c1a930b7c09e75f0d9746cba611e3c76"/><file name="head.phtml" hash="f70e26f4f4ee523a17a84ec577fdfde3"/><file name="initiate_checkout.phtml" hash="676e97512a1653bb3965c7171594db98"/><file name="purchase.phtml" hash="1a0383a64698a9d4c2131afc69762fc6"/><file name="search.phtml" hash="35d58ba1a53f73f715c81d2011a9a2d7"/><file name="viewcategory.phtml" hash="857d720f35a902f6ec86e34d5c88f203"/><file name="viewcontent.phtml" hash="55f054f759b06537376774ccbe6dddbe"/></dir></dir></dir></dir></dir><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="facebookadstoolbox.xml" hash="5974bb612e16c7b7eff07ef06eddebda"/></dir><dir name="template"><dir name="facebookadstoolbox"><file name="dia_index.phtml" hash="839af71b1454571a41243e24cecc84ec"/><file name="feed_index.phtml" hash="157e56ef40e56378bcd07284162fb439"/><file name="pixel_index.phtml" hash="0b8e1171703bfb27ce5c768c6e79dc81"/></dir></dir></dir></dir></dir></target><target name="mageweb"><dir name="js"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Adminhtml"><file name="dia.js" hash="9ac2e2030268bcdc33c430f21a6b357b"/><file name="feed.js" hash="134fbbb334e0d2422b77435dc105ebf5"/><dir name="lib"><file name="react-dom.min.js" hash="80dd76fff4872e658666dec43913360c"/><file name="react.min.js" hash="c3207f7bf39699d4279ba404ea55f163"/></dir><file name="pixel.js" hash="916afd85272d48e3b34c8f2a9f4db38a"/></dir></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Facebook_AdsToolbox.xml" hash="164bc795b6911c5b0a6ca357a56f38cc"/></dir></target><target name="mageskin"><dir name="adminhtml"><dir name="base"><dir name="default"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="css"><dir name="Adminhtml"><file name="dia.css" hash="201b2a78305d44d6eeebbf67231e7767"/><file name="feed.css" hash="2763caa9c8f3b9b21f85a59915d39157"/><file name="pixel.css" hash="8b143487fcc4a902c0e44de8e2af6eef"/></dir></dir><dir name="images"><dir name="Adminhtml"><file name="buttonbg.png" hash="09adbacda0d592a215277230c48df285"/><file name="fbicons.png" hash="8f1b559a279a3785f1b2492a79f518d8"/></dir></dir></dir></dir></dir></dir></dir></dir></target></contents>
|
|
|
|
|
|
|
| 69 |
<compatible/>
|
| 70 |
<dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
|
| 71 |
</package>
|
