[IMP] website: add edit robots.txt in settings
task-2091358
This commit is contained in:
@@ -34,6 +34,7 @@
|
||||
'views/ir_attachment_views.xml',
|
||||
'views/res_partner_views.xml',
|
||||
'wizard/base_language_install_views.xml',
|
||||
'wizard/website_robots.xml',
|
||||
],
|
||||
'demo': [
|
||||
'data/website_demo.xml',
|
||||
|
||||
@@ -127,7 +127,7 @@ class Website(Home):
|
||||
fields = country.get_address_fields()
|
||||
return dict(fields=fields, states=[(st.id, st.name, st.code) for st in country.state_ids], phone_code=country.phone_code)
|
||||
|
||||
@http.route(['/robots.txt'], type='http', auth="public")
|
||||
@http.route(['/robots.txt'], type='http', auth="public", website=True)
|
||||
def robots(self, **kwargs):
|
||||
return request.render('website.robots', {'url_root': request.httprequest.url_root}, mimetype='text/plain')
|
||||
|
||||
|
||||
@@ -159,6 +159,16 @@ class ResConfigSettings(models.TransientModel):
|
||||
'res_id': False,
|
||||
}
|
||||
|
||||
def action_open_robots(self):
|
||||
return {
|
||||
'name': _("Robots.txt"),
|
||||
'view_mode': 'form',
|
||||
'res_model': 'website.robots',
|
||||
'type': 'ir.actions.act_window',
|
||||
"views": [[False, "form"]],
|
||||
'target': 'new',
|
||||
}
|
||||
|
||||
def install_theme_on_current_website(self):
|
||||
self.website_id._force()
|
||||
action = self.env.ref('website.theme_install_kanban_action').read()[0]
|
||||
|
||||
@@ -107,6 +107,8 @@ class Website(models.Model):
|
||||
menu_id = fields.Many2one('website.menu', compute='_compute_menu', string='Main Menu')
|
||||
homepage_id = fields.Many2one('website.page', string='Homepage')
|
||||
|
||||
robots_txt = fields.Text('Robots.txt', translate=False, groups='website.group_website_designer')
|
||||
|
||||
def _default_favicon(self):
|
||||
img_path = get_resource_path('web', 'static/src/img/favicon.ico')
|
||||
with tools.file_open(img_path, 'rb') as f:
|
||||
|
||||
@@ -309,6 +309,18 @@
|
||||
<field name="social_default_image" widget="image" class="w-25 mt-2"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-12 col-lg-6 o_setting_box" id="robots_setting">
|
||||
<div class="o_setting_right_pane">
|
||||
<span class="o_form_label">Robots.txt</span>
|
||||
<span class="fa fa-lg fa-globe" title="Values set here are website-specific." groups="website.group_multi_website"/>
|
||||
<div class="text-muted">
|
||||
Tells to search engine crawlers which pages or files the crawler can or can't request from your site
|
||||
</div>
|
||||
<div class="mt8">
|
||||
<button type="object" name="action_open_robots" string="Edit robots.txt" class="btn-link" icon="fa-android"/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<h2>Features</h2>
|
||||
|
||||
@@ -934,6 +934,13 @@
|
||||
<t t-translation="off">
|
||||
User-agent: *
|
||||
Sitemap: <t t-esc="url_root"/>sitemap.xml
|
||||
|
||||
|
||||
##############
|
||||
# custom #
|
||||
##############
|
||||
|
||||
<t t-raw="request.website.sudo().robots_txt" />
|
||||
</t>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -46,6 +46,19 @@
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_arch_only" model="ir.ui.view">
|
||||
<field name="name">website.ir_ui_view.arch_only</field>
|
||||
<field name="model">ir.ui.view</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<sheet>
|
||||
<field name="arch"/>
|
||||
</sheet>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="view_website_form_view_themes_modal" model="ir.ui.view">
|
||||
<field name="name">website.modal.form</field>
|
||||
<field name="model">website</field>
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
|
||||
from . import base_language_install
|
||||
from . import website_robots
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
# -*- encoding: utf-8 -*-
|
||||
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
||||
from odoo import api, fields, models
|
||||
|
||||
|
||||
class WebsiteRobots(models.TransientModel):
|
||||
_name = "website.robots"
|
||||
_description = "Robots.txt Editor"
|
||||
|
||||
content = fields.Text()
|
||||
|
||||
@api.model
|
||||
def default_get(self, fields):
|
||||
defaults = super(WebsiteRobots, self).default_get(fields)
|
||||
defaults['content'] = self.env['website'].get_current_website().robots_txt
|
||||
return defaults
|
||||
|
||||
def action_save(self):
|
||||
self.env['website'].get_current_website().robots_txt = self.content
|
||||
return {'type': 'ir.actions.act_window_close'}
|
||||
@@ -0,0 +1,27 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<odoo>
|
||||
|
||||
<record id="view_edit_robots" model="ir.ui.view">
|
||||
<field name="name">Edit Robots.txt</field>
|
||||
<field name="model">website.robots</field>
|
||||
<field name="arch" type="xml">
|
||||
<form>
|
||||
<field name="content"/>
|
||||
<small>
|
||||
<a role="button" class="btn btn-link" target="_blank" href="https://www.google.com/webmasters/tools/robots-testing-tool">
|
||||
> Test your robots.txt with Google
|
||||
</a>
|
||||
<br/><br/>
|
||||
Example of rule:<br/>
|
||||
<code class='ml-4'>Disallow: /web/login</code><br/>
|
||||
<code class='ml-4'>Allow: *</code>
|
||||
</small>
|
||||
<footer>
|
||||
<button string="Save" name="action_save" type="object" class="oe_highlight"/>
|
||||
<button string="Cancel" class="btn btn-default" special="cancel"/>
|
||||
</footer>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
</odoo>
|
||||
Reference in New Issue
Block a user