在Orchard中升级HelloWorld模块

上文中我们介绍了如何创建一个非常简单的HelloWorld模块。当时HelloWorld模块只是显示了一段在Code中指定的文字。本文将对HelloWorld模块进行升级,让所显示的文字可以在后台维护。为了实现这个功能,我们需要进行以下工作:

1、建立一个数据表,存储这段文字。

2、在Orchard后台中建立一个维护界面,实现编辑显示文字的功能。

3、修改前台代码,将直接在Code中写死的文字改为从数据库中读取。


创建数据库安装文件

在Orchard中提供了一套模块的安装和升级机制。当模块需要用到数据库的时候,Orchard通过一个Migrations.cs文件去创建和更新数据库。在Orchard命令行工具中输入以下命令,即可创建Migrations.cs文件模板。

Codegen datamigration MyCompany.HelloWorld

修改代码如下:


using System;
using System.Collections.Generic;
using System.Data;
using Orchard.ContentManagement.Drivers;
using Orchard.ContentManagement.MetaData;
using Orchard.ContentManagement.MetaData.Builders;
using Orchard.Core.Contents.Extensions;
using Orchard.Data.Migration;

namespace MyCompany.HelloWorld 
{
    /// <summary>
    /// 数据库创建升级文件
    /// </summary>
    public class Migrations : DataMigrationImpl
    {
        /// <summary>
        /// 由于先的一个版本没有数据库所以这个地方空着
        /// </summary>
        /// <returns>返回版本号</returns>
        public int Create()
        {
            return 1;
        }

        /// <summary>
        /// 升级模块,创建一个数据表存储HelloWorld模块所需要显示的文字
        /// </summary>
        /// <returns>返回版本号</returns>
        public int UpdateFrom1()
        {
            // 创建存储HelloWorld文字的数据库
            SchemaBuilder.CreateTable("TextRecord", table => table
                .Column<int>("Id", column => column.PrimaryKey().Identity())    //定义一个Id键
                .Column<string>("Content", column => column.WithLength(200))    //定义一个内容字段,长度200
            );

            return 2;
        }
    }

这样我们再次登陆管理后台的时候会有升级模块的提示

升级模块的提示

点击Update即可升级模块,在数据库中就可以看见我们刚刚创建的表了。

数据库中就可以看见我们刚刚创建的表

如果我们以后还需升级这个HelloWorld模块,只用在Migrations.cs文件中添加一个UpdateFrom2方法返回3即可,后续还有升级就以此类推。 


创建数据实体及业务逻辑层代码

在Orchard中数据实体的命名规则通常是:实体名+Record构成。遵循此规则我们在模块目录下的Models目录中添加一个TextRecord.cs文件,代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Orchard.ContentManagement.Records;
using Orchard.ContentManagement;
using System.ComponentModel.DataAnnotations;

namespace MyCompany.HelloWorld.Models
{
    public class TextRecord
    {
        public virtual int Id { get; set; }
        public virtual string Content { get; set; }
    }

在Orchard中是通过Nhibernate进行数据库操作的,但是我们在进行模块开发的时候并不需要直接使用Nhibernate,Orchard对其进行了封装。我们只需要通过IRepository<T>接口就可以对相应实体T所对应的数据表进行增、删、改、查的操作了。另外Orchard中的对象实例化,大多都是通过依赖注入去完成的。所以我们需要创建业务逻辑层对象的时候需要首先定义其接口。这样我们在使用该业务对象的时候就直接使用接口即可,Orchard会自动找到相应的类并实例化。

首先在模块目录中创建一个Services目录来存放业务逻辑层代码,然后添加一个ITextService.cs文件,输入以下代码来定义一个接口:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Orchard;
using MyCompany.HelloWorld.Models;

namespace MyCompany.HelloWorld.Services
{
    /// <summary>
    /// 定义业务层接口(为了实现依赖注入还需继承IDependency接口)
    /// </summary>
    public interface ITextService : IDependency
    {
        /// <summary>
        /// 这里不考虑多条数据的情况,仅默认获取第一条数据
        /// </summary>
        /// <returns></returns>
        TextRecord GetText();

        /// <summary>
        /// 更新数据
        /// </summary>
        /// <param name="content"></param>
        /// <returns></returns>
        TextRecord UpdateText(string content);
    }

再在Services目录中添加一个TextService.cs文件,输入以下代码来实现此接口:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using JetBrains.Annotations;
using Orchard.Data;
using MyCompany.HelloWorld.Models;

namespace MyCompany.HelloWorld.Services
{
    [UsedImplicitly]
    public class TextService : ITextService
    {
        /// <summary>
        /// IRepository可以把它理解为数据访问层对象,它提供了相应实体的增删改查操作。
        /// </summary>
        private readonly IRepository<TextRecord> _textRepository;

        public TextService(IRepository<TextRecord> textRepository)
        {
            _textRepository = textRepository;
        }

        #region ITextService 成员

        public TextRecord GetText()
        {
            return _textRepository.Table.FirstOrDefault();
        }

        public TextRecord UpdateText(string content)
        {
            var result = GetText();
            if (result == null)
            {
                result = new TextRecord { Content = content };
                _textRepository.Create(result);
            }
            else
            {
                result.Content = content;
                _textRepository.Update(result);
            }
            return result;
        }

        #endregion
    }

创建管理后台界面

在Orchard中如果需要在后台添加一个维护界面,需要通过添加一个AdminMenu.cs文件来实现。这个文件可以定义相应模块所拥有的菜单和对应的路由。AdminMenu.cs的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Orchard.UI.Navigation;
using Orchard.Security;
using Orchard.Localization;

namespace MyCompany.HelloWorld
{
    public class AdminMenu : INavigationProvider
    {
        public Localizer T { get; set; }

        #region INavigationProvider 成员

        /// <summary>
        /// 指定这个菜单是一个管理菜单
        /// </summary>
        public string MenuName
        {
            get { return "admin"; }
        }

        public void GetNavigation(NavigationBuilder builder)
        {
            builder.AddImageSet("helloworld")       //设置菜单图标(Orchard中默认约定调用Styles目录下的menu.xxxxxx-admin.css样式文件来显示菜单前面的图标)
                .Add(
                    T("Hello World"),               //菜单文本
                    "5",                            //菜单位置(Orchard会根据这个值对菜单进行排序)
                    menu => menu.Action("Index", "Admin", new { area = "MyCompany.HelloWorld" })    //定义菜单所执行的路由
                 );
        }

        #endregion
    }

此外我们还需要添加这个维护界面所对应的Controller、View以及View对应的ViewModel。这些都是一些MVC的基本知识,在上一篇的HelloWord模块中已有介绍,在此就不重复贴代码了。大家可以下载本文示例代码查看。另外修改前台Controller代码也不赘述。


使用升级后的HelloWorld模块

首先,进入管理后台,我们就可以看见“Hello World”的管理菜单,点击即可进入HelloWorld界面。

HelloWorld界面

保存文字,还是在前台访问 /HelloWorld 地址,即可看见效果。

前台访问 /HelloWorld 地址

本文示例下载:点击这里


  • Billige Nacho Trøjer Salg said

    Greetings! I know this is kinda off topic but I'd
    figured I'd ask. Would you be interested in exchanging links or maybe
    guest authoring a blog post or vice-versa? My site covers a lot of the same topics
    as yours and I feel we could greatly benefit from each other.
    If you're interested feel free to send me an email. I look forward to
    hearing from you! Great blog by the way! Billige Nacho
    Trøjer Salg

  • Liverpool Drakt said

    I know this if off topic but I'm looking into
    starting my own weblog and was curious what all is required to
    get set up? I'm assuming having a blog like yours would cost
    a pretty penny? I'm not very internet smart so I'm not 100% sure.

    Any tips or advice would be greatly appreciated.
    Appreciate it Liverpool Drakt

  • Maglia atletico madrid said

    Hi I am so grateful I found your webpage, I really found
    you by mistake, while I was searching on Aol for something else, Nonetheless I am here now and would just
    like to say many thanks for a incredible post and a all round exciting blog (I
    also love the theme/design), I don’t have time to browse it all at the minute but I
    have saved it and also added your RSS feeds, so when I have time I will be back to read
    a great deal more, Please do keep up the great b.
    Maglia atletico madrid

  • ig said

    I'm extremely inspired along with your writing abilities
    and also with the layout on your weblog. Is this a paid subject matter or did
    you modify it yourself? Anyway keep up the excellent
    quality writing, it's uncommon to look a nice weblog like this one today..

  • Juliann said

    Hello there! I know this is kind of off topic but I was wondering
    which blog platform are you using for this website?
    I'm getting fed up of Wordpress because I've had issues with hackers and I'm looking at options for another platform.
    I would be fantastic if you could point me in the direction of a good platform.

  • Hortense said

    I'm not sure where you are getting your info, but good topic.

    I needs to spend some time learning more or understanding more.
    Thanks for great information I was looking for this
    information for my mission.

  • Tiffiny said

    First off I want to say excellent blog! I had a quick question in which I'd like to ask if
    you don't mind. I was curious to know how you center yourself and clear your thoughts before writing.
    I have had a hard time clearing my mind in getting my thoughts out there.

    I do take pleasure in writing however it just seems like the first 10 to 15 minutes
    are generally lost just trying to figure
    out how to begin. Any ideas or hints? Appreciate it!

  • Lurlene said

    Thanks a lot for sharing this with all people you really realize
    what you're speaking approximately! Bookmarked. Please additionally talk over with my
    web site =). We could have a link exchange contract among us

  • Joy said

    I am really inspired along with your writing abilities and
    also with the structure in your weblog. Is that this a paid
    theme or did you modify it your self? Either way keep up
    the excellent quality writing, it's rare to peer a great weblog like this one these days..

  • Kisha said

    We're a group of volunteers and starting a new scheme in our
    community. Your web site provided us with valuable info to work on. You have done an impressive job and
    our entire community will be thankful to you.

  • Sunny said

    I believe what you wrote was very reasonable. However, think about this,
    what if you were to create a killer post title?
    I am not saying your information isn't good., but what if you added a
    title to possibly grab folk's attention? I mean 在Orchard中升级HelloWorld模块-orchard中文CMS系统 is a little plain. You
    might look at Yahoo's front page and note how they create article titles to grab people
    interested. You might add a video or a related
    pic or two to grab readers interested about what you've written. Just my opinion,
    it could bring your blog a little bit more interesting.

  • Gavin said

    Hi there! Would you mind if I share your blog with my facebook group?

    There's a lot of folks that I think would really enjoy your content.
    Please let me know. Thank you

  • Bethany said

    This is the perfect site for anyone who really wants to understand this
    topic. You know so much its almost tough to argue with you
    (not that I actually will need to…HaHa). You definitely put a fresh spin on a topic which
    has been written about for many years. Great stuff, just wonderful!

  • Agueda said

    Hi there would you mind stating which blog platform you're working with?
    I'm looking to start my own blog in the near future but
    I'm having a tough time choosing between BlogEngine/Wordpress/B2evolution and Drupal.
    The reason I ask is because your layout seems different then most blogs and I'm looking for
    something completely unique. P.S Sorry for getting off-topic
    but I had to ask!

  • Abbey said

    I'm extremely impressed with your writing skills as well as with the layout on your weblog.
    Is this a paid theme or did you customize it yourself?
    Either way keep up the excellent quality writing, it is rare to see a nice blog like this one these days.

  • Elena said

    I've read some good stuff here. Certainly worth bookmarking for revisiting.
    I surprise how a lot attempt you put to create this kind
    of excellent informative web site.

  • Marisol said

    Hey there! I understand this is sort of off-topic however I had
    to ask. Does running a well-established website such as yours require a massive amount work?
    I am completely new to operating a blog but I do write in my
    diary every day. I'd like to start a blog so I can easily share my
    personal experience and views online. Please let me know if
    you have any ideas or tips for brand new aspiring blog owners.

    Appreciate it!

  • Romaine said

    Wow, incredible blog layout! How long have you been blogging for?
    you make blogging glance easy. The full look of your
    site is wonderful, let alone the content!

  • Salvador said

    Howdy! Quick question that's completely off topic.
    Do you know how to make your site mobile friendly?

    My web site looks weird when viewing from my iphone 4.
    I'm trying to find a theme or plugin that might be able to resolve this issue.
    If you have any suggestions, please share. Appreciate it!

  • Carson said

    Generally I don't learn article on blogs, however I would like to say that this write-up very pressured
    me to try and do it! Your writing taste has been amazed
    me. Thanks, very great article.

  • Tiffiny said

    What i do not realize is in fact how you're now not actually a lot more
    neatly-appreciated than you may be now. You are so intelligent.
    You understand thus considerably relating to this subject, produced
    me personally consider it from numerous varied angles.

    Its like women and men aren't interested unless
    it's one thing to accomplish with Lady gaga! Your individual stuffs great.
    Always take care of it up!

  • Carmela said

    Heya i am for the first time here. I came across this board and I find
    It really useful & it helped me out a lot.
    I hope to give something back and help others like you helped me.

  • Danial said

    whoah this blog is excellent i like studying your
    articles. Stay up the good work! You already know, many persons are
    looking round for this information, you can help them greatly.

  • Margart said

    Hi, i read your blog from time to time and i own a similar one and
    i was just wondering if you get a lot of spam remarks?

    If so how do you reduce it, any plugin or anything you can suggest?
    I get so much lately it's driving me crazy so any assistance is very much appreciated.

  • Dorothy said

    Hi! This post could not be written any better! Reading through this post
    reminds me of my good old room mate! He always
    kept chatting about this. I will forward this article to
    him. Fairly certain he will have a good read.
    Thanks for sharing!

  • Kevin said

    Hi, i believe that i noticed you visited my weblog thus i came to return the want?.I'm trying to to find issues to enhance my website!I guess its good enough to use a few of your concepts!!

  • Humberto said

    Have you ever considered writing an ebook or guest authoring on other websites?
    I have a blog centered on the same information you discuss and would love to have you share some
    stories/information. I know my readers would enjoy your work.
    If you're even remotely interested, feel free to shoot me an email.

  • Ian said

    I blog often and I seriously thank you for your
    content. This article has really peaked my interest.

    I'm going to book mark your site and keep checking for new details about once a
    week. I opted in for your RSS feed as well.

  • Donna said

    Hi there! I just wanted to ask if you ever have
    any issues with hackers? My last blog (wordpress) was hacked and I ended up
    losing many months of hard work due to no back up.
    Do you have any methods to protect against hackers?

  • Aidan said

    I think what you wrote made a ton of sense. But, think on this,
    what if you added a little content? I am not suggesting your information isn't
    good, however what if you added something that grabbed folk's attention? I mean 在Orchard中升级HelloWorld模块-orchard中文CMS系统 is a little vanilla.
    You might look at Yahoo's front page and note how they create news titles to grab people to click.
    You might add a related video or a related pic
    or two to grab people excited about everything've got to say.
    Just my opinion, it might bring your blog a little bit more interesting.

  • Lance said

    I seriously love your website.. Very nice colors & theme.
    Did you develop this web site yourself? Please
    reply back as I'm trying to create my own blog and would like to know where you got
    this from or exactly what the theme is named. Thank you!

  • Constance said

    Thanks for the marvelous posting! I quite enjoyed reading it, you could be a great author.

    I will remember to bookmark your blog and will
    eventually come back sometime soon. I want to encourage you
    to definitely continue your great job, have a nice day!

  • Salvatore said

    Hello there, just became alert to your blog through Google, and found that it is really informative.
    I'm going to watch out for brussels. I will be grateful if you continue this
    in future. Lots of people will be benefited from your writing.
    Cheers!

  • Laurinda said

    Hey I am so delighted I found your webpage, I really found
    you by accident, while I was researching on Aol for something else, Regardless I
    am here now and would just like to say cheers for a tremendous
    post and a all round interesting blog (I also love the theme/design), I don't have time to go through
    it all at the minute but I have book-marked it and also added in your RSS feeds, so when I have time I will be back to read a lot more,
    Please do keep up the excellent work.

  • Shelly said

    I loved as much as you'll receive carried out right here.

    The sketch is attractive, your authored subject matter stylish.
    nonetheless, you command get bought an impatience over that
    you wish be delivering the following. unwell unquestionably come further formerly again as exactly the same nearly very often inside case you shield this
    hike.

  • Josefa said

    Oh my goodness! Impressive article dude! Thank you so much,
    However I am encountering issues with your RSS. I don't understand why I can't join it.

    Is there anybody getting identical RSS issues? Anyone that
    knows the answer can you kindly respond? Thanks!!

  • Louanne said

    Thank you for another magnificent article. The place else
    may just anyone get that type of info in such an ideal approach of writing?
    I have a presentation next week, and I am at the search for such info.

  • Junko said

    Fantastic goods from you, man. I have understand your stuff previous to
    and you're just extremely magnificent. I
    really like what you've acquired here, really like what you are saying and the way in which
    you say it. You make it entertaining and you still take care of to keep it wise.
    I can not wait to read much more from you.
    This is actually a terrific web site.

  • Florida said

    I’m not that much of a internet reader to be honest but
    your blogs really nice, keep it up! I'll go ahead and
    bookmark your site to come back later. All the best

  • Bernadette said

    We are a group of volunteers and starting a new scheme in our community.
    Your site offered us with valuable information to work on. You have done an impressive job and our entire community will be grateful to you.

  • Mckinley said

    My programmer is trying to persuade me to move to .net
    from PHP. I have always disliked the idea because of the expenses.
    But he's tryiong none the less. I've been using Movable-type on several websites for about a year and am worried about switching to
    another platform. I have heard very good things
    about blogengine.net. Is there a way I can import all my wordpress posts
    into it? Any kind of help would be really appreciated!

  • Noella said

    Have you ever considered writing an ebook or guest authoring on other websites?
    I have a blog based upon on the same topics you discuss
    and would love to have you share some stories/information. I know my
    audience would enjoy your work. If you're even remotely interested, feel free to send me an e mail.

  • Sadie said

    Hi there! I could have sworn I've been to this
    website before but after checking through some of the post I
    realized it's new to me. Anyways, I'm definitely delighted I found
    it and I'll be bookmarking and checking back often!

  • Antoinette said

    Howdy! I'm at work surfing around your blog from my new apple iphone!
    Just wanted to say I love reading through your blog and look forward to all your posts!
    Carry on the outstanding work!

  • Bridgett said

    Great work! This is the kind of information that are supposed to be shared around the web.

    Shame on Google for no longer positioning this put up higher!
    Come on over and talk over with my website . Thank you =)

  • Asa said

    My brother suggested I might like this blog. He was totally right.

    This post actually made my day. You can not imagine simply how much time I had spent for this information! Thanks!

  • Marianne said

    Its like you read my mind! You appear to know so much about this, like you wrote the book in it or something.
    I think that you can do with some pics to drive the message home a bit, but other than that, this is
    great blog. A fantastic read. I will definitely be back.

  • Fredericka said

    Have you ever thought about including a little bit more than just your articles?
    I mean, what you say is important and everything. Nevertheless imagine if you added some great graphics or video clips to give your posts more, "pop"!
    Your content is excellent but with pics and videos, this website could undeniably be
    one of the very best in its field. Amazing blog!

  • Randell said

    I'm amazed, I have to admit. Rarely do I encounter a blog that's equally educative and
    interesting, and without a doubt, you've hit the nail on the head.
    The problem is something which too few folks are speaking intelligently about.
    I'm very happy I came across this during my hunt for something regarding
    this.

  • Kellye said

    My brother suggested I may like this web site. He
    was entirely right. This submit actually made my day.
    You cann't consider just how a lot time I had spent for this information! Thank you!

  • Penney said

    Link exchange is nothing else but it is just placing the other person's weblog link
    on your page at suitable place and other person will also do
    same in support of you.

  • Patricia said

    Generally I do not learn article on blogs, but I wish to say that this write-up very compelled me to take a look at and do so!
    Your writing taste has been amazed me. Thank you, very great post.

  • Caroline said

    It's actually very complex in this busy life to listen news on Television, thus I
    only use world wide web for that reason, and take the newest information.

  • Jude said

    This is really interesting, You're a very skilled blogger.
    I have joined your feed and look forward to seeking more of your fantastic post.
    Also, I've shared your web site in my social networks!

  • Diane said

    Great post however , I was wondering if you could write a litte more on this topic?

    I'd be very grateful if you could elaborate a little bit more.
    Many thanks!

  • Veola said

    I was curious if you ever thought of changing the page layout of
    your blog? Its very well written; I love what youve got to say.

    But maybe you could a little more in the way of content so people could connect with it better.

    Youve got an awful lot of text for only having one or
    2 images. Maybe you could space it out better?

  • Gay said

    That is a good tip particularly to those new to the blogosphere.

    Short but very accurate info… Many thanks for sharing
    this one. A must read article!

  • Marcella said

    Thanks a lot for sharing this with all folks you actually recognise what you're speaking
    about! Bookmarked. Kindly also seek advice from my web site
    =). We may have a link trade contract between us

  • Amado said

    magnificent issues altogether, you simply won a logo new reader.

    What may you suggest in regards to your publish that you just made a
    few days ago? Any positive?

  • Lorri said

    Thanks for your marvelous posting! I genuinely enjoyed reading it,
    you will be a great author.I will always bookmark your blog and will often come back someday.
    I want to encourage one to continue your great job, have a nice
    holiday weekend!

  • Rosita said

    fantastic publish, very informative. I ponder
    why the other experts of this sector don't realize this. You should proceed your writing.
    I'm sure, you have a great readers' base already!

  • Maximilian said

    It's actually a cool and helpful piece of info.
    I am happy that you shared this useful information with us.
    Please stay us informed like this. Thank you for sharing.

  • Bella said

    Wonderful beat ! I would like to apprentice while you amend your web site,
    how can i subscribe for a blog site? The account
    aided me a acceptable deal. I had been a little bit acquainted of this your
    broadcast provided bright clear concept

  • Olga said

    Thanks , I've recently been searching for info about this topic for ages and
    yours is the greatest I have found out so far. However, what about the conclusion? Are
    you positive concerning the supply?

  • Mercedes said

    I am curious to find out what blog platform you have been working with?

    I'm experiencing some minor security problems with my latest website and I would like to find
    something more risk-free. Do you have any suggestions?

  • Janell said

    Hello my loved one! I want to say that this post is awesome,
    nice written and come with almost all vital infos. I'd like to
    look extra posts like this .

  • Guadalupe said

    Great blog! Do you have any suggestions for aspiring writers?
    I'm planning to start my own site soon but I'm a little lost on everything.
    Would you propose starting with a free platform like Wordpress or go for a paid option? There are so many
    choices out there that I'm totally confused .. Any suggestions?
    Thank you!

  • Elijah said

    Simply wish to say your article is as amazing. The clarity in your publish is simply spectacular and that i can suppose you are knowledgeable on this subject.
    Fine with your permission allow me to grab your feed to stay updated with impending post.
    Thank you a million and please carry on the rewarding work.

  • Bernardo said

    Hello! I know this is kinda off topic however ,
    I'd figured I'd ask. Would you be interested in exchanging links or maybe
    guest authoring a blog article or vice-versa?
    My website addresses a lot of the same subjects as yours and I think we could
    greatly benefit from each other. If you happen to be interested feel free to shoot
    me an e-mail. I look forward to hearing from you! Great blog by the way!

  • Angelica said

    Aw, this was an incredibly good post. Taking the
    time and actual effort to produce a superb article… but what can I say… I hesitate a whole lot and never seem
    to get nearly anything done.

  • Richard said

    Have you ever considered creating an ebook or guest authoring on other sites?
    I have a blog centered on the same subjects you discuss and would love to have you share some stories/information. I
    know my subscribers would appreciate your work. If you are even remotely interested, feel free to shoot me an email.

  • Chet said

    When I initially commented I clicked the "Notify me when new comments are added" checkbox and now each time a
    comment is added I get three e-mails with the same comment.
    Is there any way you can remove me from that service?
    Appreciate it!

  • Chelsea said

    Greate article. Keep posting such kind of info on your
    page. Im really impressed by your blog.
    Hi there, You've done an excellent job. I'll
    definitely digg it and in my opinion suggest to my friends.
    I'm sure they will be benefited from this site.

  • Rebbeca said

    You can certainly see your enthusiasm within the work you write.
    The arena hopes for even more passionate writers such as
    you who are not afraid to mention how they believe.
    At all times go after your heart.

  • Hector said

    Hey are using Wordpress for your blog platform? I'm new
    to the blog world but I'm trying to get started and set up my own. Do you require
    any html coding knowledge to make your own blog?
    Any help would be really appreciated!

  • Charmain said

    you're really a good webmaster. The site loading
    velocity is amazing. It kind of feels that you are doing any unique trick.
    Also, The contents are masterwork. you have performed a wonderful task on this
    matter!

  • Robyn said

    I have been surfing on-line more than 3 hours lately, but I never found any
    attention-grabbing article like yours. It is lovely worth sufficient
    for me. In my opinion, if all web owners and bloggers made just right content as
    you probably did, the net will be a lot more
    useful than ever before.

  • Mary said

    Very good blog! Do you have any tips for aspiring writers?
    I'm planning to start my own blog soon but I'm a little lost
    on everything. Would you recommend starting with a free platform like Wordpress or go for a paid option? There are so many options out there that I'm totally confused ..
    Any ideas? Thank you!

  • Audrey said

    Your style is very unique compared to other folks I have read stuff from.
    Many thanks for posting when you've got the opportunity, Guess I will just
    bookmark this blog.

  • Derick said

    Heya i am for the first time here. I found this board and I find
    It really useful & it helped me out much. I hope to give something back and aid others like you aided me.

  • Shayla said

    Wonderful beat ! I wish to apprentice while you amend your website, how can i subscribe
    for a weblog site? The account helped me a applicable deal.
    I had been tiny bit familiar of this your broadcast
    provided brilliant clear idea

  • Melanie said

    Hey I know this is off topic but I was wondering if you
    knew of any widgets I could add to my blog that automatically tweet my newest twitter updates.
    I've been looking for a plug-in like this for quite some time and was
    hoping maybe you would have some experience with something like this.
    Please let me know if you run into anything.
    I truly enjoy reading your blog and I look forward to your new updates.

  • Patrice said

    Thank you for another fantastic article. Where else could anybody get that kind of information in such a perfect way of writing?
    I have a presentation subsequent week, and I'm on the look for such
    info.

  • Sam said

    Hey there! Do you know if they make any plugins to safeguard against hackers?
    I'm kinda paranoid about losing everything I've worked hard on. Any recommendations?

  • Betsy said

    Thank you for the auspicious writeup. It in fact was a amusement account it.

    Look advanced to more added agreeable from you!

    However, how can we communicate?

  • Katherine said

    Attractive section of content. I just stumbled upon your website and in accession capital to assert
    that I acquire in fact enjoyed account your blog
    posts. Any way I will be subscribing to your feeds and
    even I achievement you access consistently quickly.

  • Porfirio said

    I used to be suggested this blog by my cousin. I am now not certain whether this submit is written by means of him as nobody
    else know such exact approximately my difficulty.
    You're amazing! Thanks!

  • Miriam said

    Hi there, just became aware of your blog through Google,
    and found that it's truly informative. I am gonna watch out for
    brussels. I'll be grateful if you continue this in future.

    Numerous people will be benefited from your writing. Cheers!

  • Anitra said

    I have been browsing on-line more than 3 hours as of late, yet I by no
    means found any interesting article like yours.
    It's pretty price sufficient for me. In my
    view, if all web owners and bloggers made good content material as you did, the web shall be
    a lot more helpful than ever before.

  • Fleta said

    Today, I went to the beachfront with my children. I found a sea
    shell and gave it to my 4 year old daughter and said
    "You can hear the ocean if you put this to your ear."
    She placed the shell to her ear and screamed.
    There was a hermit crab inside and it pinched her ear.
    She never wants to go back! LoL I know this is totally off topic but I had to tell
    someone!

  • Ericka said

    Hey there! Quick question that's completely off topic.
    Do you know how to make your site mobile friendly?

    My site looks weird when browsing from my
    apple iphone. I'm trying to find a theme or plugin that might be able to fix this problem.

    If you have any recommendations, please share. With thanks!

  • Hassan said

    I like the helpful info you provide in your
    articles. I will bookmark your weblog and check again here regularly.
    I am quite sure I will learn plenty of new stuff right here!
    Best of luck for the next!

  • Gertie said

    You are so cool! I do not suppose I've read anything like that before.
    So good to find another person with unique thoughts
    on this issue. Seriously.. thank you for
    starting this up. This site is something that is needed
    on the web, someone with some originality!

  • Jeffrey said

    Greate article. Keep writing such kind of info on your blog.
    Im really impressed by your site.
    Hello there, You have performed a great job. I will definitely digg it and personally recommend to my
    friends. I'm sure they will be benefited from this website.

  • Shanna said

    Wonderful goods from you, man. I have understand your stuff previous to
    and you are just extremely wonderful. I
    really like what you've acquired here, really
    like what you're stating and the way in which you say it.

    You make it enjoyable and you still take care of to keep it wise.

    I can not wait to read far more from you. This is actually a terrific web site.

  • Edith said

    Hello colleagues, how is all, and what you desire to
    say on the topic of this article, in my view its actually remarkable in support of
    me.

  • Melvina said

    Undeniably consider that which you said. Your favorite reason appeared to be at the internet the simplest factor to bear in mind of.
    I say to you, I certainly get annoyed at the same time
    as other folks consider worries that they plainly don't recognise
    about. You managed to hit the nail upon the highest and also defined out the
    whole thing with no need side effect , other people could take a signal.

    Will likely be back to get more. Thanks

  • Lynell said

    Hi are using Wordpress for your blog platform? I'm new to the blog world but I'm trying to get
    started and create my own. Do you require any html coding expertise to make your own blog?
    Any help would be really appreciated!

  • Elke said

    This is the right webpage for anybody who hopes to understand this topic.
    You understand so much its almost hard to argue with you (not
    that I really would want to…HaHa). You definitely put a fresh
    spin on a subject which has been discussed for a long time.
    Wonderful stuff, just great!

  • Emerson said

    Today, I went to the beach front with my kids. I found a sea shell and gave it to
    my 4 year old daughter and said "You can hear the ocean if you put this to your ear." She placed the shell to her ear and screamed.

    There was a hermit crab inside and it pinched her ear. She
    never wants to go back! LoL I know this is completely off topic but I had
    to tell someone!

  • Makayla said

    I got this web site from my buddy who informed me regarding this website and now this time I am visiting
    this web site and reading very informative articles at this place.

  • Margherita said

    Hi, Neat post. There is a problem along with your web site in web explorer, may test this?
    IE still is the marketplace chief and a large component
    of other people will miss your magnificent writing due to this problem.

  • Mai said

    Remarkable things here. I'm very glad to look your post.

    Thank you so much and I am taking a look forward to contact you.
    Will you kindly drop me a e-mail?

  • Polly said

    Whoa! This blog looks exactly like my old one! It's on a completely
    different topic but it has pretty much the
    same page layout and design. Outstanding choice of colors!

  • Cassandra said

    Aw, this was an exceptionally nice post. Finding the time and actual effort to create a really good
    article… but what can I say… I procrastinate a lot and don't
    seem to get anything done.

  • Sheila said

    I loved as much as you will receive carried out right here.
    The sketch is attractive, your authored subject matter stylish.

    nonetheless, you command get bought an impatience over that you wish be
    delivering the following. unwell unquestionably
    come more formerly again as exactly the same nearly very often inside case you shield this hike.

  • Wilmer said

    Hey There. I discovered your blog the usage of msn. This is a
    very neatly written article. I will make sure to bookmark it and return to learn more of
    your useful information. Thank you for the post.

    I'll definitely return.

  • Carson said

    I'm not sure where you're getting your information, but great topic.
    I needs to spend some time learning much more or understanding
    more. Thanks for excellent info I was looking for this info for my mission.

  • Therese said

    The other day, while I was at work, my cousin stole my iphone
    and tested to see if it can survive a thirty foot
    drop, just so she can be a youtube sensation. My
    iPad is now destroyed and she has 83 views.
    I know this is entirely off topic but I had to share it with
    someone!

  • Kristan said

    This is the perfect site for anyone who wishes to understand this topic.

    You know a whole lot its almost hard to argue with you (not that I really would want to…HaHa).
    You certainly put a fresh spin on a subject that has
    been discussed for a long time. Excellent stuff, just wonderful!

  • Porfirio said

    Greetings! This is my first comment here so I just wanted to give
    a quick shout out and tell you I really enjoy reading
    your posts. Can you suggest any other blogs/websites/forums that deal with the
    same topics? Appreciate it!

  • Darin said

    This is really interesting, You are a very skilled blogger.
    I have joined your rss feed and look forward to seeking more of your magnificent post.

    Also, I've shared your web site in my social networks!

  • Jared said

    Its like you learn my mind! You appear to understand so much about this,
    such as you wrote the ebook in it or something. I think that you simply
    can do with some percent to power the message home a bit, however other than that, this is magnificent blog.
    A fantastic read. I'll certainly be back.

  • Hallie said

    Greate pieces. Keep posting such kind of information on your site.
    Im really impressed by it.
    Hey there, You've performed a great job. I'll definitely digg it and for
    my part recommend to my friends. I'm confident they will
    be benefited from this website.

  • Raquel said

    Attractive section of content. I just stumbled upon your web site and in accession capital to assert that I
    get in fact enjoyed account your blog posts. Any way I will
    be subscribing to your feeds and even I achievement you access
    consistently fast.

  • Rolland said

    What's Going down i am new to this, I stumbled upon this I have found It positively useful and it has helped me out loads.
    I am hoping to contribute & aid different customers like
    its helped me. Great job.

  • Zenaida said

    Nice post. I was checking constantly this blog and I am impressed!
    Extremely helpful info particularly the last part :) I care for such
    information much. I was looking for this certain information for a
    very long time. Thank you and best of luck.

  • Trevor said

    Hi, I think your blog could be having internet browser compatibility problems.
    Whenever I take a look at your website in Safari, it looks fine however, if opening in I.E., it has some overlapping issues.
    I merely wanted to provide you with a quick heads up!
    Besides that, wonderful blog!

  • Albert said

    Wow that was odd. I just wrote an really long comment but after I clicked submit my comment didn't show up.
    Grrrr... well I'm not writing all that over again. Regardless,
    just wanted to say excellent blog!

  • Motor Racing free betting bonus said

    Hmm iit seems like your site ate myy first comment (it was extremely long) so I
    guess I'll juet sum it up what I submtted and say, I'm thoroughly
    enjoying your blog. I too amm aan aspiring blog blogger but I'm still
    new to the whole thing. Do youu have any tips for newbiue
    blog writers? I'd genuinely appreciate it.

  • Chase said

    Howdy! Do you know if they make any plugins to help with Search Engine
    Optimization? I'm trying to get my blog to rank for some targeted keywords but I'm not seeing very good results.

    If you know of any please share. Thanks!

  • Lindsay Rosenwald said

    You really make it seem so easy with your presentation but I find this topic to be actually something which I think I would
    never understand. It seems too complicated and extremely broad for me.

    I am looking forward for your next post, I'll try to get the hang of it!

  • Alberto said

    Hi, Neat post. There's a problem with your website in web explorer,
    would test this? IE nonetheless is the marketplace leader and
    a good element of other people will miss your great writing due to
    this problem.

  • Murray said

    I was curious if you ever thought of changing the page layout of your website?
    Its very well written; I love what youve got to say. But maybe you could a little more in the way of content so people could connect with it better.
    Youve got an awful lot of text for only having 1 or two pictures.
    Maybe you could space it out better?

  • hey said

    You really make it seem really easy with your presentation however I to find this matter to be actually something that I feel I would never understand. It sort of feels too complicated and very large for me. I am taking a look forward on your next publish, I will try to get the hold of it!|

Add a Comment