سیاره دروپال

Drupal.org - aggregated feeds in category Planet Drupal
Subscribe to خوراک سیاره دروپال

Drupal Commerce 2 allows to define out of the box multiple checkout flows, allowing to customize according to the order, the product purchased, the customer profile this buying process and modify it accordingly. This is an extremely interesting feature, in that it can simplify as much as necessary this famous checkout flows. Do you sell physical (and therefore with associated delivery) and digital (without delivery) products? In a few clicks you can have two separate checkout flows that will take into account these specificities.

This article is the second in our series on Continuous Integration tools for Drupal 8, which started with CircleCI. This time, we explore Travis CI.

Travis CI is the most well known CI tool for open source projects. Its setup process is straightforward and it offers a lot of flexibility and resources to implement Continuous Integration for any kind of project. In this article we will implement the same set of jobs that we did with CircleCI and then compare both tools.

Resources

This article makes references to the following resources:

Browse the demo project to discover where the CI components are placed, then use the one-line installer to add these components automatically to your project.

The goal

We want to run the following jobs in a Drupal 8 project when someone creates a pull request:

To accomplish the above, we will use the following tools in Travis CI:

  • Drush, Drupal’s command line interface, to perform Drupal-related tasks like installing Drupal or updating the database.
  • Docker Compose, via docker4drupal, to build the environment where Behat tests run.
  • Robo, a PHP task runner, to define a set of tasks for each of the above jobs.

Here is a screenshot of the Travis CI dashboard with the above setup in place:

undefined

Now, let’s see how this has been set up. If you want to dive straight into the code, have a look at the demo Drupal 8 repository.

Setting up Travis CI

Travis CI requires the presence of a .travis.yml file at the root of the repository that dictates how it will build and test the project. I have used this installer that adds the following files:

Additionally, a few dependencies are added via Composer, which are required for the CI jobs.

After adding the above files to the repository, it’s time to give Travis CI access to it. Open https://travis-ci.org and authenticate there with your GitHub account. Next, add the repository at the Travis CI dashboard as shown below:

undefined

That’s it! After this, future changes to the repository should trigger builds at Travis CI. If you create a pull request, you will see a status message like the following one:

undefined Seeing the jobs at work

Here is an excerpt of the .travis.yml file. We are leveraging Travis’ build matrix for spinning up three jobs that run in parallel:

env: matrix: - JOB=job:check-coding-standards - JOB=job:run-unit-tests - JOB=job:run-behat-tests install: - composer --verbose install script: - vendor/bin/robo $JOB

The script section is called three times: one for each value assigned to the $JOB variable. It calls a different Robo task each time. We decided to write the implementation of each job as Robo tasks because:

  • It makes the .travis.yml file easier to read and maintain.
  • It makes the job implementations portable between CI tools.
  • It gives developers an opportunity to run the jobs locally.

If you are curious what a Robo task looks like, here is the implementation of the one that runs Behat tests:

/** * Command to run behat tests. * * @return \Robo\Result * The result of the collection of tasks. */ public function jobRunBehatTests() { $collection = $this->collectionBuilder(); $collection->addTaskList($this->downloadDatabase()); $collection->addTaskList($this->buildEnvironment()); $collection->addTask($this->waitForDrupal()); $collection->addTaskList($this->runUpdatePath()); $collection->addTaskList($this->runBehatTests()); return $collection->run(); } Building the environment with Docker Compose

The build environment task shown above, $this→buildEnvironment(), uses Docker Compose to build a Docker environment where the Drupal site will be configured, the database will be updated, and finally, Behat tests will run.

In contrast with CircleCI, where we define the mix of Docker images that the test environment will use to run the jobs, Travis CI offers two environments (Precise and Trusty) with common pre-installed services. Trusty has everything that we need for checking coding standards or running PHPUnit tests, but Behat tests require more setup which we find easier to manage via Docker Compose.

Here are the contents of the build environment task. For simplicity, we have removed a few unrelated lines:

/** * Builds the Docker environment. * * @return \Robo\Task\Base\Exec[] * An array of tasks. */ protected function buildEnvironment() { $force = true; $tasks = []; $tasks[] = $this->taskFilesystemStack() ->copy('.travis/docker-compose.yml', 'docker-compose.yml', $force); $tasks[] = $this->taskExec('docker-compose pull --parallel'); $tasks[] = $this->taskExec('docker-compose up -d'); return $tasks; }

The above task uses this docker-compose.yml file to build the environment.

Generating and visualizing coverage reports

Travis CI does not support storing artifacts like CircleCI does. Therefore, we need to use a third-party service to host them. Travis documentation suggests either uploading them to an Amazon S3 bucket or using Coveralls, a hosted analysis tool. We chose the latter because it posts a summary in each pull request with a link to the full coverage report.

Setting up Coveralls is straightforward. Start by opening https://coveralls.io and then, after authenticating with your GitHub account, use their browser to find and connect to a repository, like this:

undefined

Next, it is recommended to review the repository settings so we can customize the developer experience:

undefined

With that in place, new pull requests will show a status message with a one-line summary of the coverage report, plus a link to the full details:

undefined

Finally, when we click on Details, we see the following coverage report:

undefined A comparison to CircleCI

CircleCI can do all that Travis CI does with less setup. For example, coverage reports and Behat screenshots can be stored as job artifacts and visualized at the CircleCI dashboard. Additionally, CircleCI’s Command Line Interface gives a chance to developers to debug jobs locally.

Travis CI shines on flexibility: for example, only the Behat job uses Docker Compose to build the environment while the rest of the jobs use the Trusty image. Additionally, there is a huge amount of articles and documentation, which you will surely find helpful when tweaking the jobs to fit your team's needs.

If you liked Travis CI, check out this installer to get started quickly in your Drupal 8 project.

What next?

We aren’t sure about which tool to pick for our next article in this series on CI tools for Drupal 8. Do you have a preference? Do you have feedback on what you’ve found relevant about this article? Please let us know by posting a comment.

Acknowledgements
How-to: Using Drupal-Project to Craft Your Perfect Start State Shannon O'Malley Tue, 04/03/2018 - 23:05

The drupal-project repository is quickly becoming the de facto starter for all Drupal 8 projects. So how can you quickly spin up a new site with Composer and drupal-project? How do you take drupal-project and customize it to suit your particular needs? And, how do you leverage post-install tasks to keep yourself DRY? This February I gave a talk at DrupalCamp Florida where I got into all of these questions.

Categories Articles Drupal

Earlier in this blog, OSTraining's Steve Burge made an excellent introduction to the new Drupal Layout Builder.

Many users have been eagerly expecting this module and it was released in version 8.5.

In this tutorial, you will take a further look at how to work with this module. You will see how to use the Layout Builder to configure:

  • Content types.
  • Nodes.
I was not planning to go to DrupalCon this year due to so many things going on at the company, but with a little delegation effort, I will be able to go.  I would not like to miss this one, to be honest. So here is what I am looking forward to in Nashville.   Meeting new people DrupalCons in the US are the biggest Drupal events, and even if you are an active community member for 11 years like I am, you still see a lot of new faces. Developers are generally more on the introvert side, so you don't see so much intentional networking like on some other events, but don't hesitate to ask the… READ MORE

Drupal community nowadays is huge. Many people create stuff on Drupal.org, on Github, on Gitlab, wherever. Although Drupal.org makes a try to collect all the useful projects related to Drupal there are still some thing that cannot be done.

Drupal 8 uses Composer for package management. You can still install a Drupal 8 site by downloading a tarball, but we're all encouraged to use Composer to download Drupal core and other dependencies and to keep things up to date.

I'm just starting to get my head around how Drupal 8 works, so that I can reach the point where I can build new sites in 8.x rather than 7.x, and in time migrate existing sites over. Composer is part of the learning curve for this.

Blog Category: Drupal Planet

There’s no foolproof way to get an unhackable Drupal site; there could always be an exploit that we don’t know about yet. But there are quite a few ways you can help reduce the risk of getting hacked. Let’s dive into some of the most common ways Drupal sites get hacked, and how to secure your site against these points of entry.

Drupal Security Advisories

One of the most common ways to get hacked is to fall behind on known Drupal Security Advisories. Keeping up to date on the latest advisories is ultimately your first line of defense. 

There are security advisories for both Drupal core and contributed projects with varying levels of security risk for the exploits found. You can sign up for the security email list to make things easier to keep track of. You can do this by logging into your Drupal.org account and editing your user profile. From there you can subscribe to the security newsletter on the newsletters tab. This list will email you soon after Drupal Security Advisories are released to the public, which helps quickly notify you or your team of possible exploits that need to be fixed. 

You can use the Update Status module in Drupal core to see which sites are affected by these advisories. Then add an email address to send Security Alerts to daily or weekly. The Update Status alerts have also notified us in a few cases when the email list was backed up and took longer than it normally would. 

Typically, Drupal core security advisories come out on the third Wednesday of the month unless it’s a highly critical update that needs to be patched sooner. Contrib project security advisories can come out on any given Wednesday. 

Read more
DrupalCamp Ruhr 2018 Recap

Two hundred and fifty people from across Germany and its neighbouring countries gathered in Essen on 17 and 18 March for DrupalCamp Ruhr, an event full of fresh discussions, workshops and presentations.

Josef Dabernig Tue, 03/27/2018 - 08:41

The organizers decided to use the Open Space / Barcamp format that provided attendees with the option to pre-select certain sessions, but which could also be combined spontaneously with ad-hoc sessions that the participants had presented in the kick-off session. This meant that, in contrast to our regular conference experience, each of us got to quickly present our idea and were also able to adapt the camp’s schedule collaboratively before we started.

On each day, we would then agree upon the session plan. I ended up doing a planned session and two spontaneous ones. Before I start to explain what I talked about, I would like to highlight what stood out for me, in terms of discussions and themes at the conference:

Drupal 8 Distributions are ready

The initial panel discussion on distributions was a great moment to hear Distribution Maintainers and Leads talk about NP8, deGov, Thunder, Varbase, Commerce, OpenSocial and the Out of the Box initiative. It was great to see how much progress the distribution space has already made in Drupal 8. Distributions are an excellent way to highlight what Drupal can do and push for reusable, generic solutions. As I had worked 4 years with the epiqo team on Recruiter, one of the first Drupal 7 distributions, this was also a good reminder of the interesting challenges we face when creating products based on Drupal. In addition, the panelists also discussed how to best manage configurations using approaches like Features and Config Split.

Local Communities starting to collaborate

Another highlight was the discussions around aligning Drupal community efforts. The project, Local Community Distribution, was created to combine efforts in order to build and maintain local community websites. Representatives from various country initiatives were brought together, along with neighbouring countries such as France and the Netherlands, to share their codebases in the interim, which can be used as a solid foundation to get these projects off the ground. Details of the discussion can be found in this ticket.

 

Coincidentally, we recently started an initiative to create a new Drupal Switzerland website, so keep an eye on our group’s page or join one of the Zurich Meetups to follow the progress and join the discussion.

Communication moving from Slack to DrupalChat

Over the last few years, a large percentage of instant communication has moved from IRC to Slack because of superior usability. Unfortunately, Slack’s commercial focus limits the community using it - currently most of our channels appear empty due to the fact that Drupal Slack hides old messages. The local communities, therefore, decided to go for DrupalChat.eu as an alternative. If you are interested, follow this issue or join the BOF at DrupalCon NA.

Drupal 8 Initiatives are making progress

In my talk - Drupal 8 Initiatives, I tried to give an overview of the status, history and achievements of the initiatives that are contributing to the Drupal 8 project. It was a great opportunity to highlight how much Drupal 8 has already been evolving over the years as well as to show how any future contributions can be done collaboratively.

In the spontaneous session, we spoke about Agile and Project Management practices as well as the #d8rules initiative.

Keeping an eye on upcoming Drupal events in Europe

Thanks to the DrupalCamp Ruhr team for putting together such a dynamic event!

We are really looking forward to more collaboration and exchanges within the Drupal community during 2018. For those who can’t make it to DrupalCon Nashville, 9-13 April, Europe has you covered. Keep an eye on these events:

As usual, you can also find many more regional events on Drupical and finally, if you are interested in an unconference using the Open Space format, make sure to join us for Agile Lean Europe Zürich 2018, August 22-24.

For more information on DrupalCamp Ruhr, check out the event website, the #dcruhr18 twitter hashtag or find more pictures on our flickr page.

Musings on MidCamp, and how the Drupal Leprechaun got away

As I mentioned in the closing remarks, this year’s MidCamp was a roller coaster ride. And as I said to people in the halls: the actual camp is the easy part; it’s getting there that is the real challenge.

One would think that after five years of planning MidCamp, this would get easier. Sadly, this has not been the case. Our primary challenge year to year is organizer burnout. The core team keeps shrinking and inevitably someone takes on a significant burden to keep camp on course. This year, that was me, though I’m either too stubborn or too stupid to walk away from the project.

Some specific challenges we faced this year:

  • We overreached with the site rebuild, giving us a late start to crucial things like selling sponsorships and opening the call for papers
  • We were $15k below our revenue goals just four weeks before camp
  • We succeeded in finally getting DePaul faculty to underwrite us as an internal event (which would have saved on both venue rental and catering fees) only to find out that we were too far in the process (and then later find out we will forever be an external event)

To stay afloat, we made adjustments:

  • We increased training ticket costs to cover food and training day venue rental
  • We canceled all but coffee and water for session days and the Sunday sprint
  • We cut any rooms not used for sessions and we massaged our schedule and room reservations (DePaul is unique in letting us reserve by the hour versus whole or half day like many other venues)
  • We cut all but limited snacks at the after parties

The extra hours picking up the slack, the repeated bad news, constant fretting over the budget, and all these cuts really made me start to wonder if MidCamp was worth the effort.

I’m at a dozen or more camps each year. The unsolicited MidCamp love I hear at these camps is what keeps me going. And it was also the reason I could not fathom why we were falling apart at the seams. The community seems to think this is a viable camp, but in all other ways, we were not hitting the mark. Which got me thinking this could very well have been the fifth and final MidCamp.

It was with this in mind that I reached out to Twitter with what I call my hat-in-hand tweet. And the community proved, in no uncertain terms, that this camp matters. We hit record numbers of individual sponsors and received over $1,000 in donations, which we’ve never taken before. And sponsors followed with a last-minute show of support.

We had money again, which meant it was time to reverse some of our cuts. Yet the changes we were forced to make had some unforeseen consequences, the most glaring of which was the cavernous emptiness of the main room. This is a model we lifted from DrupalCorn Camp early on and it worked well for a while. But this year it was a colossal fail as people, by and large, did not return to the main room to eat their lunch after grabbing it from the cafeteria, which meant almost no foot traffic for sponsor tables, and a $5,000-per-day room hosting only a few dozen people outside of the keynote, lightning talks, and camp closing.

So with attendee and sponsor feedback, plus diligent head counts of every room every hour (including the main room), we are now armed with actual data instead of anecdotal recollections:

  • The multi-purpose sponsor/bof/keynote room was a bust
  • There was a 33% drop in session attendance from Friday to Saturday (yikes!)
  • And MidCamp—while amazing—was just another camp

It’s time for change. Here is what’s in store for 2019:

  • Condensing all of camp to a single floor of the student center
  • Allowing slightly longer time between sessions
  • Shifting the schedule so that sessions are Thursday and Friday, to address attendance drop-off
  • Adding summits to the training day before camp starts to draw more attendance
  • Curating sprint initiatives and marketing them early, again to draw more attendance
  • Leveraging MidCamp as the onramp to DrupalCon

And that, my friends, brings us to the amazing Druplichaun we revealed for O’MidCamp. To roll camp back a day, we need to push to the following week in 2019, March 20-23. So if you caught sight of the little fella, know that he got away this time, but we anticipate seeing him again in the future.

Feel free to come to Chicago early and watch the river turn green, escape the Chi-rish, and do some fun things with the local community while we ramp up for an all-new MidCamp.

If you made it this far, thanks for reading and consider getting involved! Join the Slack at https://midcamp-slack.herokuapp.com/

See you around,
Kevin Thull
MidCamp 2019 Fearless Leader (among other things)

Culture & Connection Series at DrupalCon brandt Mon, 03/26/2018 - 13:23 Alex Brandt Mar 27, 2018

Join Director of Operations Colleen Carroll for daily discussions on how to foster a unique, empowered remote-first culture.

Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.

Palantir’s Director of Operations, Colleen Carroll, has been helping foster a special culture at Palantir for the past 11 years. At this year’s DrupalCon, she’ll be hosting a short discussion each afternoon at the Palantir booth to share her perspective on cultivating and scaling culture with a remote-first team.

These discussions will be casual in nature, and attendees are encouraged to ask questions.

Discussion topics will include:

  • Tools we use at Palantir to foster and celebrate culture
  • Colleen’s philosophy of bringing open source into HR
  • How to support effective teams through shared principles and empowerment

We encourage anyone looking to learn more about these topics to grab some lunch, and then join us at the Palantir booth (#503) Tuesday, Wednesday, and Thursday from 1:30pm - 2pm.

Where to Find the Palantiri at DrupalCon Nashville brandt Mon, 03/26/2018 - 12:21 Alex Brandt Mar 27, 2018

Palantir is bringing a motley crew of 18 to DrupalCon, and we couldn’t be more excited to see you in Music City.

Stay connected with the latest news on web strategy, design, and development.

Sign up for our newsletter.

It’s finally almost DrupalCon week, and our team is ready to hit it at full force! Here’s what we have on the books so far - won’t you join us?

Media and Publishing Summit

Kick-off your week with Palantir’s Director of Innovation, Ken Rickard, who will be speaking at this year’s Media and Publishing Summit. The summit will address current challenges faced by the media industry and how Drupal can help. Register in advance to attend.

  • Date: Monday, April 9
  • Time: 11:30am - 5pm
Teamwork and Leadership Workshop

The Drupal Community Working Group and the Drupal Association are offering a Teamwork and Leadership Workshop, and both George DeMet and Tiffany Farriss will be helping facilitate. Space is limited, so register soon to attend.

  • Date: Tuesday, April 10
  • Time: 2:00pm - 5:00pm
Culture and Connection Series

Palantir’s Director of Operations, Colleen Carroll, has been helping foster a special culture at Palantir for the past 11 years. She’ll be hosting a small discussion each afternoon at the Palantir booth to share her perspective on cultivating and scaling culture with a remote-first team.

Palantiri Sessions Making Inclusion Happen Through Mentoring by Allison Manley and Michelle Jackson

Learn about Palantir’s pilot program to expose new faces to the Drupal community, something we call the “Inclusion Initiative.”

  • Time: Tuesday at 10:45am
  • Room: 101E
Inclusion in Action BoF led by Ryan Price and friends

Continue the inclusion discussion in a BoF led by one of the Inclusion Initiative’s mentors.

  • Time: Tuesday at 2:15pm
  • Room: 203B
Partnering With Non-Profits to Reach Diverse Audiences BoF led by Julia of GenesysWorks

Curious how to start an inclusion program of your own? Check out this BoF led by one of our non-profit partners.

  • Time: Tuesday at 3:45pm
  • Room: 102A
Manage Yourself First by Ken Rickard

Learn about a few self-training tools that you can adopt to help you manage all of the different factors of technical leadership.

  • Time: Wednesday at 10:45am
  • Room: 207D
Community Convos: Camp Organizing by Avi Schwab and friends

Join a discussion on Drupal camp logistics.

  • Time: Wednesday at 12:35pm
  • Room: 101E
Community Convos: Governance Retrospective by George DeMet and friends

The CWG will be leading a retrospective of their process to solicit feedback from the wider community on Drupal governance and facilitating a discussion on how to get more people involved in community governance.

  • Time: Wednesday at 2:15pm
  • Room: 101E
Maintaining a Healthy Work-Life Balance When Working Remotely by Lauren Burroughs, Luke Wertz, and friends

During this moderated panel, the team will discuss some of the common problems with remote work and strategies to be successful when work and home life collide.

  • Time: Wednesday at 3:45pm
  • Room: 101C
Community Convos: Fostering Community Health by George DeMet and friends

This conversation is hosted by the CWG to talk about the Drupal community and the role that the CWG plays in helping to keep it a friendly and welcoming place.

  • Time: Thursday at 10:45am
  • Room: 101E
Trivia Night

Each year Palantir sponsors Thursday night’s Trivia at DrupalCon. We love having the opportunity to end our week on a high note, testing our Drupal knowledge with our community comrades. Come on out to City Winery for some friendly competition, prizes for the winners, and laughs all-around.

  • Time: Thursday, doors open at 8pm
  • Location: City Winery, 609 Lafayette Street
Grab Swag at Booth #503

And of course, don’t forget to stop by our booth (#503) to grab some fresh Palantir swag from Alex and Annie. We’ll have new stickers, new socks, and a special limited edition item that you will just have to come see for yourself.

See you in Music City!

 

We want to make your project a success.

Let's Chat.
In this episode, Matthew Tift talks with Jen Lampton about the Backdrop project, the differences between the Drupal and Backdrop communities, helping people, organizing software communities, and much more.
I’m excited to announce that Michael Meyers has joined the Tag1 team as Managing Director. Michael was one of our very first clients 10 years ago, we’ve worked together on many projects over the years, and we look forward to working even more closely with him now that he’s a part of the Tag1 team. Michael has extensive experience building market leading high-growth technology companies and is particularly well known in the Drupal Community for his role in driving innovation of the Drupal platform. Michael brings over 20 years of experience managing global technology teams building high traffic, high performance mobile and web applications. Tag1 recently celebrated our 10th anniversary, in that time we’ve established ourselves as the leading provider of highly available, scalable, secure, high performance systems and as the organization other agencies and the users of Drupal turn to for help with their most challenging problems. We will be working with Michael to expand on our success to date and to help lead Tag1 into the future. Roots in Success Michael joins Tag1 from Acquia, where he spent the last 5 years on the leadership team as VP of Developer Relations, Developer Marketing, and helped launch the Developer... Read more Jeremy Mon, 03/26/2018 - 08:05

DrupalCon Nashville is coming up and Chromatic will be showing up in full force this year! Here's where to find us.

This is actually quite a common question from our students. They start building their Drupal site. Then they go to work with their blocks or menus.

Then they accidentally disable the "Log in" menu link. There is no "Log in" link displayed on the site anymore. Neither for them nor for their visitors.

In this short tip, you will learn how to login to your Drupal admin page in such situation. 

Digital agencies will sooner or later find themselves in a situation when they will face a project where their resources will be overextended or that the platform won't match the expertise of their in-house team. When situations like that arise, you will probably go out and try to find a remote partner. And that is by no means an easy and straight-forward endeavour. So what are the best ways to work and grow your remote partnerships?  The first step would obviously be to accept and embrace the idea that working with a remote team is a good thing. You keep your agency's workflow going, no… READ MORE

Direct .mp3 file download.

Brooke Candelaria, (htownbrooke), the new Conference Director for the Drupal Association joins Mike Anello to introduce herself to the Drupal community as well as to provide a preview of DrupalCon Nashville as well as her thoughts on the evolution of DrupalCon Europe. Topics discussed include trivia night, the decoupled summit, rodeos, Hurricane Harvey, The Princess Bride, the DrupalCon Europe licensing bidding process, shoulder pads, and perhaps the greatest answer ever to our always challenging "exotic animal" question.

Interview DrupalEasy News Sponsors
  • Drupal Aid - Drupal support and maintenance services. Get unlimited support, monthly maintenance, and unlimited small jobs starting at $99/mo.
  • WebEnabled.com - devPanel.
Follow us on Twitter Subscribe

Subscribe to our podcast on iTunes, Google Play or Miro. Listen to our podcast on Stitcher.

If you'd like to leave us a voicemail, call 321-396-2340. Please keep in mind that we might play your voicemail during one of our future podcasts. Feel free to call in with suggestions, rants, questions, or corrections. If you'd rather just send us an email, please use our contact page.

Updating Drupal 8 core with Composer has proven to be a problematic process for many developers and has caused some to abandon the platform entirely, opting to stick with Drupal 7. Having updating our own Drupal 8 sites many times now, we've compiled some notes on how to use Composer to update core and what to do when issues arise. Continue reading…

How to update Drupal 8 core?

Let's see how to update your Drupal site between 8.x.x minor and patch versions. For example, from 8.1.2 to 8.1.3, or from 8.3.5 to 8.4.0. I hope this will help you.

  • If you are upgrading to Drupal version x.y.z

           x -> is known as the major version number

           y -> is known as the minor version number

           z -> is known as the patch version number.

Sat, 03/24/2018 - 10:31
CCBot/2.0 (http://commoncrawl.org/faq/)

آخرین ارسال ها

محتواهای محبوب

درباره ما

Author
اینجا دروپال یعنی همه چیز. در مورد دروپال صحبت میکنیم. ماژول هامون رو به اشتراک میزاریم در مورد قالب دروپال ، فروشگاه دروپال، دروپال فارسی و تاریخ شمسی دروپال صحبت میکنیم و هرچیزی که در مورد طراحی سایت با دروپال میدونیم به هم انتقال میدیم. دروپالیون یک سایت شخصی نیست. ما دست همه کسانی که برای پیشرفت دروپال تلاش میکنند رو میفشاریم و با آغوش باز اونها رو در این سایت میپذیریم.

تماس با ما

با ما تماس بگیرید.

logo-samandehi