Version Notes
First Stable Release
Download this release
Release Info
Developer | iKantam LLC |
Extension | iKantam_Internal_SEO_Linking |
Version | 0.1.0 |
Comparing to | |
See all releases |
Version 0.1.0
- app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking.php +41 -0
- app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit.php +128 -0
- app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit/Form.php +43 -0
- app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit/Tab/Form.php +101 -0
- app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit/Tabs.php +54 -0
- app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Grid.php +120 -0
- app/code/community/Ikantam/Internalseolinking/Helper/Data.php +225 -0
- app/code/community/Ikantam/Internalseolinking/Model/Internalseolinking.php +33 -0
- app/code/community/Ikantam/Internalseolinking/Model/Observer.php +50 -0
- app/code/community/Ikantam/Internalseolinking/Model/Resource/Internalseolinking.php +30 -0
- app/code/community/Ikantam/Internalseolinking/Model/Resource/Internalseolinking/Collection.php +124 -0
- app/code/community/Ikantam/Internalseolinking/Model/Resource/Setup.php +26 -0
- app/code/community/Ikantam/Internalseolinking/Model/Template/Filter.php +58 -0
- app/code/community/Ikantam/Internalseolinking/controllers/Adminhtml/InternalseolinkingController.php +179 -0
- app/code/community/Ikantam/Internalseolinking/etc/adminhtml.xml +63 -0
- app/code/community/Ikantam/Internalseolinking/etc/config.xml +114 -0
- app/code/community/Ikantam/Internalseolinking/etc/system.xml +145 -0
- app/code/community/Ikantam/Internalseolinking/sql/internalseolinking_setup/mysql4-install-0.1.0.php +89 -0
- app/design/adminhtml/default/default/layout/internalseolinking.xml +32 -0
- app/etc/modules/Ikantam_Internalseolinking.xml +27 -0
- app/locale/en_US/Ikantam_Internalseolinking.csv +39 -0
- package.xml +37 -0
app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking.php
ADDED
@@ -0,0 +1,41 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking page content block
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking extends Mage_Adminhtml_Block_Widget_Grid_Container
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Block constructor
|
27 |
+
*
|
28 |
+
*/
|
29 |
+
public function __construct()
|
30 |
+
{
|
31 |
+
$helper = Mage::helper('internalseolinking');
|
32 |
+
|
33 |
+
$this->_controller = 'adminhtml_internalseolinking';
|
34 |
+
$this->_blockGroup = 'internalseolinking';
|
35 |
+
$this->_headerText = $helper->__('Internal SEO Linking Manager');
|
36 |
+
$this->_addButtonLabel = $helper->__('Add New Record');
|
37 |
+
|
38 |
+
parent::__construct();
|
39 |
+
}
|
40 |
+
|
41 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit.php
ADDED
@@ -0,0 +1,128 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* iKantam
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* @category Ikantam
|
13 |
+
* @package Ikantam_Internalseolinking
|
14 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Internalseolinking edit block
|
20 |
+
*
|
21 |
+
* @category Ikantam
|
22 |
+
* @package Ikantam_Internalseolinking
|
23 |
+
* @author iKantam Magento Team <support@ikantam.com>
|
24 |
+
*/
|
25 |
+
class Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Edit
|
26 |
+
extends Mage_Adminhtml_Block_Widget_Form_Container
|
27 |
+
{
|
28 |
+
/**
|
29 |
+
* Init block, add and update buttons
|
30 |
+
*
|
31 |
+
* @return void
|
32 |
+
*/
|
33 |
+
public function __construct()
|
34 |
+
{
|
35 |
+
$helper = Mage::helper('internalseolinking');
|
36 |
+
|
37 |
+
$this->_objectId = 'isl_id';
|
38 |
+
$this->_controller = 'adminhtml_internalseolinking';
|
39 |
+
|
40 |
+
parent::__construct();
|
41 |
+
|
42 |
+
$this->_blockGroup = 'internalseolinking';
|
43 |
+
|
44 |
+
$this->_updateButton('save', 'label', $helper->__('Save Record'));
|
45 |
+
$this->_updateButton('delete', 'label', $helper->__('Delete Record'));
|
46 |
+
|
47 |
+
$this->_addButton(
|
48 |
+
'save_and_edit_button', array(
|
49 |
+
'label' => $helper->__('Save And Continue Edit'),
|
50 |
+
'onclick' => 'saveAndContinueEdit(\'' . $this->_getSaveAndContinueUrl() . '\')',
|
51 |
+
'class' => 'save',
|
52 |
+
), 1
|
53 |
+
);
|
54 |
+
|
55 |
+
//TODO: do we need this?
|
56 |
+
$this->_formScripts[] = 'function saveAndContinueEdit(){
|
57 |
+
editForm.submit($("edit_form").action+"back/edit/");
|
58 |
+
}';
|
59 |
+
}
|
60 |
+
|
61 |
+
/**
|
62 |
+
* Retrieve Header text
|
63 |
+
*
|
64 |
+
* @return string
|
65 |
+
*/
|
66 |
+
public function getHeaderText()
|
67 |
+
{
|
68 |
+
if (Mage::registry('current_internalseolink')->getId()) {
|
69 |
+
return Mage::helper('internalseolinking')->__(
|
70 |
+
'Edit Record #%s', $this->htmlEscape(
|
71 |
+
Mage::registry('current_internalseolink')->getId()
|
72 |
+
)
|
73 |
+
);
|
74 |
+
} else {
|
75 |
+
return Mage::helper('internalseolinking')->__('New Record');
|
76 |
+
}
|
77 |
+
}
|
78 |
+
|
79 |
+
/**
|
80 |
+
* Retrieve Delete URL
|
81 |
+
*
|
82 |
+
* @return string
|
83 |
+
*/
|
84 |
+
public function getDeleteUrl()
|
85 |
+
{
|
86 |
+
return $this->getUrl(
|
87 |
+
'*/*/delete', array(
|
88 |
+
'isl_id' => $this->getRequest()->getParam($this->_objectId),
|
89 |
+
'ret' => $this->getRequest()->getParam('ret', 'index'))
|
90 |
+
);
|
91 |
+
}
|
92 |
+
|
93 |
+
/**
|
94 |
+
* Retrieve SaveAndContinue URL
|
95 |
+
*
|
96 |
+
* @return string
|
97 |
+
*/
|
98 |
+
public function _getSaveAndContinueUrl()
|
99 |
+
{
|
100 |
+
return $this->getUrl(
|
101 |
+
'*/*/save', array(
|
102 |
+
'_current' => true,
|
103 |
+
'ret' => 'edit',
|
104 |
+
'continue' => $this->getRequest()->getParam('ret', 'index'))
|
105 |
+
);
|
106 |
+
}
|
107 |
+
|
108 |
+
/**
|
109 |
+
* Retrieve Save URL
|
110 |
+
*
|
111 |
+
* @return string
|
112 |
+
*/
|
113 |
+
public function getSaveUrl()
|
114 |
+
{
|
115 |
+
return $this->getUrl('*/*/save', array('_current'=>true));
|
116 |
+
}
|
117 |
+
|
118 |
+
/**
|
119 |
+
* Get URL for back (reset) button
|
120 |
+
*
|
121 |
+
* @return string
|
122 |
+
*/
|
123 |
+
public function getBackUrl()
|
124 |
+
{
|
125 |
+
return $this->getUrl('*/*/' . $this->getRequest()->getParam('ret', 'index'));
|
126 |
+
}
|
127 |
+
|
128 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit/Form.php
ADDED
@@ -0,0 +1,43 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking edit form block
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Edit_Form extends Mage_Adminhtml_Block_Widget_Form
|
24 |
+
{
|
25 |
+
/*
|
26 |
+
* Init form
|
27 |
+
*
|
28 |
+
*/
|
29 |
+
protected function _prepareForm()
|
30 |
+
{
|
31 |
+
$form = new Varien_Data_Form(
|
32 |
+
array(
|
33 |
+
"id" => "edit_form",
|
34 |
+
"action" => $this->getUrl("*/*/save", array("isl_id" => $this->getRequest()->getParam("isl_id"))),
|
35 |
+
"method" => "post")
|
36 |
+
);
|
37 |
+
|
38 |
+
$form->setUseContainer(true);
|
39 |
+
$this->setForm($form);
|
40 |
+
return parent::_prepareForm();
|
41 |
+
}
|
42 |
+
|
43 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit/Tab/Form.php
ADDED
@@ -0,0 +1,101 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking edit form
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Edit_Tab_Form extends Mage_Adminhtml_Block_Widget_Form
|
24 |
+
{
|
25 |
+
/*
|
26 |
+
* Init form fieldset
|
27 |
+
*
|
28 |
+
* @return Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Edit_Tab_Form
|
29 |
+
*/
|
30 |
+
protected function _prepareForm()
|
31 |
+
{
|
32 |
+
$form = new Varien_Data_Form();
|
33 |
+
|
34 |
+
$this->setForm($form);
|
35 |
+
|
36 |
+
$fieldset = $form->addFieldset(
|
37 |
+
'internalseolinking_form', array(
|
38 |
+
'legend' => Mage::helper('internalseolinking')->__('Record information'))
|
39 |
+
);
|
40 |
+
|
41 |
+
$fieldset->addField(
|
42 |
+
'is_enabled', 'select', array(
|
43 |
+
'label' => Mage::helper('internalseolinking')->__('Enabled'),
|
44 |
+
'name' => 'is_enabled',
|
45 |
+
'values' => array(0 => $this->__('No'), 1 => $this->__('Yes')))
|
46 |
+
);
|
47 |
+
|
48 |
+
$fieldset->addField(
|
49 |
+
'keywords', 'textarea', array(
|
50 |
+
'label' => Mage::helper('internalseolinking')->__('Keywords'),
|
51 |
+
'class' => 'required-entry',
|
52 |
+
'required' => true,
|
53 |
+
'name' => 'keywords')
|
54 |
+
);
|
55 |
+
|
56 |
+
$fieldset->addField(
|
57 |
+
'url', 'text', array(
|
58 |
+
'label' => Mage::helper('internalseolinking')->__('URL'),
|
59 |
+
'class' => 'required-entry',
|
60 |
+
'required' => true,
|
61 |
+
'name' => 'url')
|
62 |
+
);
|
63 |
+
|
64 |
+
$fieldset->addField(
|
65 |
+
'title', 'text', array(
|
66 |
+
'label' => Mage::helper('internalseolinking')->__('Title'),
|
67 |
+
'name' => 'title')
|
68 |
+
);
|
69 |
+
|
70 |
+
$fieldset->addField(
|
71 |
+
'target_blank', 'select', array(
|
72 |
+
'label' => Mage::helper('internalseolinking')->__('Target'),
|
73 |
+
'name' => 'target_blank',
|
74 |
+
'values' => array(0 => '_self', 1 => '_blank'))
|
75 |
+
);
|
76 |
+
|
77 |
+
$fieldset->addField(
|
78 |
+
'is_bold', 'select', array(
|
79 |
+
'label' => Mage::helper('internalseolinking')->__('Make it Bold'),
|
80 |
+
'name' => 'is_bold',
|
81 |
+
'values' => array(0 => $this->__('No'), 1 => $this->__('Yes')))
|
82 |
+
);
|
83 |
+
|
84 |
+
$fieldset->addField(
|
85 |
+
'is_italic', 'select', array(
|
86 |
+
'label' => Mage::helper('internalseolinking')->__('Use Italics'),
|
87 |
+
'name' => 'is_italic',
|
88 |
+
'values' => array(0 => $this->__('No'), 1 => $this->__('Yes')))
|
89 |
+
);
|
90 |
+
|
91 |
+
if (Mage::getSingleton('adminhtml/session')->getInternalseolinkingData()) {
|
92 |
+
$form->setValues(Mage::getSingleton('adminhtml/session')->getInternalseolinkingData());
|
93 |
+
Mage::getSingleton('adminhtml/session')->setInternalseolinkingData(null);
|
94 |
+
} elseif (Mage::registry('current_internalseolink')) {
|
95 |
+
$form->setValues(Mage::registry('current_internalseolink')->getData());
|
96 |
+
}
|
97 |
+
|
98 |
+
return parent::_prepareForm();
|
99 |
+
}
|
100 |
+
|
101 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Edit/Tabs.php
ADDED
@@ -0,0 +1,54 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking tabs block
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Edit_Tabs extends Mage_Adminhtml_Block_Widget_Tabs
|
24 |
+
{
|
25 |
+
/*
|
26 |
+
* Init block
|
27 |
+
*
|
28 |
+
*/
|
29 |
+
public function __construct()
|
30 |
+
{
|
31 |
+
parent::__construct();
|
32 |
+
$this->setId('isl_tabs');
|
33 |
+
$this->setDestElementId('edit_form');
|
34 |
+
$this->setTitle(Mage::helper('internalseolinking')->__('Internal SEO Linking'));
|
35 |
+
}
|
36 |
+
|
37 |
+
/*
|
38 |
+
* Add tabs
|
39 |
+
*
|
40 |
+
* @return Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Edit_Tabs
|
41 |
+
*/
|
42 |
+
protected function _beforeToHtml()
|
43 |
+
{
|
44 |
+
$this->addTab(
|
45 |
+
'form_section', array(
|
46 |
+
'label' => Mage::helper('internalseolinking')->__('Record Information'),
|
47 |
+
'title' => Mage::helper('internalseolinking')->__('Record Information'),
|
48 |
+
'content' => $this->getLayout()->createBlock('internalseolinking/adminhtml_internalseolinking_edit_tab_form')->toHtml())
|
49 |
+
);
|
50 |
+
|
51 |
+
return parent::_beforeToHtml();
|
52 |
+
}
|
53 |
+
|
54 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Block/Adminhtml/Internalseolinking/Grid.php
ADDED
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking grid
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Grid extends Mage_Adminhtml_Block_Widget_Grid
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Initialization
|
27 |
+
*/
|
28 |
+
public function __construct()
|
29 |
+
{
|
30 |
+
parent::__construct();
|
31 |
+
$this->setId('internalseolinking_grid');
|
32 |
+
$this->setUseAjax(true);
|
33 |
+
$this->setDefaultSort('id');
|
34 |
+
$this->setDefaultDir('ASC');
|
35 |
+
$this->setSaveParametersInSession(true);
|
36 |
+
}
|
37 |
+
|
38 |
+
/**
|
39 |
+
* Retrieve collection class
|
40 |
+
*
|
41 |
+
* @return string
|
42 |
+
*/
|
43 |
+
protected function _getCollectionClass()
|
44 |
+
{
|
45 |
+
return 'internalseolinking/internalseolinking_collection';
|
46 |
+
}
|
47 |
+
|
48 |
+
/**
|
49 |
+
* Prepare and set collection of grid
|
50 |
+
*
|
51 |
+
* @return Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Grid
|
52 |
+
*/
|
53 |
+
protected function _prepareCollection()
|
54 |
+
{
|
55 |
+
$collection = Mage::getResourceModel($this->_getCollectionClass());
|
56 |
+
$this->setCollection($collection);
|
57 |
+
return parent::_prepareCollection();
|
58 |
+
}
|
59 |
+
|
60 |
+
/**
|
61 |
+
* Prepare and add columns to grid
|
62 |
+
*
|
63 |
+
* @return Ikantam_Internalseolinking_Block_Adminhtml_Internalseolinking_Grid
|
64 |
+
*/
|
65 |
+
protected function _prepareColumns()
|
66 |
+
{
|
67 |
+
$this->addColumn(
|
68 |
+
'id', array(
|
69 |
+
'header' => Mage::helper('internalseolinking')->__('ID'),
|
70 |
+
'align' => 'right',
|
71 |
+
'width' => '50px',
|
72 |
+
'index' => 'id')
|
73 |
+
);
|
74 |
+
|
75 |
+
$this->addColumn(
|
76 |
+
'keywords', array(
|
77 |
+
'header' => Mage::helper('internalseolinking')->__('Keywords'),
|
78 |
+
'align' => 'left',
|
79 |
+
'index' => 'keywords')
|
80 |
+
);
|
81 |
+
|
82 |
+
$this->addColumn(
|
83 |
+
'url', array(
|
84 |
+
'header' => Mage::helper('internalseolinking')->__('URL'),
|
85 |
+
'align' => 'left',
|
86 |
+
'index' => 'url')
|
87 |
+
);
|
88 |
+
|
89 |
+
$this->addColumn(
|
90 |
+
'title', array(
|
91 |
+
'header' => Mage::helper('internalseolinking')->__('Title'),
|
92 |
+
'align' => 'left',
|
93 |
+
'index' => 'title')
|
94 |
+
);
|
95 |
+
|
96 |
+
$this->addColumn(
|
97 |
+
'is_enabled', array(
|
98 |
+
'header' => Mage::helper('internalseolinking')->__('Enabled'),
|
99 |
+
'align' => 'left',
|
100 |
+
'width' => '75px',
|
101 |
+
'index' => 'is_enabled',
|
102 |
+
'type' => 'options',
|
103 |
+
'options' => array(0 => $this->__('No'), 1 => $this->__('Yes')))
|
104 |
+
);
|
105 |
+
|
106 |
+
return parent::_prepareColumns();
|
107 |
+
}
|
108 |
+
|
109 |
+
/**
|
110 |
+
* Get url for row
|
111 |
+
*
|
112 |
+
* @param string $row
|
113 |
+
* @return string
|
114 |
+
*/
|
115 |
+
public function getRowUrl($row)
|
116 |
+
{
|
117 |
+
return $this->getUrl('*/*/edit', array('isl_id' => $row->getId()));
|
118 |
+
}
|
119 |
+
|
120 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Helper/Data.php
ADDED
@@ -0,0 +1,225 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking data helper
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Helper_Data extends Mage_Core_Helper_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Prepare category attribute html output
|
27 |
+
*
|
28 |
+
* @param Mage_Catalog_Helper_Output $helper
|
29 |
+
* @param string $attributeHtml
|
30 |
+
* @param array $params
|
31 |
+
* @return string
|
32 |
+
*/
|
33 |
+
public function categoryAttribute($helper, $attributeHtml, $params)
|
34 |
+
{
|
35 |
+
if (isset($params['attribute']) && $params['attribute'] === 'description') {
|
36 |
+
$attributeHtml = $this->process($attributeHtml);
|
37 |
+
}
|
38 |
+
|
39 |
+
return $attributeHtml;
|
40 |
+
}
|
41 |
+
|
42 |
+
/**
|
43 |
+
* Prepare product attribute html output
|
44 |
+
*
|
45 |
+
* @param Mage_Catalog_Helper_Output $helper
|
46 |
+
* @param string $attributeHtml
|
47 |
+
* @param array $params
|
48 |
+
* @return string
|
49 |
+
*/
|
50 |
+
public function productAttribute($callObject, $attributeHtml, $params)
|
51 |
+
{
|
52 |
+
if (isset($params['attribute']) && $params['attribute'] === 'description') {
|
53 |
+
$attributeHtml = $this->process($attributeHtml);
|
54 |
+
}
|
55 |
+
|
56 |
+
return $attributeHtml;
|
57 |
+
}
|
58 |
+
|
59 |
+
/*
|
60 |
+
* Convert keywords into links
|
61 |
+
*
|
62 |
+
* @param string $html
|
63 |
+
* @return string
|
64 |
+
*/
|
65 |
+
public function process($html)
|
66 |
+
{
|
67 |
+
$globalLimit = $limit = $this->getReplacementLimit();
|
68 |
+
|
69 |
+
if ($globalLimit <= 0) {
|
70 |
+
$globalLimit = $limit = -1;
|
71 |
+
}
|
72 |
+
$repCount = 0;
|
73 |
+
|
74 |
+
$dom = new DOMDocument();
|
75 |
+
$dom->loadHtml(mb_convert_encoding($html, 'HTML-ENTITIES', 'UTF-8'));
|
76 |
+
$xpath = new DOMXPath($dom);
|
77 |
+
$model = Mage::getModel('internalseolinking/internalseolinking');
|
78 |
+
list($replaces, $urls) = $model->getCollection()->getReplaces();
|
79 |
+
|
80 |
+
foreach ($xpath->query('//text()[not(ancestor::a)]') as $node) {
|
81 |
+
if ($node->nodeType === 3) {
|
82 |
+
if ($globalLimit > 0) {
|
83 |
+
$limit = $globalLimit - $repCount;
|
84 |
+
if ($limit < 0) {
|
85 |
+
$limit = 0;
|
86 |
+
}
|
87 |
+
}
|
88 |
+
//$replaced = preg_replace($replaces, $urls, htmlentities($node->wholeText), $limit, $count);
|
89 |
+
$replaced = preg_replace($replaces, $urls, preg_replace('/[&]([^a])/', '&$1', $node->wholeText), $limit, $count);
|
90 |
+
$newNode = $dom->createDocumentFragment();
|
91 |
+
@$newNode->appendXML($replaced);
|
92 |
+
$node->parentNode->replaceChild($newNode, $node);
|
93 |
+
$repCount += $count;
|
94 |
+
}
|
95 |
+
}
|
96 |
+
|
97 |
+
return $dom->saveHTML();
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* Get current url
|
102 |
+
*
|
103 |
+
* @return true
|
104 |
+
*/
|
105 |
+
public function getCurrentUrl()
|
106 |
+
{
|
107 |
+
return Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true));
|
108 |
+
}
|
109 |
+
|
110 |
+
/**
|
111 |
+
* Check if current url is url for home page
|
112 |
+
*
|
113 |
+
* @return true
|
114 |
+
*/
|
115 |
+
public function getIsHomePage()
|
116 |
+
{
|
117 |
+
return Mage::getUrl('') == Mage::getUrl('*/*/*', array('_current'=>true, '_use_rewrite'=>true));
|
118 |
+
}
|
119 |
+
|
120 |
+
/**
|
121 |
+
* Check if current page is CMS page
|
122 |
+
*
|
123 |
+
* @return boolean
|
124 |
+
*/
|
125 |
+
public function getIsCmsPage()
|
126 |
+
{
|
127 |
+
return ((int) Mage::getBlockSingleton('cms/page')->getPage()->getData('page_id')) > 0;
|
128 |
+
}
|
129 |
+
|
130 |
+
/**
|
131 |
+
* Check if current page is CMS page
|
132 |
+
*
|
133 |
+
* @return boolean
|
134 |
+
*/
|
135 |
+
public function getIsAwBlogPage()
|
136 |
+
{
|
137 |
+
if (!Mage::getConfig()->getModuleConfig('AW_Blog')->is('active', 'true')) {
|
138 |
+
return false;
|
139 |
+
}
|
140 |
+
|
141 |
+
$request = Mage::app()->getRequest();
|
142 |
+
return ($request->getControllerModule() === 'AW_Blog' && $request->getModuleName() === 'blog');
|
143 |
+
}
|
144 |
+
|
145 |
+
/*
|
146 |
+
* Get module settings
|
147 |
+
*
|
148 |
+
* @return boolean
|
149 |
+
*/
|
150 |
+
public function isEnabled()
|
151 |
+
{
|
152 |
+
return (bool) Mage::getStoreConfig('internalseolinking/module_options/enabled');
|
153 |
+
}
|
154 |
+
|
155 |
+
/*
|
156 |
+
* Get module settings
|
157 |
+
*
|
158 |
+
* @return boolean
|
159 |
+
*/
|
160 |
+
public function shouldProcessHomepage()
|
161 |
+
{
|
162 |
+
return (bool) Mage::getStoreConfig('internalseolinking/process_options/home');
|
163 |
+
}
|
164 |
+
|
165 |
+
/*
|
166 |
+
* Get module settings
|
167 |
+
*
|
168 |
+
* @return boolean
|
169 |
+
*/
|
170 |
+
public function shouldProcessCmsPage()
|
171 |
+
{
|
172 |
+
return (bool) Mage::getStoreConfig('internalseolinking/process_options/cms');
|
173 |
+
}
|
174 |
+
|
175 |
+
/*
|
176 |
+
* Get module settings
|
177 |
+
*
|
178 |
+
* @return boolean
|
179 |
+
*/
|
180 |
+
public function shouldProcessCategory()
|
181 |
+
{
|
182 |
+
return (bool) Mage::getStoreConfig('internalseolinking/process_options/categories');
|
183 |
+
}
|
184 |
+
|
185 |
+
/*
|
186 |
+
* Get module settings
|
187 |
+
*
|
188 |
+
* @return boolean
|
189 |
+
*/
|
190 |
+
public function shouldProcessProduct()
|
191 |
+
{
|
192 |
+
return (bool) Mage::getStoreConfig('internalseolinking/process_options/products');
|
193 |
+
}
|
194 |
+
|
195 |
+
/*
|
196 |
+
* Get module settings
|
197 |
+
*
|
198 |
+
* @return integer
|
199 |
+
*/
|
200 |
+
public function getReplacementLimit()
|
201 |
+
{
|
202 |
+
return (int) Mage::getStoreConfig('internalseolinking/process_options/limit');
|
203 |
+
}
|
204 |
+
|
205 |
+
/*
|
206 |
+
* Get module settings
|
207 |
+
*
|
208 |
+
* @return integer
|
209 |
+
*/
|
210 |
+
public function shouldProcessAwBlogPage()
|
211 |
+
{
|
212 |
+
return (bool) Mage::getStoreConfig('internalseolinking/process_options/awblog');
|
213 |
+
}
|
214 |
+
|
215 |
+
/*
|
216 |
+
* Get module settings
|
217 |
+
*
|
218 |
+
* @return integer
|
219 |
+
*/
|
220 |
+
public function getExceptionList()
|
221 |
+
{
|
222 |
+
return Mage::getStoreConfig('internalseolinking/process_options/exceptions');
|
223 |
+
}
|
224 |
+
|
225 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Model/Internalseolinking.php
ADDED
@@ -0,0 +1,33 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking model
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Model_Internalseolinking extends Mage_Core_Model_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Initialize resources
|
27 |
+
*/
|
28 |
+
protected function _construct()
|
29 |
+
{
|
30 |
+
$this->_init('internalseolinking/internalseolinking');
|
31 |
+
}
|
32 |
+
|
33 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Model/Observer.php
ADDED
@@ -0,0 +1,50 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking observer
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Model_Observer
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Assign category and product attribute handlers
|
27 |
+
*
|
28 |
+
* @param Varien_Event_Observer $observer
|
29 |
+
* @return Ikantam_Internalseolinking_Model_Observer
|
30 |
+
*/
|
31 |
+
public function assignHandlers($observer)
|
32 |
+
{
|
33 |
+
$catalogHelper = $observer->getEvent()->getHelper();
|
34 |
+
$moduleHelper = Mage::helper('internalseolinking');
|
35 |
+
|
36 |
+
if (!$moduleHelper->isEnabled()) {
|
37 |
+
return $this;
|
38 |
+
}
|
39 |
+
|
40 |
+
if ($moduleHelper->shouldProcessCategory()) {
|
41 |
+
$catalogHelper->addHandler('categoryAttribute', $moduleHelper);
|
42 |
+
}
|
43 |
+
|
44 |
+
if ($moduleHelper->shouldProcessProduct()) {
|
45 |
+
$catalogHelper->addHandler('productAttribute', $moduleHelper);
|
46 |
+
}
|
47 |
+
|
48 |
+
return $this;
|
49 |
+
}
|
50 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Model/Resource/Internalseolinking.php
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking resource model
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Model_Resource_Internalseolinking extends Mage_Core_Model_Resource_Db_Abstract
|
24 |
+
{
|
25 |
+
protected function _construct()
|
26 |
+
{
|
27 |
+
$this->_init('internalseolinking/internalseolinking', 'id');
|
28 |
+
}
|
29 |
+
|
30 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Model/Resource/Internalseolinking/Collection.php
ADDED
@@ -0,0 +1,124 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking collection
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Model_Resource_Internalseolinking_Collection extends Mage_Core_Model_Resource_Db_Collection_Abstract
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Initialize resources
|
27 |
+
*
|
28 |
+
*/
|
29 |
+
public function _construct()
|
30 |
+
{
|
31 |
+
$this->_init('internalseolinking/internalseolinking');
|
32 |
+
}
|
33 |
+
|
34 |
+
/*
|
35 |
+
* Prepare regex and replacement arrays
|
36 |
+
*
|
37 |
+
* @return list
|
38 |
+
*/
|
39 |
+
public function getReplaces()
|
40 |
+
{
|
41 |
+
$excludes = explode(",", Mage::helper('internalseolinking')->getExceptionList());
|
42 |
+
|
43 |
+
$replaces = $urls = array();
|
44 |
+
$this->addFilter('is_enabled', '1');
|
45 |
+
foreach ($this as $row) {
|
46 |
+
if (Mage::helper('core/url')->getCurrentUrl() == $row->getUrl()) {
|
47 |
+
continue;//do not allow self-linking
|
48 |
+
}
|
49 |
+
|
50 |
+
if (in_array(Mage::helper('core/url')->getCurrentUrl(), $excludes)) {
|
51 |
+
continue;//check exception list
|
52 |
+
}
|
53 |
+
|
54 |
+
$words = explode(',', $row->getKeywords());
|
55 |
+
|
56 |
+
foreach ($words as $word) {
|
57 |
+
$replaces[] = '/' . '\b(' . preg_quote($word, '/') . ')\b' . '/iu';
|
58 |
+
$urls[] = $this->getIslLink($row);
|
59 |
+
}
|
60 |
+
}
|
61 |
+
|
62 |
+
return array($replaces, $urls);
|
63 |
+
}
|
64 |
+
|
65 |
+
/*
|
66 |
+
* Get link element for current keyword
|
67 |
+
*
|
68 |
+
* @param Ikantam_Internalseolinking_Model_Internalseolinking $row
|
69 |
+
* @return string
|
70 |
+
*/
|
71 |
+
protected function getIslLink($row)
|
72 |
+
{
|
73 |
+
$target = $row->getTargetBlank() ? '_blank' : '_self';
|
74 |
+
|
75 |
+
if ($row->getTitle()) {
|
76 |
+
$link = '<a target="'. $target . '" href="' . $row->getUrl() . '">';
|
77 |
+
|
78 |
+
if ($row->getIsBold()) {
|
79 |
+
$link .= '<b>';
|
80 |
+
}
|
81 |
+
|
82 |
+
if ($row->getIsItalic()) {
|
83 |
+
$link .= '<i>';
|
84 |
+
}
|
85 |
+
|
86 |
+
$link .= $row->getTitle();
|
87 |
+
|
88 |
+
if ($row->getIsItalic()) {
|
89 |
+
$link .= '</i>';
|
90 |
+
}
|
91 |
+
|
92 |
+
if ($row->getIsBold()) {
|
93 |
+
$link .= '</b>';
|
94 |
+
}
|
95 |
+
|
96 |
+
$link .= '</a>';
|
97 |
+
} else {
|
98 |
+
$link = '<a target="'. $target . '" href="' . $row->getUrl() . '">';
|
99 |
+
|
100 |
+
if ($row->getIsBold()) {
|
101 |
+
$link .= '<b>';
|
102 |
+
}
|
103 |
+
|
104 |
+
if ($row->getIsItalic()) {
|
105 |
+
$link .= '<i>';
|
106 |
+
}
|
107 |
+
|
108 |
+
$link .= '$1';
|
109 |
+
|
110 |
+
if ($row->getIsItalic()) {
|
111 |
+
$link .= '</i>';
|
112 |
+
}
|
113 |
+
|
114 |
+
if ($row->getIsBold()) {
|
115 |
+
$link .= '</b>';
|
116 |
+
}
|
117 |
+
|
118 |
+
$link .= '</a>';
|
119 |
+
}
|
120 |
+
|
121 |
+
return $link;
|
122 |
+
}
|
123 |
+
|
124 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Model/Resource/Setup.php
ADDED
@@ -0,0 +1,26 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking resource setup
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Model_Resource_Setup extends Mage_Core_Model_Resource_Setup
|
24 |
+
{
|
25 |
+
|
26 |
+
}
|
app/code/community/Ikantam/Internalseolinking/Model/Template/Filter.php
ADDED
@@ -0,0 +1,58 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/**
|
17 |
+
* Internalseolinking page content block
|
18 |
+
*
|
19 |
+
* @category Ikantam
|
20 |
+
* @package Ikantam_Internalseolinking
|
21 |
+
* @author iKantam Team <support@ikantam.com>
|
22 |
+
*/
|
23 |
+
class Ikantam_Internalseolinking_Model_Template_Filter extends Mage_Widget_Model_Template_Filter
|
24 |
+
{
|
25 |
+
/**
|
26 |
+
* Process CMS page content
|
27 |
+
*
|
28 |
+
* @param string $html
|
29 |
+
* @return string
|
30 |
+
*/
|
31 |
+
public function filter($html)
|
32 |
+
{
|
33 |
+
$html = parent::filter($html);
|
34 |
+
|
35 |
+
$moduleHelper = Mage::helper('internalseolinking');
|
36 |
+
|
37 |
+
if (!$moduleHelper->isEnabled()) {
|
38 |
+
return $html;
|
39 |
+
}
|
40 |
+
|
41 |
+
if ($moduleHelper->getIsHomePage() && !$moduleHelper->shouldProcessHomepage()) {
|
42 |
+
return $html;
|
43 |
+
}
|
44 |
+
|
45 |
+
if ($moduleHelper->getIsCmsPage() && !$moduleHelper->shouldProcessCmsPage()) {
|
46 |
+
return $html;
|
47 |
+
}
|
48 |
+
|
49 |
+
if ($moduleHelper->getIsAwBlogPage() && !$moduleHelper->shouldProcessAwBlogPage()) {
|
50 |
+
return $html;
|
51 |
+
}
|
52 |
+
|
53 |
+
$html = $moduleHelper->process($html);
|
54 |
+
|
55 |
+
return $html;
|
56 |
+
}
|
57 |
+
|
58 |
+
}
|
app/code/community/Ikantam/Internalseolinking/controllers/Adminhtml/InternalseolinkingController.php
ADDED
@@ -0,0 +1,179 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* iKantam
|
4 |
+
*
|
5 |
+
* NOTICE OF LICENSE
|
6 |
+
*
|
7 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
8 |
+
* that is bundled with this package in the file LICENSE.txt.
|
9 |
+
* It is also available through the world-wide-web at this URL:
|
10 |
+
* http://opensource.org/licenses/osl-3.0.php
|
11 |
+
*
|
12 |
+
* @category Ikantam
|
13 |
+
* @package Ikantam_Internalseolinking
|
14 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
15 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
16 |
+
*/
|
17 |
+
|
18 |
+
/**
|
19 |
+
* Adminhtml Internalseolinking controller
|
20 |
+
*
|
21 |
+
* @category Ikantam
|
22 |
+
* @package Ikantam_Internalseolinking
|
23 |
+
* @author iKantam Magento Team <support@ikantam.com>
|
24 |
+
*/
|
25 |
+
class Ikantam_Internalseolinking_Adminhtml_InternalseolinkingController extends Mage_Adminhtml_Controller_Action
|
26 |
+
{
|
27 |
+
/**
|
28 |
+
* Additional initialization
|
29 |
+
*
|
30 |
+
*/
|
31 |
+
protected function _construct()
|
32 |
+
{
|
33 |
+
$this->setUsedModuleName('Ikantam_Internalseolinking');
|
34 |
+
}
|
35 |
+
|
36 |
+
/**
|
37 |
+
* Init layout, menu and breadcrumb
|
38 |
+
*
|
39 |
+
* @return Ikantam_Internalseolinking_Adminhtml_InternalseolinkingController
|
40 |
+
*/
|
41 |
+
protected function _initAction()
|
42 |
+
{
|
43 |
+
$this->loadLayout()
|
44 |
+
->_setActiveMenu('internalseolinking/internalseolinking')
|
45 |
+
->_addBreadcrumb($this->__('Internal SEO Linking'), $this->__('Internal SEO Linking'));
|
46 |
+
return $this;
|
47 |
+
}
|
48 |
+
|
49 |
+
/**
|
50 |
+
* Initialize Internalseolinking model instance
|
51 |
+
*
|
52 |
+
* @return Ikantam_Internalseolinking_Model_Internalseolinking || false
|
53 |
+
*/
|
54 |
+
protected function _initInternalSeoLink()
|
55 |
+
{
|
56 |
+
$model = Mage::getModel('internalseolinking/internalseolinking');
|
57 |
+
$id = $this->getRequest()->getParam('isl_id');
|
58 |
+
|
59 |
+
if ($id) {
|
60 |
+
$model->load($id);
|
61 |
+
if (!$model->getId()) {
|
62 |
+
return false;
|
63 |
+
}
|
64 |
+
}
|
65 |
+
|
66 |
+
Mage::register('current_internalseolink', $model);
|
67 |
+
return $model;
|
68 |
+
}
|
69 |
+
|
70 |
+
|
71 |
+
/**
|
72 |
+
* Internal SEO Links grid
|
73 |
+
*
|
74 |
+
*/
|
75 |
+
public function indexAction()
|
76 |
+
{
|
77 |
+
$this->_title($this->__('Internal SEO Linking'));
|
78 |
+
$this->_initAction()->renderLayout();
|
79 |
+
}
|
80 |
+
|
81 |
+
/**
|
82 |
+
* Edit Internal SEO Link action
|
83 |
+
*
|
84 |
+
*/
|
85 |
+
public function editAction()
|
86 |
+
{
|
87 |
+
$this->_title($this->__('Internal SEO Linking'));
|
88 |
+
|
89 |
+
$helper = Mage::helper('internalseolinking');
|
90 |
+
$session = Mage::getSingleton('adminhtml/session');
|
91 |
+
|
92 |
+
if (!($model = $this->_initInternalSeoLink())) {
|
93 |
+
$session->addError($helper->__('Wrong Internal SEO Link was specified'));
|
94 |
+
return $this->_redirect('*/*/index', array('store' => $this->getRequest()->getParam('store')));
|
95 |
+
}
|
96 |
+
|
97 |
+
$data = $session->getInternalseolinkingData(true);
|
98 |
+
if (!empty($data)) {
|
99 |
+
$model->addData($data);
|
100 |
+
}
|
101 |
+
|
102 |
+
$this->_title($model->getId() ? 'Record #' . $model->getId() : $this->__('New Internal SEO Link'));
|
103 |
+
$this->_initAction()->renderLayout();
|
104 |
+
}
|
105 |
+
|
106 |
+
/**
|
107 |
+
* New Internal SEO Link action
|
108 |
+
*
|
109 |
+
*/
|
110 |
+
public function newAction()
|
111 |
+
{
|
112 |
+
$this->_forward('edit');
|
113 |
+
}
|
114 |
+
|
115 |
+
/**
|
116 |
+
* Save Internal SEO Link action
|
117 |
+
*
|
118 |
+
*/
|
119 |
+
public function saveAction()
|
120 |
+
{
|
121 |
+
$data = $this->getRequest()->getPost();
|
122 |
+
$helper = Mage::helper('internalseolinking');
|
123 |
+
$session = Mage::getSingleton('adminhtml/session');
|
124 |
+
|
125 |
+
if ($data) {
|
126 |
+
try {
|
127 |
+
if (!$model = $this->_initInternalSeoLink()) {
|
128 |
+
$session->addError($helper->__('Wrong Internal SEO Link was specified'));
|
129 |
+
return $this->_redirect('*/*/index');
|
130 |
+
}
|
131 |
+
|
132 |
+
$model->addData($data)->save();
|
133 |
+
|
134 |
+
$session->addSuccess($helper->__('Internal SEO Link was successfully saved'));
|
135 |
+
$session->setInternalseolinkingData(false);
|
136 |
+
|
137 |
+
$continue = $this->getRequest()->getParam('back');
|
138 |
+
|
139 |
+
if ($continue) {
|
140 |
+
return $this->_redirect('*/*/edit', array('isl_id' => $model->getId(), 'ret' => $continue));
|
141 |
+
} else {
|
142 |
+
return $this->_redirect('*/*/' . $this->getRequest()->getParam('ret', 'index'));
|
143 |
+
}
|
144 |
+
} catch (Exception $e) {
|
145 |
+
$session->addError($e->getMessage());
|
146 |
+
$session->setInternalseolinkingData($data);
|
147 |
+
|
148 |
+
return $this->_redirect('*/*/edit', array('isl_id' => $model->getId()));
|
149 |
+
}
|
150 |
+
}
|
151 |
+
|
152 |
+
return $this->_redirect('*/*/index', array('_current' => true));
|
153 |
+
}
|
154 |
+
|
155 |
+
/**
|
156 |
+
* Delete Internal SEO Link action
|
157 |
+
*
|
158 |
+
*/
|
159 |
+
public function deleteAction()
|
160 |
+
{
|
161 |
+
$model = $this->_initInternalSeoLink();
|
162 |
+
$helper = Mage::helper('internalseolinking');
|
163 |
+
$session = Mage::getSingleton('adminhtml/session');
|
164 |
+
|
165 |
+
if ($model && $model->getId()) {
|
166 |
+
try {
|
167 |
+
$model->delete();
|
168 |
+
$session->addSuccess($helper->__('The Internal SEO Link has been deleted'));
|
169 |
+
} catch (Exception $e) {
|
170 |
+
$session->addError($e->getMessage());
|
171 |
+
}
|
172 |
+
} else {
|
173 |
+
$session->addError($helper->__('Unable to find an Internal SEO Link to delete'));
|
174 |
+
}
|
175 |
+
|
176 |
+
$this->getResponse()->setRedirect($this->getUrl('*/*/index'));
|
177 |
+
}
|
178 |
+
|
179 |
+
}
|
app/code/community/Ikantam/Internalseolinking/etc/adminhtml.xml
ADDED
@@ -0,0 +1,63 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Internal SEO Linking
|
5 |
+
*
|
6 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Ikantam
|
12 |
+
* @package Ikantam_Internalseolinking
|
13 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
-->
|
17 |
+
<config>
|
18 |
+
<menu>
|
19 |
+
<ikantam module="internalseolinking" translate="title">
|
20 |
+
<title>iKantam</title>
|
21 |
+
<sort_order>100</sort_order>
|
22 |
+
<children>
|
23 |
+
<internalseolinking module="internalseolinking" translate="title">
|
24 |
+
<title>Internal SEO Linking</title>
|
25 |
+
<sort_order>10</sort_order>
|
26 |
+
<action>internalseolinking/adminhtml_internalseolinking</action>
|
27 |
+
</internalseolinking>
|
28 |
+
</children>
|
29 |
+
</ikantam>
|
30 |
+
</menu>
|
31 |
+
|
32 |
+
<acl>
|
33 |
+
<resources>
|
34 |
+
<admin>
|
35 |
+
<children>
|
36 |
+
<ikantam translate="title" module="internalseolinking">
|
37 |
+
<title>iKantam</title>
|
38 |
+
<sort_order>1000</sort_order>
|
39 |
+
<children>
|
40 |
+
<internalseolinking translate="title">
|
41 |
+
<title>Internal SEO Linking</title>
|
42 |
+
<sort_order>10</sort_order>
|
43 |
+
</internalseolinking>
|
44 |
+
</children>
|
45 |
+
</ikantam>
|
46 |
+
|
47 |
+
<system>
|
48 |
+
<children>
|
49 |
+
<config>
|
50 |
+
<children>
|
51 |
+
<internalseolinking translate="title">
|
52 |
+
<title>iKantam - Internal SEO Linking</title>
|
53 |
+
</internalseolinking>
|
54 |
+
</children>
|
55 |
+
</config>
|
56 |
+
</children>
|
57 |
+
</system>
|
58 |
+
</children>
|
59 |
+
</admin>
|
60 |
+
</resources>
|
61 |
+
</acl>
|
62 |
+
|
63 |
+
</config>
|
app/code/community/Ikantam/Internalseolinking/etc/config.xml
ADDED
@@ -0,0 +1,114 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Internal SEO Linking
|
5 |
+
*
|
6 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Ikantam
|
12 |
+
* @package Ikantam_Internalseolinking
|
13 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
-->
|
17 |
+
<config>
|
18 |
+
<modules>
|
19 |
+
<Ikantam_Internalseolinking>
|
20 |
+
<version>0.1.0</version>
|
21 |
+
</Ikantam_Internalseolinking>
|
22 |
+
</modules>
|
23 |
+
|
24 |
+
<frontend>
|
25 |
+
<events>
|
26 |
+
<catalog_helper_output_construct>
|
27 |
+
<observers>
|
28 |
+
<internalseolinking>
|
29 |
+
<class>internalseolinking/observer</class>
|
30 |
+
<method>assignHandlers</method>
|
31 |
+
</internalseolinking>
|
32 |
+
</observers>
|
33 |
+
</catalog_helper_output_construct>
|
34 |
+
</events>
|
35 |
+
</frontend>
|
36 |
+
|
37 |
+
<global>
|
38 |
+
<helpers>
|
39 |
+
<internalseolinking>
|
40 |
+
<class>Ikantam_Internalseolinking_Helper</class>
|
41 |
+
</internalseolinking>
|
42 |
+
</helpers>
|
43 |
+
|
44 |
+
<blocks>
|
45 |
+
<internalseolinking>
|
46 |
+
<class>Ikantam_Internalseolinking_Block</class>
|
47 |
+
</internalseolinking>
|
48 |
+
</blocks>
|
49 |
+
|
50 |
+
<models>
|
51 |
+
<widget>
|
52 |
+
<rewrite>
|
53 |
+
<template_filter>Ikantam_Internalseolinking_Model_Template_Filter</template_filter>
|
54 |
+
</rewrite>
|
55 |
+
</widget>
|
56 |
+
|
57 |
+
<internalseolinking>
|
58 |
+
<class>Ikantam_Internalseolinking_Model</class>
|
59 |
+
<resourceModel>internalseolinking_resource</resourceModel>
|
60 |
+
</internalseolinking>
|
61 |
+
|
62 |
+
<internalseolinking_resource>
|
63 |
+
<class>Ikantam_Internalseolinking_Model_Resource</class>
|
64 |
+
<entities>
|
65 |
+
<internalseolinking>
|
66 |
+
<table>ikantam_internalseolinking</table>
|
67 |
+
</internalseolinking>
|
68 |
+
</entities>
|
69 |
+
</internalseolinking_resource>
|
70 |
+
</models>
|
71 |
+
|
72 |
+
<resources>
|
73 |
+
<internalseolinking_setup>
|
74 |
+
<setup>
|
75 |
+
<module>Ikantam_Internalseolinking</module>
|
76 |
+
<class>Ikantam_Internalseolinking_Model_Resource_Setup</class>
|
77 |
+
</setup>
|
78 |
+
</internalseolinking_setup>
|
79 |
+
</resources>
|
80 |
+
</global>
|
81 |
+
|
82 |
+
<admin>
|
83 |
+
<routers>
|
84 |
+
<internalseolinking>
|
85 |
+
<use>admin</use>
|
86 |
+
<args>
|
87 |
+
<module>Ikantam_Internalseolinking</module>
|
88 |
+
<frontName>internalseolinking</frontName>
|
89 |
+
</args>
|
90 |
+
</internalseolinking>
|
91 |
+
</routers>
|
92 |
+
</admin>
|
93 |
+
|
94 |
+
<adminhtml>
|
95 |
+
<layout>
|
96 |
+
<updates>
|
97 |
+
<internalseolinking>
|
98 |
+
<file>internalseolinking.xml</file>
|
99 |
+
</internalseolinking>
|
100 |
+
</updates>
|
101 |
+
</layout>
|
102 |
+
|
103 |
+
<translate>
|
104 |
+
<modules>
|
105 |
+
<Ikantam_Internalseolinking>
|
106 |
+
<files>
|
107 |
+
<default>Ikantam_Internalseolinking.csv</default>
|
108 |
+
</files>
|
109 |
+
</Ikantam_Internalseolinking>
|
110 |
+
</modules>
|
111 |
+
</translate>
|
112 |
+
</adminhtml>
|
113 |
+
|
114 |
+
</config>
|
app/code/community/Ikantam/Internalseolinking/etc/system.xml
ADDED
@@ -0,0 +1,145 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Internal SEO Linking
|
5 |
+
*
|
6 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Ikantam
|
12 |
+
* @package Ikantam_Internalseolinking
|
13 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
-->
|
17 |
+
<config>
|
18 |
+
<tabs>
|
19 |
+
<ikantam translate="label" module="internalseolinking">
|
20 |
+
<label>iKantam</label>
|
21 |
+
<sort_order>9999999</sort_order>
|
22 |
+
</ikantam>
|
23 |
+
</tabs>
|
24 |
+
|
25 |
+
<sections>
|
26 |
+
<internalseolinking translate="label" module="internalseolinking">
|
27 |
+
<label>Internal SEO Linking</label>
|
28 |
+
<tab>ikantam</tab>
|
29 |
+
<sort_order>1000</sort_order>
|
30 |
+
<show_in_default>1</show_in_default>
|
31 |
+
<show_in_website>1</show_in_website>
|
32 |
+
<show_in_store>1</show_in_store>
|
33 |
+
|
34 |
+
<groups>
|
35 |
+
<module_options translate="label" module="internalseolinking">
|
36 |
+
<label>Module Options</label>
|
37 |
+
<frontend_type>text</frontend_type>
|
38 |
+
<sort_order>10</sort_order>
|
39 |
+
<show_in_default>1</show_in_default>
|
40 |
+
<show_in_website>1</show_in_website>
|
41 |
+
<show_in_store>1</show_in_store>
|
42 |
+
|
43 |
+
<fields>
|
44 |
+
<enabled translate="label">
|
45 |
+
<label>Enabled: </label>
|
46 |
+
<frontend_type>select</frontend_type>
|
47 |
+
<sort_order>10</sort_order>
|
48 |
+
<show_in_default>1</show_in_default>
|
49 |
+
<show_in_website>1</show_in_website>
|
50 |
+
<show_in_store>1</show_in_store>
|
51 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
52 |
+
</enabled>
|
53 |
+
</fields>
|
54 |
+
</module_options>
|
55 |
+
|
56 |
+
<process_options translate="label" module="internalseolinking">
|
57 |
+
<label>Processing Options</label>
|
58 |
+
<frontend_type>text</frontend_type>
|
59 |
+
<sort_order>20</sort_order>
|
60 |
+
<show_in_default>1</show_in_default>
|
61 |
+
<show_in_website>1</show_in_website>
|
62 |
+
<show_in_store>1</show_in_store>
|
63 |
+
|
64 |
+
<fields>
|
65 |
+
<limit translate="label comment">
|
66 |
+
<label>Max # of replacements per page: </label>
|
67 |
+
<comment>Zero or empty for no limit</comment>
|
68 |
+
<frontend_type>text</frontend_type>
|
69 |
+
<sort_order>10</sort_order>
|
70 |
+
<show_in_default>1</show_in_default>
|
71 |
+
<show_in_website>1</show_in_website>
|
72 |
+
<show_in_store>1</show_in_store>
|
73 |
+
</limit>
|
74 |
+
|
75 |
+
<home translate="label comment">
|
76 |
+
<label>Home page: </label>
|
77 |
+
<comment>Process home page</comment>
|
78 |
+
<frontend_type>select</frontend_type>
|
79 |
+
<sort_order>30</sort_order>
|
80 |
+
<show_in_default>1</show_in_default>
|
81 |
+
<show_in_website>1</show_in_website>
|
82 |
+
<show_in_store>1</show_in_store>
|
83 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
84 |
+
</home>
|
85 |
+
|
86 |
+
<cms translate="label comment">
|
87 |
+
<label>CMS pages: </label>
|
88 |
+
<comment>Process CMS pages</comment>
|
89 |
+
<frontend_type>select</frontend_type>
|
90 |
+
<sort_order>40</sort_order>
|
91 |
+
<show_in_default>1</show_in_default>
|
92 |
+
<show_in_website>1</show_in_website>
|
93 |
+
<show_in_store>1</show_in_store>
|
94 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
95 |
+
</cms>
|
96 |
+
|
97 |
+
<products translate="label comment">
|
98 |
+
<label>Product descriptions: </label>
|
99 |
+
<comment>Process product descriptions</comment>
|
100 |
+
<frontend_type>select</frontend_type>
|
101 |
+
<sort_order>50</sort_order>
|
102 |
+
<show_in_default>1</show_in_default>
|
103 |
+
<show_in_website>1</show_in_website>
|
104 |
+
<show_in_store>1</show_in_store>
|
105 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
106 |
+
</products>
|
107 |
+
|
108 |
+
<categories translate="label comment">
|
109 |
+
<label>Category descriptions: </label>
|
110 |
+
<comment>Process category descriptions</comment>
|
111 |
+
<frontend_type>select</frontend_type>
|
112 |
+
<sort_order>60</sort_order>
|
113 |
+
<show_in_default>1</show_in_default>
|
114 |
+
<show_in_website>1</show_in_website>
|
115 |
+
<show_in_store>1</show_in_store>
|
116 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
117 |
+
</categories>
|
118 |
+
|
119 |
+
<awblog translate="label comment">
|
120 |
+
<label>AheadWorks Blog: </label>
|
121 |
+
<comment>Process AheadWorks blog pages</comment>
|
122 |
+
<frontend_type>select</frontend_type>
|
123 |
+
<sort_order>70</sort_order>
|
124 |
+
<show_in_default>1</show_in_default>
|
125 |
+
<show_in_website>1</show_in_website>
|
126 |
+
<show_in_store>1</show_in_store>
|
127 |
+
<source_model>adminhtml/system_config_source_yesno</source_model>
|
128 |
+
</awblog>
|
129 |
+
|
130 |
+
<exceptions translate="label comment">
|
131 |
+
<label>Exception list: </label>
|
132 |
+
<comment>List URL's (comma separated) that should be excluded from the extension actions</comment>
|
133 |
+
<frontend_type>textarea</frontend_type>
|
134 |
+
<sort_order>80</sort_order>
|
135 |
+
<show_in_default>1</show_in_default>
|
136 |
+
<show_in_website>1</show_in_website>
|
137 |
+
<show_in_store>1</show_in_store>
|
138 |
+
</exceptions>
|
139 |
+
</fields>
|
140 |
+
</process_options>
|
141 |
+
</groups>
|
142 |
+
</internalseolinking>
|
143 |
+
</sections>
|
144 |
+
|
145 |
+
</config>
|
app/code/community/Ikantam/Internalseolinking/sql/internalseolinking_setup/mysql4-install-0.1.0.php
ADDED
@@ -0,0 +1,89 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/**
|
3 |
+
* Internal SEO Linking
|
4 |
+
*
|
5 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
6 |
+
* that is bundled with this package in the file LICENSE.txt.
|
7 |
+
* It is also available through the world-wide-web at this URL:
|
8 |
+
* http://opensource.org/licenses/osl-3.0.php
|
9 |
+
*
|
10 |
+
* @category Ikantam
|
11 |
+
* @package Ikantam_Internalseolinking
|
12 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
13 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
14 |
+
*/
|
15 |
+
|
16 |
+
/* @var $installer Mage_Core_Model_Resource_Setup */
|
17 |
+
$installer = $this;
|
18 |
+
|
19 |
+
$installer->startSetup();
|
20 |
+
|
21 |
+
/**
|
22 |
+
* Create table 'internalseolinking/internalseolinking'
|
23 |
+
*/
|
24 |
+
$table = $installer->getConnection()
|
25 |
+
->newTable($installer->getTable('internalseolinking/internalseolinking'))
|
26 |
+
|
27 |
+
->addColumn(
|
28 |
+
'id', Varien_Db_Ddl_Table::TYPE_INTEGER, null, array(
|
29 |
+
'identity' => true,
|
30 |
+
'unsigned' => true,
|
31 |
+
'nullable' => false,
|
32 |
+
'primary' => true,
|
33 |
+
), 'Internal SEO Link ID'
|
34 |
+
)
|
35 |
+
|
36 |
+
->addColumn(
|
37 |
+
'keywords', Varien_Db_Ddl_Table::TYPE_TEXT, null, array(
|
38 |
+
'nullable' => false,
|
39 |
+
), 'Internal SEO Link Keywords'
|
40 |
+
)
|
41 |
+
|
42 |
+
->addColumn(
|
43 |
+
'url', Varien_Db_Ddl_Table::TYPE_VARCHAR, 255, array(
|
44 |
+
'nullable' => false,
|
45 |
+
), 'Internal SEO Link URL'
|
46 |
+
)
|
47 |
+
|
48 |
+
->addColumn(
|
49 |
+
'title', Varien_Db_Ddl_Table::TYPE_VARCHAR, 255, array(
|
50 |
+
'nullable' => true,
|
51 |
+
'default' => null,
|
52 |
+
), 'Internal SEO Link Title'
|
53 |
+
)
|
54 |
+
|
55 |
+
->addColumn(
|
56 |
+
'is_enabled', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
57 |
+
'unsigned' => true,
|
58 |
+
'nullable' => false,
|
59 |
+
'default' => '0',
|
60 |
+
), 'Internal SEO Link is Enabled'
|
61 |
+
)
|
62 |
+
|
63 |
+
->addColumn(
|
64 |
+
'target_blank', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
65 |
+
'unsigned' => true,
|
66 |
+
'nullable' => false,
|
67 |
+
'default' => '0',
|
68 |
+
), 'Internal SEO Link Target is "_blank"'
|
69 |
+
)
|
70 |
+
|
71 |
+
->addColumn(
|
72 |
+
'is_bold', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
73 |
+
'unsigned' => true,
|
74 |
+
'nullable' => false,
|
75 |
+
'default' => '0',
|
76 |
+
), 'Internal SEO Link is Bold'
|
77 |
+
)
|
78 |
+
|
79 |
+
->addColumn(
|
80 |
+
'is_italic', Varien_Db_Ddl_Table::TYPE_SMALLINT, null, array(
|
81 |
+
'unsigned' => true,
|
82 |
+
'nullable' => false,
|
83 |
+
'default' => '0',
|
84 |
+
), 'Internal SEO Link is Italic'
|
85 |
+
);
|
86 |
+
|
87 |
+
$installer->getConnection()->createTable($table);
|
88 |
+
|
89 |
+
$installer->endSetup();
|
app/design/adminhtml/default/default/layout/internalseolinking.xml
ADDED
@@ -0,0 +1,32 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" encoding="UTF-8"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* Internal SEO Linking
|
5 |
+
*
|
6 |
+
* LICENSE: this source file is subject to the Open Software License (OSL 3.0)
|
7 |
+
* that is bundled with this package in the file LICENSE.txt.
|
8 |
+
* It is also available through the world-wide-web at this URL:
|
9 |
+
* http://opensource.org/licenses/osl-3.0.php
|
10 |
+
*
|
11 |
+
* @category Ikantam
|
12 |
+
* @package Ikantam_Internalseolinking
|
13 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
14 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
15 |
+
*/
|
16 |
+
-->
|
17 |
+
<layout version="0.1.0">
|
18 |
+
<internalseolinking_adminhtml_internalseolinking_index>
|
19 |
+
<reference name="content">
|
20 |
+
<block type="internalseolinking/adminhtml_internalseolinking" name="internalseolinking" />
|
21 |
+
</reference>
|
22 |
+
</internalseolinking_adminhtml_internalseolinking_index>
|
23 |
+
|
24 |
+
<internalseolinking_adminhtml_internalseolinking_edit>
|
25 |
+
<reference name="content">
|
26 |
+
<block type="internalseolinking/adminhtml_internalseolinking_edit" name="internalseolinking_edit"></block>
|
27 |
+
</reference>
|
28 |
+
<reference name="left">
|
29 |
+
<block type="internalseolinking/adminhtml_internalseolinking_edit_tabs" name="internalseolinking_tabs"></block>
|
30 |
+
</reference>
|
31 |
+
</internalseolinking_adminhtml_internalseolinking_edit>
|
32 |
+
</layout>
|
app/etc/modules/Ikantam_Internalseolinking.xml
ADDED
@@ -0,0 +1,27 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<!--
|
3 |
+
/**
|
4 |
+
* iKantam
|
5 |
+
*
|
6 |
+
* NOTICE OF LICENSE
|
7 |
+
*
|
8 |
+
* This source file is subject to the Open Software License (OSL 3.0)
|
9 |
+
* that is bundled with this package in the file LICENSE.txt.
|
10 |
+
* It is also available through the world-wide-web at this URL:
|
11 |
+
* http://opensource.org/licenses/osl-3.0.php
|
12 |
+
*
|
13 |
+
* @category Ikantam
|
14 |
+
* @package Ikantam_Internalseolinking
|
15 |
+
* @copyright Copyright (c) 2012 iKantam LLC (http://www.ikantam.com)
|
16 |
+
* @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0)
|
17 |
+
*/
|
18 |
+
-->
|
19 |
+
<config>
|
20 |
+
<modules>
|
21 |
+
<Ikantam_Internalseolinking>
|
22 |
+
<active>true</active>
|
23 |
+
<codePool>community</codePool>
|
24 |
+
<depends />
|
25 |
+
</Ikantam_Internalseolinking>
|
26 |
+
</modules>
|
27 |
+
</config>
|
app/locale/en_US/Ikantam_Internalseolinking.csv
ADDED
@@ -0,0 +1,39 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
"iKantam","iKantam"
|
2 |
+
"Internal SEO Linking","Internal SEO Linking"
|
3 |
+
"iKantam - Internal SEO Linking","iKantam - Internal SEO Linking"
|
4 |
+
"Module Options","Module Options"
|
5 |
+
"Enabled: ","Enabled: "
|
6 |
+
"Processing Options","Processing Options"
|
7 |
+
"Max # of replacements per page: ","Max # of replacements per page: "
|
8 |
+
"Zero or empty for no limit","Zero or empty for no limit"
|
9 |
+
"Home page: ","Home page: "
|
10 |
+
"Process home page","Process home page"
|
11 |
+
"CMS pages: ","CMS pages: "
|
12 |
+
"Process CMS pages","Process CMS pages"
|
13 |
+
"Product descriptions: ","Product descriptions: "
|
14 |
+
"Process product descriptions",""Process product descriptions"
|
15 |
+
"Category descriptions: ","Category descriptions: "
|
16 |
+
"Process category descriptions","Process category descriptions"
|
17 |
+
"Internal SEO Linking Manager","Internal SEO Linking Manager"
|
18 |
+
"Add New Record","Add New Record"
|
19 |
+
"ID","ID"
|
20 |
+
"Keywords","Keywords"
|
21 |
+
"URL","URL"
|
22 |
+
"Title","Title"
|
23 |
+
"Enabled","Enabled"
|
24 |
+
"No","No"
|
25 |
+
"Yes","Yes"
|
26 |
+
"Record Information","Record Information"
|
27 |
+
"Make it Bold","Make it Bold"
|
28 |
+
"Use Italics","Use Italics"
|
29 |
+
"Wrong Internal SEO Link was specified","Wrong Internal SEO Link was specified"
|
30 |
+
"New Internal SEO Link","New Internal SEO Link"
|
31 |
+
"Internal SEO Link was successfully saved","Internal SEO Link was successfully saved"
|
32 |
+
"The Internal SEO Link has been deleted","The Internal SEO Link has been deleted"
|
33 |
+
"Unable to find an Internal SEO Link to delete","Unable to find an Internal SEO Link to delete"
|
34 |
+
"Save Record","Save Record"
|
35 |
+
"Delete Record","Delete Record"
|
36 |
+
"New Record","New Record"
|
37 |
+
"Edit Record #%s","Edit Record #%s"
|
38 |
+
"Exception list: ","Exception list: "
|
39 |
+
"List URL's (comma separated) that should be excluded from the extension actions","List URL's (comma separated) that should be excluded from the extension actions"
|
package.xml
ADDED
@@ -0,0 +1,37 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0"?>
|
2 |
+
<package>
|
3 |
+
<name>iKantam_Internal_SEO_Linking</name>
|
4 |
+
<version>0.1.0</version>
|
5 |
+
<stability>stable</stability>
|
6 |
+
<license uri="http://opensource.org/licenses/osl-3.0.php">Open Software License (OSL) v3.0</license>
|
7 |
+
<channel>community</channel>
|
8 |
+
<extends/>
|
9 |
+
<summary>Internal SEO Linking Extension by iKantam</summary>
|
10 |
+
<description><h2>Why do you require this extension: </h2>
|
11 |
+
<p>This free extension provides a number of benefits to improve your search engine rankings with no money spent. Actually it provides you with free SEO services.</p>
|
12 |
+
<p>Wisely targeting a limited number of keywords you will be able to observe search engine rankings improved over a short period of time. So, the reasons why you should consider installing this extension:</p>
|
13 |
+
<ul>
|
14 |
+
<li>It is free</li>
|
15 |
+
<li>It improves your search engine rankings (Google, Bing, Yahoo, etc.)</li>
|
16 |
+
<li>It provides you with free SEO services</li>
|
17 |
+
<li>It improves your visitor’s experience with better interlinking your store pages</li>
|
18 |
+
</ul>
|
19 |
+
<h2>How it works:</h2>
|
20 |
+
<p>You decide what pages (category, product, etc.) require link value passed and when they require it (say, this month you need to promote new products or products with high margin) and distribute this value with 100% control on your side.</p>
|
21 |
+
<p>Do you happen to have aHeadWorks blog extension installed? Then our extension is a must as you can turn your blog posts into a valuable source of link juice – blog content is likely to attract external links and our extension allows this external links weight flow to your store product and category pages…</p>
|
22 |
+
<h2>Extension features include: </h2>
|
23 |
+
<ul>
|
24 |
+
<li>Add selected keywords</li>
|
25 |
+
<li>Add defined anchor texts</li>
|
26 |
+
<li>Add defined URL’s</li>
|
27 |
+
<li>Define replace limits</li>
|
28 |
+
<li>Define what pages to enable for the extension (home page, CMS, category or product (product description) pages)</li>
|
29 |
+
</ul></description>
|
30 |
+
<notes>First Stable Release</notes>
|
31 |
+
<authors><author><name>iKantam LLC</name><user>iKantam_</user><email>support@ikantam.com</email></author></authors>
|
32 |
+
<date>2012-05-30</date>
|
33 |
+
<time>14:38:20</time>
|
34 |
+
<contents><target name="magecommunity"><dir name="Ikantam"><dir name="Internalseolinking"><dir name="Block"><dir name="Adminhtml"><dir name="Internalseolinking"><dir name="Edit"><file name="Form.php" hash="2a5672206af629c12f1a836c718e092a"/><dir name="Tab"><file name="Form.php" hash="77e25c6a8ff0524c52aa8349b0018e95"/></dir><file name="Tabs.php" hash="7b2196deb6a4206e30a120f5c1385bee"/></dir><file name="Edit.php" hash="3f917f5ad0299a0d811a1f5773335492"/><file name="Grid.php" hash="8c600e389d67e2ca22dff3ef318d6196"/></dir><file name="Internalseolinking.php" hash="2f3bc667cf65df2a6d2b0b2d83e83d52"/></dir></dir><dir name="Helper"><file name="Data.php" hash="12c8f5780d7db445d60e1af27d6b05d1"/></dir><dir name="Model"><file name="Internalseolinking.php" hash="d4e08f9f126f06eb21f985cf70c46c7e"/><file name="Observer.php" hash="61b2e1e43ed6ed54a5d3177c92d5ebca"/><dir name="Resource"><dir name="Internalseolinking"><file name="Collection.php" hash="2b2cce53ebbda609c1216da98a801517"/></dir><file name="Internalseolinking.php" hash="9cd9994988d5a99555804e2288c4bec6"/><file name="Setup.php" hash="2a516f5cf4a09a7be32bdf7c4177ff97"/></dir><dir name="Template"><file name="Filter.php" hash="77301a8b6a9b2ed4faafef16f226b945"/></dir></dir><dir name="controllers"><dir name="Adminhtml"><file name="InternalseolinkingController.php" hash="dd5603abe96e4c261933569340a37e39"/></dir></dir><dir name="etc"><file name="adminhtml.xml" hash="b5719893bcd60fa118cdaeeb3f4faf7e"/><file name="config.xml" hash="991d356a119bd0d06029ac8968fca430"/><file name="system.xml" hash="8674051bbf7293457d2dd876b3ca0bb6"/></dir><dir name="sql"><dir name="internalseolinking_setup"><file name="mysql4-install-0.1.0.php" hash="306ed2a715dd9c0598e9e1240543bc9b"/></dir></dir></dir></dir></target><target name="mageetc"><dir name="modules"><file name="Ikantam_Internalseolinking.xml" hash="705fed66e2f75fa20a4225419719568b"/></dir></target><target name="magedesign"><dir name="adminhtml"><dir name="default"><dir name="default"><dir name="layout"><file name="internalseolinking.xml" hash="159e4cd95eb62e22d2bf28d6d9bd3fe1"/></dir></dir></dir></dir></target><target name="magelocale"><dir name="en_US"><file name="Ikantam_Internalseolinking.csv" hash="8dd78eaaf57ae746321b76a99a77cb7f"/></dir></target></contents>
|
35 |
+
<compatible/>
|
36 |
+
<dependencies><required><php><min>5.2.0</min><max>6.0.0</max></php></required></dependencies>
|
37 |
+
</package>
|