Version Notes
- Add product category into feed import.
- Add support for the "google product category" attribute.
Download this release
Release Info
Developer | Jordan Rogers-Smith |
Extension | Facebook_Ads_Toolbox |
Version | 2.1.9 |
Comparing to | |
See all releases |
Code changes from version 2.1.8 to 2.1.9
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeed.php
CHANGED
@@ -25,6 +25,7 @@ class FacebookProductFeed {
|
|
25 |
const ATTR_PRICE = 'price';
|
26 |
const ATTR_GOOGLE_PRODUCT_CATEGORY = 'google_product_category';
|
27 |
const ATTR_SHORT_DESCRIPTION = 'short_description';
|
|
|
28 |
|
29 |
const PATH_FACEBOOK_ADSTOOLBOX_FEED_GENERATION_ENABLED =
|
30 |
'facebook_adstoolbox/feed/generation/enabled';
|
@@ -114,7 +115,7 @@ class FacebookProductFeed {
|
|
114 |
$attr_value = substr($attr_value, 0, 5000);
|
115 |
}
|
116 |
// description can't be all uppercase
|
117 |
-
$attr_value = $this->
|
118 |
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
119 |
}
|
120 |
break;
|
@@ -138,6 +139,16 @@ class FacebookProductFeed {
|
|
138 |
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
139 |
}
|
140 |
break;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
141 |
}
|
142 |
return '';
|
143 |
}
|
@@ -206,7 +217,7 @@ class FacebookProductFeed {
|
|
206 |
$stock->getIsInStock() ? 'in stock' : 'out of stock');
|
207 |
|
208 |
$price = Mage::getModel('directory/currency')->format(
|
209 |
-
$this->
|
210 |
array('display'=>Zend_Currency::NO_SYMBOL),
|
211 |
false);
|
212 |
if ($this->conversion_needed) {
|
@@ -214,11 +225,20 @@ class FacebookProductFeed {
|
|
214 |
}
|
215 |
$items[self::ATTR_PRICE] = $this->buildProductAttr('price',
|
216 |
sprintf('%s %s',
|
217 |
-
$price,
|
218 |
Mage::app()->getStore()->getDefaultCurrencyCode()));
|
219 |
|
220 |
$items[self::ATTR_SHORT_DESCRIPTION] = $this->buildProductAttr(self::ATTR_SHORT_DESCRIPTION,
|
221 |
$product->getShortDescription());
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
222 |
return $items;
|
223 |
}
|
224 |
|
@@ -405,13 +425,13 @@ class FacebookProductFeed {
|
|
405 |
return self::fileIsStale($file_path);
|
406 |
}
|
407 |
|
408 |
-
private function
|
409 |
// if contains lowercase or non-western characters, don't update string
|
410 |
if (!preg_match('/[a-z]/', $string) && !preg_match('/[^\\p{Common}\\p{Latin}]/u', $string)) {
|
411 |
$latin_string = preg_replace('/[^\\p{Latin}]/u', '', $string);
|
412 |
if ($latin_string !== '' &&
|
413 |
mb_strtoupper($latin_string, 'utf-8') === $latin_string) {
|
414 |
-
return
|
415 |
}
|
416 |
}
|
417 |
return $string;
|
@@ -466,20 +486,99 @@ class FacebookProductFeed {
|
|
466 |
return $image_url;
|
467 |
}
|
468 |
|
469 |
-
private function
|
470 |
-
|
471 |
-
|
472 |
-
$
|
473 |
-
|
474 |
-
|
475 |
-
|
476 |
-
|
477 |
-
|
478 |
-
|
479 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
480 |
}
|
481 |
}
|
482 |
}
|
483 |
return $product->getFinalPrice();
|
484 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
485 |
}
|
25 |
const ATTR_PRICE = 'price';
|
26 |
const ATTR_GOOGLE_PRODUCT_CATEGORY = 'google_product_category';
|
27 |
const ATTR_SHORT_DESCRIPTION = 'short_description';
|
28 |
+
const ATTR_PRODUCT_TYPE = 'product_type';
|
29 |
|
30 |
const PATH_FACEBOOK_ADSTOOLBOX_FEED_GENERATION_ENABLED =
|
31 |
'facebook_adstoolbox/feed/generation/enabled';
|
115 |
$attr_value = substr($attr_value, 0, 5000);
|
116 |
}
|
117 |
// description can't be all uppercase
|
118 |
+
$attr_value = $this->lowercaseIfAllCaps($attr_value);
|
119 |
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
120 |
}
|
121 |
break;
|
139 |
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
140 |
}
|
141 |
break;
|
142 |
+
case self::ATTR_PRODUCT_TYPE:
|
143 |
+
// product_type max size: 750
|
144 |
+
if ((bool)$attr_value) {
|
145 |
+
$attr_value = trim($this->htmlDecode($attr_value));
|
146 |
+
if (strlen($attr_value) > 750) {
|
147 |
+
$attr_value = substr($attr_value, strlen($attr_value) - 750, 750);
|
148 |
+
}
|
149 |
+
return $escapefn ? $this->$escapefn($attr_value) : $attr_value;
|
150 |
+
}
|
151 |
+
break;
|
152 |
}
|
153 |
return '';
|
154 |
}
|
217 |
$stock->getIsInStock() ? 'in stock' : 'out of stock');
|
218 |
|
219 |
$price = Mage::getModel('directory/currency')->format(
|
220 |
+
$this->getProductPrice($product),
|
221 |
array('display'=>Zend_Currency::NO_SYMBOL),
|
222 |
false);
|
223 |
if ($this->conversion_needed) {
|
225 |
}
|
226 |
$items[self::ATTR_PRICE] = $this->buildProductAttr('price',
|
227 |
sprintf('%s %s',
|
228 |
+
$this->stripCurrencySymbol($price),
|
229 |
Mage::app()->getStore()->getDefaultCurrencyCode()));
|
230 |
|
231 |
$items[self::ATTR_SHORT_DESCRIPTION] = $this->buildProductAttr(self::ATTR_SHORT_DESCRIPTION,
|
232 |
$product->getShortDescription());
|
233 |
+
|
234 |
+
$items[self::ATTR_PRODUCT_TYPE] =
|
235 |
+
$this->buildProductAttr(self::ATTR_PRODUCT_TYPE,
|
236 |
+
$this->getCategoryPath($product));
|
237 |
+
|
238 |
+
$items[self::ATTR_GOOGLE_PRODUCT_CATEGORY] =
|
239 |
+
$this->buildProductAttr(self::ATTR_GOOGLE_PRODUCT_CATEGORY,
|
240 |
+
$product->getData('google_product_category'));
|
241 |
+
|
242 |
return $items;
|
243 |
}
|
244 |
|
425 |
return self::fileIsStale($file_path);
|
426 |
}
|
427 |
|
428 |
+
private function lowercaseIfAllCaps($string) {
|
429 |
// if contains lowercase or non-western characters, don't update string
|
430 |
if (!preg_match('/[a-z]/', $string) && !preg_match('/[^\\p{Common}\\p{Latin}]/u', $string)) {
|
431 |
$latin_string = preg_replace('/[^\\p{Latin}]/u', '', $string);
|
432 |
if ($latin_string !== '' &&
|
433 |
mb_strtoupper($latin_string, 'utf-8') === $latin_string) {
|
434 |
+
return strtolower($string);
|
435 |
}
|
436 |
}
|
437 |
return $string;
|
486 |
return $image_url;
|
487 |
}
|
488 |
|
489 |
+
private function getProductPrice($product) {
|
490 |
+
switch ($product->getTypeId()) {
|
491 |
+
case 'configurable':
|
492 |
+
return $this->getConfigurableProductPrice($product);
|
493 |
+
case 'grouped':
|
494 |
+
return $this->getGroupedProductPrice($product);
|
495 |
+
case 'bundle':
|
496 |
+
return $this->getBundleProductPrice($product);
|
497 |
+
default:
|
498 |
+
return $product->getFinalPrice();
|
499 |
+
}
|
500 |
+
}
|
501 |
+
|
502 |
+
private function getConfigurableProductPrice($product) {
|
503 |
+
if ($product->getFinalPrice() === 0) {
|
504 |
+
$configurable = Mage::getModel('catalog/product_type_configurable')
|
505 |
+
->setProduct($product);
|
506 |
+
$simple_collection = $configurable->getUsedProductCollection()
|
507 |
+
->addAttributeToSelect('price')->addFilterByRequiredOptions();
|
508 |
+
foreach ($simple_collection as $simple_product) {
|
509 |
+
if ($simple_product->getPrice() > 0) {
|
510 |
+
return $simple_product->getPrice();
|
511 |
}
|
512 |
}
|
513 |
}
|
514 |
return $product->getFinalPrice();
|
515 |
}
|
516 |
+
|
517 |
+
private function getBundleProductPrice($product) {
|
518 |
+
$configurable = Mage::getModel('bundle/product_type')
|
519 |
+
->setProduct($product);
|
520 |
+
|
521 |
+
$collection = $configurable
|
522 |
+
->getSelectionsCollection(
|
523 |
+
$configurable->getOptionsIds($product),
|
524 |
+
$product)
|
525 |
+
->addAttributeToSelect('price')
|
526 |
+
->addFilterByRequiredOptions();
|
527 |
+
|
528 |
+
$pm = $product->getPriceModel();
|
529 |
+
|
530 |
+
$option_prices = array();
|
531 |
+
$required_groups = $configurable
|
532 |
+
->getProductsToPurchaseByReqGroups($product);
|
533 |
+
foreach ($required_groups as $group) {
|
534 |
+
$min_price = INF;
|
535 |
+
$bundle_quantity = 1;
|
536 |
+
$selection_quantity = 1;
|
537 |
+
foreach ($group as $item) {
|
538 |
+
$item_price = $pm->getSelectionFinalTotalPrice($product, $item,
|
539 |
+
$bundle_quantity, $selection_quantity);
|
540 |
+
$min_price = min($min_price, $item_price);
|
541 |
+
}
|
542 |
+
$option_prices[] = $min_price;
|
543 |
+
}
|
544 |
+
|
545 |
+
return $product->getFinalPrice() + array_sum($option_prices);
|
546 |
+
}
|
547 |
+
|
548 |
+
private function getGroupedProductPrice($product) {
|
549 |
+
$assoc_products = $product->getTypeInstance(true)
|
550 |
+
->getAssociatedProductCollection($product)
|
551 |
+
->addAttributeToSelect('price');
|
552 |
+
|
553 |
+
$min_price = INF;
|
554 |
+
foreach ($assoc_products as $assoc_product) {
|
555 |
+
$min_price = min($min_price, $assoc_product->getPrice());
|
556 |
+
}
|
557 |
+
return $min_price;
|
558 |
+
}
|
559 |
+
|
560 |
+
private function stripCurrencySymbol($price) {
|
561 |
+
if (!isset($this->currency_strip_needed)) {
|
562 |
+
$this->currency_strip_needed = !preg_match('/^[0-9,.]*$/', $price);
|
563 |
+
}
|
564 |
+
if ($this->currency_strip_needed) {
|
565 |
+
return preg_replace('/[^0-9,.]/', '', $price);
|
566 |
+
} else {
|
567 |
+
return $price;
|
568 |
+
}
|
569 |
+
}
|
570 |
+
|
571 |
+
private function getCategoryPath($product) {
|
572 |
+
$category_string = "";
|
573 |
+
$category = $product->getCategoryCollection()
|
574 |
+
->addAttributeToSelect('name')
|
575 |
+
->getFirstItem();
|
576 |
+
while ($category->getName() && $category->getName() != 'Default Category') {
|
577 |
+
$category_string = ($category_string) ?
|
578 |
+
$category->getName()." > ".$category_string :
|
579 |
+
$category->getName();
|
580 |
+
$category = $category->getParentCategory();
|
581 |
+
}
|
582 |
+
return $category_string;
|
583 |
+
}
|
584 |
}
|
app/code/community/Facebook/AdsToolbox/Model/FacebookProductFeedTSV.php
CHANGED
@@ -19,7 +19,7 @@ class FacebookProductFeedTSV extends FacebookProductFeed {
|
|
19 |
// full row should be
|
20 |
// id\ttitle\tdescription\tgoogle_product_category\tproduct_type\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tsale_price\tsale_price_effective_date\tgtin\tbrand\tmpn\titem_group_id\tgender\tage_group\tcolor\tsize\tshipping\tshipping_weight\tcustom_label_0
|
21 |
// ref: https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
|
22 |
-
const TSV_HEADER = "id\ttitle\tdescription\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tshort_description";
|
23 |
|
24 |
protected function tsvescape($t) {
|
25 |
// replace newlines as TSV does not allow multi-line value
|
19 |
// full row should be
|
20 |
// id\ttitle\tdescription\tgoogle_product_category\tproduct_type\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tsale_price\tsale_price_effective_date\tgtin\tbrand\tmpn\titem_group_id\tgender\tage_group\tcolor\tsize\tshipping\tshipping_weight\tcustom_label_0
|
21 |
// ref: https://developers.facebook.com/docs/marketing-api/dynamic-product-ads/product-catalog
|
22 |
+
const TSV_HEADER = "id\ttitle\tdescription\tlink\timage_link\tbrand\tcondition\tavailability\tprice\tshort_description\tproduct_type\tgoogle_product_category";
|
23 |
|
24 |
protected function tsvescape($t) {
|
25 |
// replace newlines as TSV does not allow multi-line value
|
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.9</version>
|
6 |
</Facebook_AdsToolbox>
|
7 |
</modules>
|
8 |
<global>
|
js/Facebook/AdsToolbox/Adminhtml/dia.js
CHANGED
@@ -219,7 +219,6 @@ var DiaFlowContainer = React.createClass({
|
|
219 |
openPopup: function openPopup() {
|
220 |
if (!this.state.diaSettingId && window.facebookAdsToolboxConfig.feed.totalVisibleProducts < 10000) {
|
221 |
new Ajax.Request(window.facebookAdsToolboxAjax.generateFeedNow, {
|
222 |
-
method: 'post',
|
223 |
parameters: {useCache : true},
|
224 |
onSuccess: function onSuccess() {}
|
225 |
});
|
@@ -240,7 +239,6 @@ var DiaFlowContainer = React.createClass({
|
|
240 |
},
|
241 |
launchDiaWizard: function launchDiaWizard() {
|
242 |
this.diaConfig = { 'clientSetup': window.facebookAdsToolboxConfig };
|
243 |
-
this.diaConfig.feedPrepared = window.facebookAdsToolboxConfig.feedPrepared;
|
244 |
this.openPopup();
|
245 |
},
|
246 |
closeModal: function closeModal() {
|
219 |
openPopup: function openPopup() {
|
220 |
if (!this.state.diaSettingId && window.facebookAdsToolboxConfig.feed.totalVisibleProducts < 10000) {
|
221 |
new Ajax.Request(window.facebookAdsToolboxAjax.generateFeedNow, {
|
|
|
222 |
parameters: {useCache : true},
|
223 |
onSuccess: function onSuccess() {}
|
224 |
});
|
239 |
},
|
240 |
launchDiaWizard: function launchDiaWizard() {
|
241 |
this.diaConfig = { 'clientSetup': window.facebookAdsToolboxConfig };
|
|
|
242 |
this.openPopup();
|
243 |
},
|
244 |
closeModal: function closeModal() {
|
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,12 +59,12 @@ _Installation Instructions_
|
|
59 |

|
60 |
Additional FAQ
|
61 |
https://www.facebook.com/help/532749253576163</description>
|
62 |
-
<notes>-
|
63 |
-
-
|
64 |
<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></authors>
|
65 |
-
<date>2016-10-
|
66 |
-
<time>
|
67 |
-
<contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="0bb7985b9079b8e70585aea350dc1524"/><dir name="Adminhtml"><file name="Diaindex.php" hash="f601096b3033fde99dbcfdc463572ec1"/><file name="Feedindex.php" hash="f08548f1c321e70fb4bebdf5fa6acc37"/><file name="Pixelindex.php" hash="ed25472f13e9dd8ec7e8c7f3378a198b"/></dir><file name="Head.php" hash="eb5ee970cfb6873b9def860232089460"/><file name="InitiateCheckout.php" hash="c47ed5209bed0ae4dbad120be1ba13b3"/><file name="Purchase.php" hash="0c65646369b87e6c818da4f3fdc0e155"/><file name="Search.php" hash="d8acaa72da8ca3df2146949276a3714d"/><file name="ViewCategory.php" hash="36e19e8ff10acbc862420ac8dc39fd05"/><file name="ViewContent.php" hash="38ced65dd84888045e3ef9f189124d0a"/><file name="common.php" hash="ed0e2a1dc8c84138dc6c728b2d428054"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="
|
68 |
<compatible/>
|
69 |
<dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
|
70 |
</package>
|
1 |
<?xml version="1.0"?>
|
2 |
<package>
|
3 |
<name>Facebook_Ads_Toolbox</name>
|
4 |
+
<version>2.1.9</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>- Add product category into feed import.
|
63 |
+
- Add support for the "google product category" attribute.</notes>
|
64 |
<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></authors>
|
65 |
+
<date>2016-10-21</date>
|
66 |
+
<time>02:25:08</time>
|
67 |
+
<contents><target name="magecommunity"><dir name="Facebook"><dir name="AdsToolbox"><dir><dir name="Block"><file name="AddToCart.php" hash="0bb7985b9079b8e70585aea350dc1524"/><dir name="Adminhtml"><file name="Diaindex.php" hash="f601096b3033fde99dbcfdc463572ec1"/><file name="Feedindex.php" hash="f08548f1c321e70fb4bebdf5fa6acc37"/><file name="Pixelindex.php" hash="ed25472f13e9dd8ec7e8c7f3378a198b"/></dir><file name="Head.php" hash="eb5ee970cfb6873b9def860232089460"/><file name="InitiateCheckout.php" hash="c47ed5209bed0ae4dbad120be1ba13b3"/><file name="Purchase.php" hash="0c65646369b87e6c818da4f3fdc0e155"/><file name="Search.php" hash="d8acaa72da8ca3df2146949276a3714d"/><file name="ViewCategory.php" hash="36e19e8ff10acbc862420ac8dc39fd05"/><file name="ViewContent.php" hash="38ced65dd84888045e3ef9f189124d0a"/><file name="common.php" hash="ed0e2a1dc8c84138dc6c728b2d428054"/></dir><dir name="Helper"><file name="Data.php" hash="09da04dbb30d6de8b7a873f0447456ba"/></dir><dir name="Model"><file name="FacebookProductFeed.php" hash="a06afb4375ff1f9fe6dcefa34d1d952d"/><file name="FacebookProductFeedSamples.php" hash="b79a1a2f4c857e2ed7b4971c3395406f"/><file name="FacebookProductFeedTSV.php" hash="74b0e3801fa807bfc48e8814c7c0d6c4"/><file name="FacebookProductFeedXML.php" hash="f62f7630ffd1f34b5a062855da62865f"/><file name="Observer.php" hash="6ba9ee34820ad5b86480fba72a540310"/></dir><dir name="controllers"><dir name="Adminhtml"><file name="FbfeedController.php" hash="a55045c8ad914584490d36f1410b0051"/><file name="FbfeedlogController.php" hash="34938878c691842a71f4f788c0b5cfee"/><file name="FbmainController.php" hash="b952bf87ca7b49a2b1fb256025e39331"/><file name="FbpixelController.php" hash="f00c250878671e6e4957239ddd952476"/><file name="FbregenController.php" hash="1837e42c7e6d4d9c77bb386732d08e28"/></dir><file name="DebugController.php" hash="cf3aa8f25e7c4301de9f5f908fca40e5"/><file name="ProductfeedController.php" hash="c9aedcb0b2d7d3ee66272fea143e8fd2"/></dir><dir name="etc"><file name="adminhtml.xml" hash="be7e9a1dfc20ca73654c8e4ac557e4c9"/><file name="config.xml" hash="6b5f3d958cee4ac57f6ac4378dfc12fc"/></dir><dir name="lib"><file name="fb.php" hash="cf26fcc94496b05fbaed083154a42dbf"/></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="cffaf57c6b633e1c5641783f08769726"/><file name="head.phtml" hash="217c676e9f1893f17073904a62796016"/><file name="initiate_checkout.phtml" hash="0f57840eef0477538b211d63d6c6d3b5"/><file name="purchase.phtml" hash="278c3819865a6a8ef3c03cb1189e4a4c"/><file name="search.phtml" hash="a67005ea51ae63b225cb598cf9152014"/><file name="viewcategory.phtml" hash="c56f37ab17654b53ace6180903900cf3"/><file name="viewcontent.phtml" hash="ebf7844a601511d85135cfaf623a9bc1"/></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="323e73e09b3636ed378463ca288ddca0"/><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>
|
68 |
<compatible/>
|
69 |
<dependencies><required><php><min>5.3.0</min><max>8.0.0</max></php></required></dependencies>
|
70 |
</package>
|